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

@ -300,30 +300,30 @@ struct saved_settings
int fullscreen[2]; int fullscreen[2];
int binary[1]; int binary[1];
int plain[4]; int plain[4];
} settings; } clock_settings;
/************************ /************************
* Setting default values * Setting default values
***********************/ ***********************/
void reset_settings(void) void reset_settings(void)
{ {
settings.clock = 1; clock_settings.clock = 1;
settings.general[general_counter] = 1; clock_settings.general[general_counter] = 1;
settings.general[general_savesetting] = 1; clock_settings.general[general_savesetting] = 1;
settings.general[general_backlight] = 2; clock_settings.general[general_backlight] = 2;
settings.analog[analog_date] = 0; clock_settings.analog[analog_date] = 0;
settings.analog[analog_secondhand] = true; clock_settings.analog[analog_secondhand] = true;
settings.analog[analog_time] = false; clock_settings.analog[analog_time] = false;
settings.digital[digital_seconds] = 1; clock_settings.digital[digital_seconds] = 1;
settings.digital[digital_date] = 1; clock_settings.digital[digital_date] = 1;
settings.digital[digital_blinkcolon] = false; clock_settings.digital[digital_blinkcolon] = false;
settings.digital[digital_format] = true; clock_settings.digital[digital_format] = true;
settings.fullscreen[fullscreen_border] = true; clock_settings.fullscreen[fullscreen_border] = true;
settings.fullscreen[fullscreen_secondhand] = true; clock_settings.fullscreen[fullscreen_secondhand] = true;
settings.plain[plain_format] = true; clock_settings.plain[plain_format] = true;
settings.plain[plain_seconds] = true; clock_settings.plain[plain_seconds] = true;
settings.plain[plain_date] = 1; clock_settings.plain[plain_date] = 1;
settings.plain[plain_blinkcolon] = false; clock_settings.plain[plain_blinkcolon] = false;
} }
/************************************************************** /**************************************************************
@ -333,7 +333,7 @@ void reset_settings(void)
void set_digital_colors(void) void set_digital_colors(void)
{ {
#ifdef HAVE_LCD_COLOR /* color LCDs.. */ #ifdef HAVE_LCD_COLOR /* color LCDs.. */
if(settings.clock == DIGITAL) if(clock_settings.clock == DIGITAL)
{ {
rb->lcd_set_foreground(LCD_WHITE); rb->lcd_set_foreground(LCD_WHITE);
rb->lcd_set_background(LCD_BLACK); rb->lcd_set_background(LCD_BLACK);
@ -344,7 +344,7 @@ void set_digital_colors(void)
rb->lcd_set_background(LCD_RGBPACK(180,200,230)); rb->lcd_set_background(LCD_RGBPACK(180,200,230));
} }
#elif LCD_DEPTH >= 2 #elif LCD_DEPTH >= 2
if(settings.clock == DIGITAL) if(clock_settings.clock == DIGITAL)
{ {
rb->lcd_set_foreground(LCD_WHITE); rb->lcd_set_foreground(LCD_WHITE);
rb->lcd_set_background(LCD_BLACK); rb->lcd_set_background(LCD_BLACK);
@ -378,7 +378,7 @@ void cleanup(void *parameter)
{ {
(void)parameter; (void)parameter;
if(settings.general[general_savesetting] == 1) if(clock_settings.general[general_savesetting] == 1)
save_settings(true); save_settings(true);
/* restore set backlight timeout */ /* restore set backlight timeout */
@ -423,7 +423,7 @@ void save_settings(bool interface)
if(fd >= 0) /* file exists, save successful */ if(fd >= 0) /* file exists, save successful */
{ {
rb->write (fd, &settings, sizeof(struct saved_settings)); rb->write (fd, &clock_settings, sizeof(struct saved_settings));
rb->close(fd); rb->close(fd);
if(interface) if(interface)
@ -472,7 +472,7 @@ void load_settings(void)
{ {
if(rb->filesize(fd) == sizeof(struct saved_settings)) /* if so, is it the right size? */ if(rb->filesize(fd) == sizeof(struct saved_settings)) /* if so, is it the right size? */
{ {
rb->read(fd, &settings, sizeof(struct saved_settings)); rb->read(fd, &clock_settings, sizeof(struct saved_settings));
rb->close(fd); rb->close(fd);
rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
@ -572,11 +572,11 @@ void init_clock(void)
load_settings(); load_settings();
/* set backlight timeout */ /* set backlight timeout */
if(settings.general[general_backlight] == 0) if(clock_settings.general[general_backlight] == 0)
rb->backlight_set_timeout(0); rb->backlight_set_timeout(0);
else if(settings.general[general_backlight] == 1) else if(clock_settings.general[general_backlight] == 1)
rb->backlight_set_timeout(rb->global_settings->backlight_timeout); rb->backlight_set_timeout(rb->global_settings->backlight_timeout);
else if(settings.general[general_backlight] == 2) else if(clock_settings.general[general_backlight] == 2)
rb->backlight_set_timeout(1); rb->backlight_set_timeout(1);
for(i=0; i<ANALOG_VALUES; i++) for(i=0; i<ANALOG_VALUES; i++)
@ -616,7 +616,7 @@ void analog_clock(int hour, int minute, int second)
rb->lcd_set_foreground(LCD_RGBPACK(100,110,125)); rb->lcd_set_foreground(LCD_RGBPACK(100,110,125));
/* second hand */ /* second hand */
if(settings.analog[analog_secondhand]) if(clock_settings.analog[analog_secondhand])
{ {
xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-2, LCD_WIDTH/2, LCD_HEIGHT/2+2, xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-2, LCD_WIDTH/2, LCD_HEIGHT/2+2,
xminute[second], yminute[second]); xminute[second], yminute[second]);
@ -640,7 +640,7 @@ void analog_clock(int hour, int minute, int second)
#endif #endif
/* second hand, if needed */ /* second hand, if needed */
if(settings.analog[analog_secondhand]) if(clock_settings.analog[analog_secondhand])
{ {
xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-1, LCD_WIDTH/2, LCD_HEIGHT/2+1, xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-1, LCD_WIDTH/2, LCD_HEIGHT/2+1,
xminute[second], yminute[second]); xminute[second], yminute[second]);
@ -690,14 +690,14 @@ void digital_clock(int hour, int minute, int second, bool colon)
/* this basically detects if we draw an AM or PM bitmap. /* this basically detects if we draw an AM or PM bitmap.
* if we don't, we center the hh:mm display. */ * if we don't, we center the hh:mm display. */
if(!settings.digital[digital_format]) if(!clock_settings.digital[digital_format])
x_ofs=DIGIT_WIDTH/2; x_ofs=DIGIT_WIDTH/2;
#if LCD_DEPTH == 1 #if LCD_DEPTH == 1
rb->lcd_fillrect(0,0,112,64); rb->lcd_fillrect(0,0,112,64);
#endif #endif
if(settings.digital[digital_format]) if(clock_settings.digital[digital_format])
{ {
/* draw the AM or PM bitmap */ /* draw the AM or PM bitmap */
if(hour<12) if(hour<12)
@ -723,7 +723,7 @@ void digital_clock(int hour, int minute, int second, bool colon)
draw_segment(minute/10, DIGIT_XOFS(6)+3*DIGIT_WIDTH+x_ofs, 0); draw_segment(minute/10, DIGIT_XOFS(6)+3*DIGIT_WIDTH+x_ofs, 0);
draw_segment(minute%10, DIGIT_XOFS(6)+4*DIGIT_WIDTH+x_ofs, 0); draw_segment(minute%10, DIGIT_XOFS(6)+4*DIGIT_WIDTH+x_ofs, 0);
if(settings.digital[digital_seconds]) if(clock_settings.digital[digital_seconds])
{ {
draw_segment(second/10, DIGIT_XOFS(2), DIGIT_HEIGHT); draw_segment(second/10, DIGIT_XOFS(2), DIGIT_HEIGHT);
draw_segment(second%10, DIGIT_XOFS(2)+DIGIT_WIDTH, DIGIT_HEIGHT); draw_segment(second%10, DIGIT_XOFS(2)+DIGIT_WIDTH, DIGIT_HEIGHT);
@ -749,7 +749,7 @@ void fullscreen_clock(int hour, int minute, int second)
rb->lcd_set_foreground(LCD_RGBPACK(100,110,125)); rb->lcd_set_foreground(LCD_RGBPACK(100,110,125));
/* second hand */ /* second hand */
if(settings.analog[analog_secondhand]) if(clock_settings.analog[analog_secondhand])
{ {
xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-2, LCD_WIDTH/2, LCD_HEIGHT/2+2, xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-2, LCD_WIDTH/2, LCD_HEIGHT/2+2,
xminute_full[second], yminute_full[second]); xminute_full[second], yminute_full[second]);
@ -773,7 +773,7 @@ void fullscreen_clock(int hour, int minute, int second)
#endif #endif
/* second hand, if needed */ /* second hand, if needed */
if(settings.analog[analog_secondhand]) if(clock_settings.analog[analog_secondhand])
{ {
xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-1, LCD_WIDTH/2, LCD_HEIGHT/2+1, xlcd_filltriangle(LCD_WIDTH/2, LCD_HEIGHT/2-1, LCD_WIDTH/2, LCD_HEIGHT/2+1,
xminute_full[second], yminute_full[second]); xminute_full[second], yminute_full[second]);
@ -833,7 +833,7 @@ void binary_clock(int hour, int minute, int second)
{ {
if(mode_var[mode] >= i) if(mode_var[mode] >= i)
{ {
if(settings.binary[binary_mode]) if(clock_settings.binary[binary_mode])
draw_digit(DOT_FILLED, xpos*DIGIT_WIDTH+DIGIT_XOFS(6), DIGIT_HEIGHT*mode+DIGIT_YOFS(3)); draw_digit(DOT_FILLED, xpos*DIGIT_WIDTH+DIGIT_XOFS(6), DIGIT_HEIGHT*mode+DIGIT_YOFS(3));
else else
draw_digit(1, xpos*DIGIT_WIDTH+DIGIT_XOFS(6), DIGIT_HEIGHT*mode+DIGIT_YOFS(3)); draw_digit(1, xpos*DIGIT_WIDTH+DIGIT_XOFS(6), DIGIT_HEIGHT*mode+DIGIT_YOFS(3));
@ -841,7 +841,7 @@ void binary_clock(int hour, int minute, int second)
} }
else else
{ {
if(settings.binary[binary_mode]) if(clock_settings.binary[binary_mode])
draw_digit(DOT_EMPTY, xpos*DIGIT_WIDTH+DIGIT_XOFS(6), DIGIT_HEIGHT*mode+DIGIT_YOFS(3)); draw_digit(DOT_EMPTY, xpos*DIGIT_WIDTH+DIGIT_XOFS(6), DIGIT_HEIGHT*mode+DIGIT_YOFS(3));
else else
draw_digit(0, xpos*DIGIT_WIDTH+DIGIT_XOFS(6), DIGIT_HEIGHT*mode+DIGIT_YOFS(3)); draw_digit(0, xpos*DIGIT_WIDTH+DIGIT_XOFS(6), DIGIT_HEIGHT*mode+DIGIT_YOFS(3));
@ -864,10 +864,10 @@ void plain_clock(int hour, int minute, int second, bool colon)
/* this basically detects if we draw an AM or PM bitmap. /* this basically detects if we draw an AM or PM bitmap.
* if we don't, we center the hh:mm display. */ * if we don't, we center the hh:mm display. */
if(!settings.plain[plain_format]) if(!clock_settings.plain[plain_format])
x_ofs=DIGIT_WIDTH/2; x_ofs=DIGIT_WIDTH/2;
if(settings.plain[plain_format]) if(clock_settings.plain[plain_format])
{ {
/* draw the AM or PM bitmap */ /* draw the AM or PM bitmap */
if(hour<12) if(hour<12)
@ -891,7 +891,7 @@ void plain_clock(int hour, int minute, int second, bool colon)
draw_digit(minute/10, DIGIT_XOFS(6)+(DIGIT_WIDTH*3)+x_ofs, 0); draw_digit(minute/10, DIGIT_XOFS(6)+(DIGIT_WIDTH*3)+x_ofs, 0);
draw_digit(minute%10, DIGIT_XOFS(6)+(DIGIT_WIDTH*4)+x_ofs, 0); draw_digit(minute%10, DIGIT_XOFS(6)+(DIGIT_WIDTH*4)+x_ofs, 0);
if(settings.plain[plain_seconds]) if(clock_settings.plain[plain_seconds])
{ {
draw_digit(second/10, DIGIT_XOFS(2), DIGIT_HEIGHT); draw_digit(second/10, DIGIT_XOFS(2), DIGIT_HEIGHT);
draw_digit(second%10, DIGIT_XOFS(2)+(DIGIT_WIDTH), DIGIT_HEIGHT); draw_digit(second%10, DIGIT_XOFS(2)+(DIGIT_WIDTH), DIGIT_HEIGHT);
@ -915,7 +915,7 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second)
char tmsec[3]; char tmsec[3];
/* american date readout */ /* american date readout */
if(settings.analog[analog_date] == 1) if(clock_settings.analog[analog_date] == 1)
rb->snprintf(moday, sizeof(moday), "%02d/%02d", month, day); rb->snprintf(moday, sizeof(moday), "%02d/%02d", month, day);
else else
rb->snprintf(moday, sizeof(moday), "%02d.%02d", day, month); rb->snprintf(moday, sizeof(moday), "%02d.%02d", day, month);
@ -924,9 +924,9 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second)
rb->snprintf(tmsec, sizeof(tmsec), "%02d", second); rb->snprintf(tmsec, sizeof(tmsec), "%02d", second);
/* Analog Extras */ /* Analog Extras */
if(settings.clock == ANALOG) if(clock_settings.clock == ANALOG)
{ {
if(settings.analog[analog_time] != 0) /* Digital readout */ if(clock_settings.analog[analog_time] != 0) /* Digital readout */
{ {
draw_smalldigit(hour/10, SMALLDIGIT_WIDTH*0, 0); draw_smalldigit(hour/10, SMALLDIGIT_WIDTH*0, 0);
draw_smalldigit(hour%10, SMALLDIGIT_WIDTH*1, 0); draw_smalldigit(hour%10, SMALLDIGIT_WIDTH*1, 0);
@ -938,7 +938,7 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second)
draw_smalldigit(second%10, SMALLDIGIT_WIDTH*2.5, SMALLDIGIT_HEIGHT); draw_smalldigit(second%10, SMALLDIGIT_WIDTH*2.5, SMALLDIGIT_HEIGHT);
/* AM/PM indicator */ /* AM/PM indicator */
if(settings.analog[analog_time] == 2) if(clock_settings.analog[analog_time] == 2)
{ {
if(current_time->tm_hour > 12) /* PM */ if(current_time->tm_hour > 12) /* PM */
draw_digit(ICON_PM, LCD_WIDTH-DIGIT_WIDTH, DIGIT_HEIGHT/2-DIGIT_HEIGHT); draw_digit(ICON_PM, LCD_WIDTH-DIGIT_WIDTH, DIGIT_HEIGHT/2-DIGIT_HEIGHT);
@ -946,9 +946,9 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second)
draw_digit(ICON_AM, LCD_WIDTH-DIGIT_WIDTH, DIGIT_HEIGHT/2-DIGIT_HEIGHT); draw_digit(ICON_AM, LCD_WIDTH-DIGIT_WIDTH, DIGIT_HEIGHT/2-DIGIT_HEIGHT);
} }
} }
if(settings.analog[analog_date] != 0) /* Date readout */ if(clock_settings.analog[analog_date] != 0) /* Date readout */
{ {
if(settings.analog[analog_date] == 1) if(clock_settings.analog[analog_date] == 1)
{ {
draw_smalldigit(month/10, SMALLDIGIT_WIDTH*0, draw_smalldigit(month/10, SMALLDIGIT_WIDTH*0,
LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); LCD_HEIGHT-SMALLDIGIT_HEIGHT*2);
@ -969,7 +969,7 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second)
draw_smalldigit(year%10, SMALLDIGIT_WIDTH*3.5, draw_smalldigit(year%10, SMALLDIGIT_WIDTH*3.5,
LCD_HEIGHT-SMALLDIGIT_HEIGHT); LCD_HEIGHT-SMALLDIGIT_HEIGHT);
} }
else if(settings.analog[analog_date] == 2) else if(clock_settings.analog[analog_date] == 2)
{ {
draw_smalldigit(day/10, SMALLDIGIT_WIDTH*0, draw_smalldigit(day/10, SMALLDIGIT_WIDTH*0,
@ -993,10 +993,10 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second)
} }
} }
} }
else if(settings.clock == DIGITAL) else if(clock_settings.clock == DIGITAL)
{ {
/* Date readout */ /* Date readout */
if(settings.digital[digital_date] == 1) /* american mode */ if(clock_settings.digital[digital_date] == 1) /* american mode */
{ {
draw_smallsegment(month/10, SMALLSEG_WIDTH*0+SMALLSEG_XOFS(10), draw_smallsegment(month/10, SMALLSEG_WIDTH*0+SMALLSEG_XOFS(10),
LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2);
@ -1019,7 +1019,7 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second)
draw_smallsegment(year%10, SMALLSEG_WIDTH*9+SMALLSEG_XOFS(10), draw_smallsegment(year%10, SMALLSEG_WIDTH*9+SMALLSEG_XOFS(10),
LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2);
} }
else if(settings.digital[digital_date] == 2) /* european mode */ else if(clock_settings.digital[digital_date] == 2) /* european mode */
{ {
draw_smallsegment(day/10, SMALLSEG_WIDTH*0+SMALLSEG_XOFS(10), draw_smallsegment(day/10, SMALLSEG_WIDTH*0+SMALLSEG_XOFS(10),
LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2);
@ -1043,18 +1043,18 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second)
LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2); LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET*2);
} }
} }
else if(settings.clock == FULLSCREEN) /* Fullscreen mode */ else if(clock_settings.clock == FULLSCREEN) /* Fullscreen mode */
{ {
if(settings.fullscreen[fullscreen_border]) if(clock_settings.fullscreen[fullscreen_border])
{ {
for(i=0; i < 60; i+=5) /* Draw the circle */ for(i=0; i < 60; i+=5) /* Draw the circle */
rb->lcd_fillrect(xminute_full[i]-1, yminute_full[i]-1, 3, 3); rb->lcd_fillrect(xminute_full[i]-1, yminute_full[i]-1, 3, 3);
} }
} }
else if(settings.clock == PLAIN) /* Plain mode */ else if(clock_settings.clock == PLAIN) /* Plain mode */
{ {
/* Date readout */ /* Date readout */
if(settings.plain[plain_date] == 1) /* american mode */ if(clock_settings.plain[plain_date] == 1) /* american mode */
{ {
draw_smalldigit(month/10, SMALLDIGIT_WIDTH*0+SMALLDIGIT_XOFS(10), draw_smalldigit(month/10, SMALLDIGIT_WIDTH*0+SMALLDIGIT_XOFS(10),
LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2);
@ -1077,7 +1077,7 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second)
draw_smalldigit(year%10, SMALLDIGIT_WIDTH*9+SMALLDIGIT_XOFS(10), draw_smalldigit(year%10, SMALLDIGIT_WIDTH*9+SMALLDIGIT_XOFS(10),
LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2);
} }
else if(settings.plain[plain_date] == 2) /* european mode */ else if(clock_settings.plain[plain_date] == 2) /* european mode */
{ {
draw_smalldigit(day/10, SMALLDIGIT_WIDTH*0+SMALLDIGIT_XOFS(10), draw_smalldigit(day/10, SMALLDIGIT_WIDTH*0+SMALLDIGIT_XOFS(10),
LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2); LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET*2);
@ -1123,9 +1123,9 @@ void show_counter(void)
count_m = displayed_value % 3600 / 60; count_m = displayed_value % 3600 / 60;
count_h = displayed_value / 3600; count_h = displayed_value / 3600;
if(settings.general[general_counter]) if(clock_settings.general[general_counter])
{ {
if(settings.clock == ANALOG) if(clock_settings.clock == ANALOG)
{ {
draw_smalldigit(count_h/10, LCD_WIDTH-SMALLDIGIT_WIDTH*5, draw_smalldigit(count_h/10, LCD_WIDTH-SMALLDIGIT_WIDTH*5,
LCD_HEIGHT-SMALLDIGIT_HEIGHT*2); LCD_HEIGHT-SMALLDIGIT_HEIGHT*2);
@ -1142,7 +1142,7 @@ void show_counter(void)
draw_smalldigit(count_s%10, LCD_WIDTH-SMALLDIGIT_WIDTH*2.5, draw_smalldigit(count_s%10, LCD_WIDTH-SMALLDIGIT_WIDTH*2.5,
LCD_HEIGHT-SMALLDIGIT_HEIGHT); LCD_HEIGHT-SMALLDIGIT_HEIGHT);
} }
else if(settings.clock == DIGITAL) else if(clock_settings.clock == DIGITAL)
{ {
draw_smallsegment(count_h/10, SMALLSEG_WIDTH*0+SMALLSEG_XOFS(8), draw_smallsegment(count_h/10, SMALLSEG_WIDTH*0+SMALLSEG_XOFS(8),
LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET); LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET);
@ -1161,7 +1161,7 @@ void show_counter(void)
draw_smallsegment(count_s%10, SMALLSEG_WIDTH*7+SMALLSEG_XOFS(8), draw_smallsegment(count_s%10, SMALLSEG_WIDTH*7+SMALLSEG_XOFS(8),
LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET); LCD_HEIGHT-SMALLSEG_HEIGHT*LCD_OFFSET);
} }
else if(settings.clock == FULLSCREEN) else if(clock_settings.clock == FULLSCREEN)
{ {
draw_smalldigit(count_h/10, SMALLDIGIT_WIDTH*0+SMALLDIGIT_XOFS(8), draw_smalldigit(count_h/10, SMALLDIGIT_WIDTH*0+SMALLDIGIT_XOFS(8),
@ -1181,7 +1181,7 @@ void show_counter(void)
draw_smalldigit(count_s%10, SMALLDIGIT_WIDTH*7+SMALLDIGIT_XOFS(8), draw_smalldigit(count_s%10, SMALLDIGIT_WIDTH*7+SMALLDIGIT_XOFS(8),
LCD_HEIGHT-SMALLDIGIT_HEIGHT*1.5); LCD_HEIGHT-SMALLDIGIT_HEIGHT*1.5);
} }
else if(settings.clock == PLAIN) else if(clock_settings.clock == PLAIN)
{ {
draw_smalldigit(count_h/10, SMALLDIGIT_WIDTH*0+SMALLDIGIT_XOFS(8), draw_smalldigit(count_h/10, SMALLDIGIT_WIDTH*0+SMALLDIGIT_XOFS(8),
LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET); LCD_HEIGHT-SMALLDIGIT_HEIGHT*LCD_OFFSET);
@ -1210,7 +1210,7 @@ void show_counter(void)
**************/ **************/
bool menu_mode_selector(void) bool menu_mode_selector(void)
{ {
int selection=settings.clock-1; int selection=clock_settings.clock-1;
set_standard_colors(); set_standard_colors();
@ -1220,7 +1220,7 @@ bool menu_mode_selector(void)
/* check for this, so if the user exits the menu without /* check for this, so if the user exits the menu without
* making a selection, it won't change to some weird value. */ * making a selection, it won't change to some weird value. */
if(rb->do_menu(&menu, &selection) >=0){ if(rb->do_menu(&menu, &selection) >=0){
settings.clock = selection+1; clock_settings.clock = selection+1;
return(true); return(true);
} }
return(false); return(false);
@ -1242,15 +1242,15 @@ void menu_analog_settings(void)
switch(result) switch(result)
{ {
case 0: case 0:
rb->set_option("Show Date", &settings.analog[analog_date], rb->set_option("Show Date", &clock_settings.analog[analog_date],
INT, date_format_text, 3, NULL); INT, date_format_text, 3, NULL);
break; break;
case 1: case 1:
rb->set_option("Show Second Hand", &settings.analog[analog_secondhand], rb->set_option("Show Second Hand", &clock_settings.analog[analog_secondhand],
INT, noyes_text, 2, NULL); INT, noyes_text, 2, NULL);
break; break;
case 2: case 2:
rb->set_option("Show Time", &settings.analog[analog_time], rb->set_option("Show Time", &clock_settings.analog[analog_time],
INT, analog_time_text, 3, NULL); INT, analog_time_text, 3, NULL);
break; break;
} }
@ -1273,19 +1273,19 @@ void menu_digital_settings(void)
switch(result) switch(result)
{ {
case 0: case 0:
rb->set_option("Show Date", &settings.digital[digital_date], rb->set_option("Show Date", &clock_settings.digital[digital_date],
INT, date_format_text, 3, NULL); INT, date_format_text, 3, NULL);
break; break;
case 1: case 1:
rb->set_option("Show Seconds", &settings.digital[digital_seconds], rb->set_option("Show Seconds", &clock_settings.digital[digital_seconds],
INT, noyes_text, 2, NULL); INT, noyes_text, 2, NULL);
break; break;
case 2: case 2:
rb->set_option("Blinking Colon", &settings.digital[digital_blinkcolon], rb->set_option("Blinking Colon", &clock_settings.digital[digital_blinkcolon],
INT, noyes_text, 2, NULL); INT, noyes_text, 2, NULL);
break; break;
case 3: case 3:
rb->set_option("Time Format", &settings.digital[digital_format], rb->set_option("Time Format", &clock_settings.digital[digital_format],
INT, time_format_text, 2, NULL); INT, time_format_text, 2, NULL);
break; break;
} }
@ -1308,11 +1308,11 @@ void menu_fullscreen_settings(void)
switch(result) switch(result)
{ {
case 0: case 0:
rb->set_option("Show Border", &settings.fullscreen[fullscreen_border], rb->set_option("Show Border", &clock_settings.fullscreen[fullscreen_border],
INT, noyes_text, 2, NULL); INT, noyes_text, 2, NULL);
break; break;
case 1: case 1:
rb->set_option("Show Second Hand", &settings.fullscreen[fullscreen_secondhand], rb->set_option("Show Second Hand", &clock_settings.fullscreen[fullscreen_secondhand],
INT, noyes_text, 2, NULL); INT, noyes_text, 2, NULL);
break; break;
} }
@ -1334,7 +1334,7 @@ void menu_binary_settings(void)
switch(result) switch(result)
{ {
case 0: case 0:
rb->set_option("Display Mode", &settings.binary[binary_mode], rb->set_option("Display Mode", &clock_settings.binary[binary_mode],
INT, binary_mode_text, 2, NULL); INT, binary_mode_text, 2, NULL);
} }
@ -1357,19 +1357,19 @@ void menu_plain_settings(void)
switch(result) switch(result)
{ {
case 0: case 0:
rb->set_option("Show Date", &settings.plain[plain_date], rb->set_option("Show Date", &clock_settings.plain[plain_date],
INT, date_format_text, 3, NULL); INT, date_format_text, 3, NULL);
break; break;
case 1: case 1:
rb->set_option("Show Seconds", &settings.plain[plain_seconds], rb->set_option("Show Seconds", &clock_settings.plain[plain_seconds],
INT, noyes_text, 2, NULL); INT, noyes_text, 2, NULL);
break; break;
case 2: case 2:
rb->set_option("Blinking Colon", &settings.plain[plain_blinkcolon], rb->set_option("Blinking Colon", &clock_settings.plain[plain_blinkcolon],
INT, noyes_text, 2, NULL); INT, noyes_text, 2, NULL);
break; break;
case 3: case 3:
rb->set_option("Time Format", &settings.plain[plain_format], rb->set_option("Time Format", &clock_settings.plain[plain_format],
INT, time_format_text, 2, NULL); INT, time_format_text, 2, NULL);
break; break;
} }
@ -1420,21 +1420,21 @@ void menu_general_settings(void)
break; break;
case 2: case 2:
rb->set_option("Save On Exit", &settings.general[general_savesetting], rb->set_option("Save On Exit", &clock_settings.general[general_savesetting],
INT, noyes_text, 2, NULL); INT, noyes_text, 2, NULL);
/* if we no longer save on exit, we better save now to remember that */ /* if we no longer save on exit, we better save now to remember that */
if(settings.general[general_savesetting] == 0) if(clock_settings.general[general_savesetting] == 0)
save_settings(false); save_settings(false);
break; break;
case 3: case 3:
rb->set_option("Show Counter", &settings.general[general_counter], rb->set_option("Show Counter", &clock_settings.general[general_counter],
INT, noyes_text, 2, NULL); INT, noyes_text, 2, NULL);
break; break;
case 4: case 4:
rb->set_option("Backlight Settings", &settings.general[general_backlight], rb->set_option("Backlight Settings", &clock_settings.general[general_backlight],
INT, backlight_settings_text, 3, NULL); INT, backlight_settings_text, 3, NULL);
break; break;
@ -1474,7 +1474,7 @@ void main_menu(void)
break; break;
case 2: case 2:
switch(settings.clock) switch(clock_settings.clock)
{ {
case ANALOG: menu_analog_settings();break; case ANALOG: menu_analog_settings();break;
case DIGITAL: menu_digital_settings();break; case DIGITAL: menu_digital_settings();break;
@ -1557,26 +1557,26 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
rb->lcd_clear_display(); rb->lcd_clear_display();
/* Analog mode */ /* Analog mode */
if(settings.clock == ANALOG) if(clock_settings.clock == ANALOG)
analog_clock(hour, minute, second); analog_clock(hour, minute, second);
/* Digital mode */ /* Digital mode */
else if(settings.clock == DIGITAL) else if(clock_settings.clock == DIGITAL)
{ {
if(settings.digital[digital_blinkcolon]) if(clock_settings.digital[digital_blinkcolon])
digital_clock(hour, minute, second, second & 1); digital_clock(hour, minute, second, second & 1);
else else
digital_clock(hour, minute, second, true); digital_clock(hour, minute, second, true);
} }
/* Fullscreen mode */ /* Fullscreen mode */
else if(settings.clock == FULLSCREEN) else if(clock_settings.clock == FULLSCREEN)
fullscreen_clock(hour, minute, second); fullscreen_clock(hour, minute, second);
/* Binary mode */ /* Binary mode */
else if(settings.clock == BINARY) else if(clock_settings.clock == BINARY)
binary_clock(hour, minute, second); binary_clock(hour, minute, second);
/* Plain mode */ /* Plain mode */
else if(settings.clock == PLAIN) else if(clock_settings.clock == PLAIN)
{ {
if(settings.plain[plain_blinkcolon]) if(clock_settings.plain[plain_blinkcolon])
plain_clock(hour, minute, second, second & 1); plain_clock(hour, minute, second, second & 1);
else else
plain_clock(hour, minute, second, true); plain_clock(hour, minute, second, true);
@ -1586,9 +1586,9 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
show_counter(); show_counter();
} }
if(settings.analog[analog_time] == 2 && temphour == 0) if(clock_settings.analog[analog_time] == 2 && temphour == 0)
temphour = 12; temphour = 12;
if(settings.analog[analog_time] == 2 && temphour > 12) if(clock_settings.analog[analog_time] == 2 && temphour > 12)
temphour -= 12; temphour -= 12;
/* all the "extras" - readouts/displays */ /* all the "extras" - readouts/displays */
@ -1606,7 +1606,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
switch (button) switch (button)
{ {
case ACTION_COUNTER_TOGGLE: /* start/stop counter */ case ACTION_COUNTER_TOGGLE: /* start/stop counter */
if(settings.general[general_counter]) if(clock_settings.general[general_counter])
{ {
if(!counter_btn_held) /* Ignore if the counter was reset */ if(!counter_btn_held) /* Ignore if the counter was reset */
{ {
@ -1626,7 +1626,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
break; break;
case ACTION_COUNTER_RESET: /* reset counter */ case ACTION_COUNTER_RESET: /* reset counter */
if(settings.general[general_counter]) if(clock_settings.general[general_counter])
{ {
counter_btn_held = true; /* Ignore the release event */ counter_btn_held = true; /* Ignore the release event */
counter = 0; counter = 0;
@ -1635,19 +1635,19 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
break; break;
case ACTION_MODE_NEXT: case ACTION_MODE_NEXT:
if(settings.clock < CLOCK_MODES) if(clock_settings.clock < CLOCK_MODES)
settings.clock++; clock_settings.clock++;
else else
settings.clock = 1; clock_settings.clock = 1;
set_digital_colors(); set_digital_colors();
break; break;
case ACTION_MODE_PREV: case ACTION_MODE_PREV:
if(settings.clock > 1) if(clock_settings.clock > 1)
settings.clock--; clock_settings.clock--;
else else
settings.clock = CLOCK_MODES; clock_settings.clock = CLOCK_MODES;
set_digital_colors(); set_digital_colors();
break; break;

View file

@ -188,16 +188,16 @@ struct saved_settings {
bool digital_minimeters; bool digital_minimeters;
int analog_decay; int analog_decay;
int digital_decay; int digital_decay;
} settings; } vumeter_settings;
void reset_settings(void) { void reset_settings(void) {
settings.meter_type=ANALOG; vumeter_settings.meter_type=ANALOG;
settings.analog_use_db_scale=true; vumeter_settings.analog_use_db_scale=true;
settings.digital_use_db_scale=true; vumeter_settings.digital_use_db_scale=true;
settings.analog_minimeters=true; vumeter_settings.analog_minimeters=true;
settings.digital_minimeters=false; vumeter_settings.digital_minimeters=false;
settings.analog_decay=3; vumeter_settings.analog_decay=3;
settings.digital_decay=0; vumeter_settings.digital_decay=0;
} }
/* taken from http://www.quinapalus.com/efunc.html */ /* taken from http://www.quinapalus.com/efunc.html */
@ -305,7 +305,7 @@ void calc_scales(void)
void load_settings(void) { void load_settings(void) {
int fp = rb->open("/.rockbox/rocks/.vu_meter", O_RDONLY); int fp = rb->open("/.rockbox/rocks/.vu_meter", O_RDONLY);
if(fp>=0) { if(fp>=0) {
rb->read(fp, &settings, sizeof(struct saved_settings)); rb->read(fp, &vumeter_settings, sizeof(struct saved_settings));
rb->close(fp); rb->close(fp);
} }
else { else {
@ -321,7 +321,7 @@ void load_settings(void) {
void save_settings(void) { void save_settings(void) {
int fp = rb->creat("/.rockbox/rocks/.vu_meter"); int fp = rb->creat("/.rockbox/rocks/.vu_meter");
if(fp >= 0) { if(fp >= 0) {
rb->write (fp, &settings, sizeof(struct saved_settings)); rb->write (fp, &vumeter_settings, sizeof(struct saved_settings));
rb->close(fp); rb->close(fp);
} }
} }
@ -372,45 +372,45 @@ static bool vu_meter_menu(void)
switch(rb->do_menu(&menu, &selection)) switch(rb->do_menu(&menu, &selection))
{ {
case 0: 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); meter_type_option, 2, NULL);
break; break;
case 1: 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); "dBfs", -1, "Linear", -1, NULL);
} }
else 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); "dBfs", -1, "Linear", -1, NULL);
} }
break; break;
case 2: case 2:
if(settings.meter_type==ANALOG) if(vumeter_settings.meter_type==ANALOG)
{ {
rb->set_bool("Enable Minimeters", rb->set_bool("Enable Minimeters",
&settings.analog_minimeters); &vumeter_settings.analog_minimeters);
} }
else else
{ {
rb->set_bool("Enable Minimeters", rb->set_bool("Enable Minimeters",
&settings.digital_minimeters); &vumeter_settings.digital_minimeters);
} }
break; break;
case 3: 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); decay_speed_option, 7, NULL);
} }
else 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); decay_speed_option, 7, NULL);
} }
break; break;
@ -490,7 +490,7 @@ void analog_meter(void) {
rb->pcm_calculate_peaks(&left_peak, &right_peak); rb->pcm_calculate_peaks(&left_peak, &right_peak);
#endif #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]; 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; 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 */ /* 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); left_needle_top_x = (left_needle_top_x+last_left_needle_top_x*vumeter_settings.analog_decay)
right_needle_top_x = (right_needle_top_x+last_right_needle_top_x*settings.analog_decay)/(settings.analog_decay+1); /(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_left_needle_top_x = left_needle_top_x;
last_right_needle_top_x = right_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, 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); 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(); draw_analog_minimeters();
/* Needle covers */ /* Needle covers */
@ -545,7 +547,7 @@ void digital_meter(void) {
rb->pcm_calculate_peaks(&left_peak, &right_peak); rb->pcm_calculate_peaks(&left_peak, &right_peak);
#endif #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_left_leds = digital_db_scale[left_peak * 44 / MAX_PEAK];
num_right_leds = digital_db_scale[right_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_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_left_leds = (num_left_leds+last_num_left_leds*vumeter_settings.digital_decay)
num_right_leds = (num_right_leds+last_num_right_leds*settings.digital_decay)/(settings.digital_decay+1); /(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_left_leds = num_left_leds;
last_num_right_leds = num_right_leds; last_num_right_leds = num_right_leds;
@ -573,7 +577,7 @@ void digital_meter(void) {
rb->lcd_set_drawmode(DRMODE_SOLID); rb->lcd_set_drawmode(DRMODE_SOLID);
if(settings.digital_minimeters) if(vumeter_settings.digital_minimeters)
draw_digital_minimeters(); draw_digital_minimeters();
/* Lines above/below where the LEDS are */ /* 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"); rb->lcd_putsxy(half_width-23, 0, "VU Meter");
if(settings.meter_type==ANALOG) if(vumeter_settings.meter_type==ANALOG)
analog_meter(); analog_meter();
else else
digital_meter(); digital_meter();