1
0
Fork 0
forked from len0rd/rockbox

Apply changes to scroll_delay, scroll_speed and scroll_step settings across all screens when changing them in the settings menu. Fixes bug #5348.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9965 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dave Chapman 2006-05-20 11:34:35 +00:00
parent d49b112fd8
commit 1c9dacd600
3 changed files with 38 additions and 5 deletions

View file

@ -147,8 +147,6 @@ void screen_init(struct screen * screen, enum screen_type screen_type)
screen->drawline=&lcd_drawline; screen->drawline=&lcd_drawline;
screen->vline=&lcd_vline; screen->vline=&lcd_vline;
screen->hline=&lcd_hline; screen->hline=&lcd_hline;
screen->scroll_speed=&lcd_scroll_speed;
screen->scroll_delay=&lcd_scroll_delay;
screen->scroll_step=&lcd_scroll_step; screen->scroll_step=&lcd_scroll_step;
screen->invertscroll=&lcd_invertscroll; screen->invertscroll=&lcd_invertscroll;
screen->puts_offset=&lcd_puts_offset; screen->puts_offset=&lcd_puts_offset;
@ -175,6 +173,8 @@ void screen_init(struct screen * screen, enum screen_type screen_type)
screen->init=&lcd_init; screen->init=&lcd_init;
screen->puts_scroll=&lcd_puts_scroll; screen->puts_scroll=&lcd_puts_scroll;
screen->stop_scroll=&lcd_stop_scroll; screen->stop_scroll=&lcd_stop_scroll;
screen->scroll_speed=&lcd_scroll_speed;
screen->scroll_delay=&lcd_scroll_delay;
screen->clear_display=&lcd_clear_display; screen->clear_display=&lcd_clear_display;
#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) #if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR)
screen->update=&lcd_update; screen->update=&lcd_update;
@ -207,3 +207,26 @@ void screen_access_init(void)
FOR_NB_SCREENS(i) FOR_NB_SCREENS(i)
screen_init(&screens[i], i); screen_init(&screens[i], i);
} }
void screen_lcd_scroll_speed(int speed)
{
int i;
FOR_NB_SCREENS(i)
screens[i].scroll_speed(speed);
}
void screen_lcd_scroll_delay(int ms)
{
int i;
FOR_NB_SCREENS(i)
screens[i].scroll_delay(ms);
}
#ifdef HAVE_LCD_BITMAP
void screen_lcd_scroll_step(int pixels)
{
int i;
FOR_NB_SCREENS(i)
screens[i].scroll_step(pixels);
}
#endif

View file

@ -185,4 +185,13 @@ extern void screen_access_init(void);
*/ */
extern struct screen screens[NB_SCREENS]; extern struct screen screens[NB_SCREENS];
/*
* Functions to apply LCD settings across all screens
*/
void screen_lcd_scroll_speed(int speed);
void screen_lcd_scroll_delay(int ms);
void screen_lcd_scroll_step(int pixels);
#endif /*_SCREEN_ACCESS_H_*/ #endif /*_SCREEN_ACCESS_H_*/

View file

@ -55,6 +55,7 @@
#include "yesno.h" #include "yesno.h"
#include "list.h" #include "list.h"
#include "color_picker.h" #include "color_picker.h"
#include "screen_access.h"
#ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_BITMAP
#include "peakmeter.h" #include "peakmeter.h"
@ -837,7 +838,7 @@ static bool scroll_speed(void)
{ {
return set_int(str(LANG_SCROLL), "", UNIT_INT, return set_int(str(LANG_SCROLL), "", UNIT_INT,
&global_settings.scroll_speed, &global_settings.scroll_speed,
&lcd_scroll_speed, 1, 0, 15, NULL ); &screen_lcd_scroll_speed, 1, 0, 15, NULL );
} }
static bool scroll_delay(void) static bool scroll_delay(void)
@ -845,7 +846,7 @@ static bool scroll_delay(void)
int dummy = global_settings.scroll_delay * (HZ/10); int dummy = global_settings.scroll_delay * (HZ/10);
int rc = set_int(str(LANG_SCROLL_DELAY), "ms", UNIT_MS, int rc = set_int(str(LANG_SCROLL_DELAY), "ms", UNIT_MS,
&dummy, &dummy,
&lcd_scroll_delay, 100, 0, 2500, NULL ); &screen_lcd_scroll_delay, 100, 0, 2500, NULL );
global_settings.scroll_delay = dummy / (HZ/10); global_settings.scroll_delay = dummy / (HZ/10);
return rc; return rc;
} }
@ -869,7 +870,7 @@ static bool scroll_step(void)
{ {
return set_int(str(LANG_SCROLL_STEP_EXAMPLE), str(LANG_PIXELS), UNIT_PIXEL, return set_int(str(LANG_SCROLL_STEP_EXAMPLE), str(LANG_PIXELS), UNIT_PIXEL,
&global_settings.scroll_step, &global_settings.scroll_step,
&lcd_scroll_step, 1, 1, LCD_WIDTH, NULL ); &screen_lcd_scroll_step, 1, 1, LCD_WIDTH, NULL );
} }
#endif #endif