1
0
Fork 0
forked from len0rd/rockbox

Fix FS#7311 '64 bit simulator crashes when using the menus in some plugins.' by resolving a naming conflict between the plugins' private settings structs and the global 'settings' struct

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14095 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Nils Wallménius 2007-07-31 10:53:53 +00:00
parent ec2d2c47a0
commit 1dc5435f8e
2 changed files with 129 additions and 125 deletions

View file

@ -188,16 +188,16 @@ struct saved_settings {
bool digital_minimeters;
int analog_decay;
int digital_decay;
} settings;
} vumeter_settings;
void reset_settings(void) {
settings.meter_type=ANALOG;
settings.analog_use_db_scale=true;
settings.digital_use_db_scale=true;
settings.analog_minimeters=true;
settings.digital_minimeters=false;
settings.analog_decay=3;
settings.digital_decay=0;
vumeter_settings.meter_type=ANALOG;
vumeter_settings.analog_use_db_scale=true;
vumeter_settings.digital_use_db_scale=true;
vumeter_settings.analog_minimeters=true;
vumeter_settings.digital_minimeters=false;
vumeter_settings.analog_decay=3;
vumeter_settings.digital_decay=0;
}
/* taken from http://www.quinapalus.com/efunc.html */
@ -305,7 +305,7 @@ void calc_scales(void)
void load_settings(void) {
int fp = rb->open("/.rockbox/rocks/.vu_meter", O_RDONLY);
if(fp>=0) {
rb->read(fp, &settings, sizeof(struct saved_settings));
rb->read(fp, &vumeter_settings, sizeof(struct saved_settings));
rb->close(fp);
}
else {
@ -321,7 +321,7 @@ void load_settings(void) {
void save_settings(void) {
int fp = rb->creat("/.rockbox/rocks/.vu_meter");
if(fp >= 0) {
rb->write (fp, &settings, sizeof(struct saved_settings));
rb->write (fp, &vumeter_settings, sizeof(struct saved_settings));
rb->close(fp);
}
}
@ -372,45 +372,45 @@ static bool vu_meter_menu(void)
switch(rb->do_menu(&menu, &selection))
{
case 0:
rb->set_option("Meter Type", &settings.meter_type, INT,
rb->set_option("Meter Type", &vumeter_settings.meter_type, INT,
meter_type_option, 2, NULL);
break;
case 1:
if(settings.meter_type==ANALOG)
if(vumeter_settings.meter_type==ANALOG)
{
rb->set_bool_options("Scale", &settings.analog_use_db_scale,
rb->set_bool_options("Scale", &vumeter_settings.analog_use_db_scale,
"dBfs", -1, "Linear", -1, NULL);
}
else
{
rb->set_bool_options("Scale", &settings.digital_use_db_scale,
rb->set_bool_options("Scale", &vumeter_settings.digital_use_db_scale,
"dBfs", -1, "Linear", -1, NULL);
}
break;
case 2:
if(settings.meter_type==ANALOG)
if(vumeter_settings.meter_type==ANALOG)
{
rb->set_bool("Enable Minimeters",
&settings.analog_minimeters);
&vumeter_settings.analog_minimeters);
}
else
{
rb->set_bool("Enable Minimeters",
&settings.digital_minimeters);
&vumeter_settings.digital_minimeters);
}
break;
case 3:
if(settings.meter_type==ANALOG)
if(vumeter_settings.meter_type==ANALOG)
{
rb->set_option("Decay Speed", &settings.analog_decay, INT,
rb->set_option("Decay Speed", &vumeter_settings.analog_decay, INT,
decay_speed_option, 7, NULL);
}
else
{
rb->set_option("Decay Speed", &settings.digital_decay, INT,
rb->set_option("Decay Speed", &vumeter_settings.digital_decay, INT,
decay_speed_option, 7, NULL);
}
break;
@ -490,7 +490,7 @@ void analog_meter(void) {
rb->pcm_calculate_peaks(&left_peak, &right_peak);
#endif
if(settings.analog_use_db_scale) {
if(vumeter_settings.analog_use_db_scale) {
left_needle_top_x = analog_db_scale[left_peak * half_width / MAX_PEAK];
right_needle_top_x = analog_db_scale[right_peak * half_width / MAX_PEAK] + half_width;
}
@ -500,8 +500,10 @@ void analog_meter(void) {
}
/* Makes a decay on the needle */
left_needle_top_x = (left_needle_top_x+last_left_needle_top_x*settings.analog_decay)/(settings.analog_decay+1);
right_needle_top_x = (right_needle_top_x+last_right_needle_top_x*settings.analog_decay)/(settings.analog_decay+1);
left_needle_top_x = (left_needle_top_x+last_left_needle_top_x*vumeter_settings.analog_decay)
/(vumeter_settings.analog_decay+1);
right_needle_top_x = (right_needle_top_x+last_right_needle_top_x*vumeter_settings.analog_decay)
/(vumeter_settings.analog_decay+1);
last_left_needle_top_x = left_needle_top_x;
last_right_needle_top_x = right_needle_top_x;
@ -513,7 +515,7 @@ void analog_meter(void) {
rb->lcd_drawline(quarter_width, LCD_HEIGHT-1, left_needle_top_x, left_needle_top_y);
rb->lcd_drawline((quarter_width+half_width), LCD_HEIGHT-1, right_needle_top_x, right_needle_top_y);
if(settings.analog_minimeters)
if(vumeter_settings.analog_minimeters)
draw_analog_minimeters();
/* Needle covers */
@ -545,7 +547,7 @@ void digital_meter(void) {
rb->pcm_calculate_peaks(&left_peak, &right_peak);
#endif
if(settings.digital_use_db_scale) {
if(vumeter_settings.digital_use_db_scale) {
num_left_leds = digital_db_scale[left_peak * 44 / MAX_PEAK];
num_right_leds = digital_db_scale[right_peak * 44 / MAX_PEAK];
}
@ -554,8 +556,10 @@ void digital_meter(void) {
num_right_leds = right_peak * 11 / MAX_PEAK;
}
num_left_leds = (num_left_leds+last_num_left_leds*settings.digital_decay)/(settings.digital_decay+1);
num_right_leds = (num_right_leds+last_num_right_leds*settings.digital_decay)/(settings.digital_decay+1);
num_left_leds = (num_left_leds+last_num_left_leds*vumeter_settings.digital_decay)
/(vumeter_settings.digital_decay+1);
num_right_leds = (num_right_leds+last_num_right_leds*vumeter_settings.digital_decay)
/(vumeter_settings.digital_decay+1);
last_num_left_leds = num_left_leds;
last_num_right_leds = num_right_leds;
@ -573,7 +577,7 @@ void digital_meter(void) {
rb->lcd_set_drawmode(DRMODE_SOLID);
if(settings.digital_minimeters)
if(vumeter_settings.digital_minimeters)
draw_digital_minimeters();
/* Lines above/below where the LEDS are */
@ -609,7 +613,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) {
rb->lcd_putsxy(half_width-23, 0, "VU Meter");
if(settings.meter_type==ANALOG)
if(vumeter_settings.meter_type==ANALOG)
analog_meter();
else
digital_meter();