summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorFrank Gevaerts <frank@gevaerts.be>2009-12-09 20:34:06 +0000
committerFrank Gevaerts <frank@gevaerts.be>2009-12-09 20:34:06 +0000
commit4862e28b679a41e8a9c95d25f94083fe4408b96c (patch)
tree43a9d861d59ff2f5afa776c538c397f55d9595c4 /apps
parentc3a908f04b578b391ecc86198368cc22a742d105 (diff)
downloadrockbox-4862e28b679a41e8a9c95d25f94083fe4408b96c.tar.gz
rockbox-4862e28b679a41e8a9c95d25f94083fe4408b96c.zip
Fix FS#10841. Thanks to Thomas Martitz for spotting what was wrong.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23914 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/gui/usb_screen.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/apps/gui/usb_screen.c b/apps/gui/usb_screen.c
index 29d88daf06..d3baa5b0ba 100644
--- a/apps/gui/usb_screen.c
+++ b/apps/gui/usb_screen.c
@@ -128,9 +128,10 @@ struct usb_screen_vps_t
128}; 128};
129 129
130#ifdef HAVE_LCD_BITMAP 130#ifdef HAVE_LCD_BITMAP
131static void usb_screen_fix_viewports(struct screen *screen, 131static bool usb_screen_fix_viewports(struct screen *screen,
132 struct usb_screen_vps_t *usb_screen_vps) 132 struct usb_screen_vps_t *usb_screen_vps)
133{ 133{
134 bool theme_needs_undo = false;
134 int logo_width, logo_height; 135 int logo_width, logo_height;
135 struct viewport *parent = &usb_screen_vps->parent; 136 struct viewport *parent = &usb_screen_vps->parent;
136 struct viewport *logo = &usb_screen_vps->logo; 137 struct viewport *logo = &usb_screen_vps->logo;
@@ -150,7 +151,10 @@ static void usb_screen_fix_viewports(struct screen *screen,
150 151
151 viewport_set_defaults(parent, screen->screen_type); 152 viewport_set_defaults(parent, screen->screen_type);
152 if (parent->width < logo_width || parent->height < logo_height) 153 if (parent->width < logo_width || parent->height < logo_height)
154 {
155 theme_needs_undo = true;
153 viewportmanager_theme_enable(screen->screen_type, false, parent); 156 viewportmanager_theme_enable(screen->screen_type, false, parent);
157 }
154 158
155 *logo = *parent; 159 *logo = *parent;
156 logo->x = parent->x + parent->width - logo_width; 160 logo->x = parent->x + parent->width - logo_width;
@@ -174,6 +178,7 @@ static void usb_screen_fix_viewports(struct screen *screen,
174 } 178 }
175 } 179 }
176#endif 180#endif
181 return theme_needs_undo;
177} 182}
178#endif 183#endif
179 184
@@ -240,6 +245,7 @@ static void usb_screens_draw(struct usb_screen_vps_t *usb_screen_vps_ar)
240void gui_usb_screen_run(void) 245void gui_usb_screen_run(void)
241{ 246{
242 int i; 247 int i;
248 bool screen_theme_needs_undo[NB_SCREENS];
243 struct usb_screen_vps_t usb_screen_vps_ar[NB_SCREENS]; 249 struct usb_screen_vps_t usb_screen_vps_ar[NB_SCREENS];
244#if defined HAVE_TOUCHSCREEN 250#if defined HAVE_TOUCHSCREEN
245 enum touchscreen_mode old_mode = touchscreen_get_mode(); 251 enum touchscreen_mode old_mode = touchscreen_get_mode();
@@ -264,7 +270,7 @@ void gui_usb_screen_run(void)
264 270
265 screen->set_viewport(NULL); 271 screen->set_viewport(NULL);
266#ifdef HAVE_LCD_BITMAP 272#ifdef HAVE_LCD_BITMAP
267 usb_screen_fix_viewports(screen, &usb_screen_vps_ar[i]); 273 screen_theme_needs_undo[i] = usb_screen_fix_viewports(screen, &usb_screen_vps_ar[i]);
268#endif 274#endif
269 } 275 }
270 276
@@ -311,7 +317,8 @@ void gui_usb_screen_run(void)
311 FOR_NB_SCREENS(i) 317 FOR_NB_SCREENS(i)
312 { 318 {
313 screens[i].backlight_on(); 319 screens[i].backlight_on();
314 viewportmanager_theme_undo(i); 320 if(screen_theme_needs_undo[i])
321 viewportmanager_theme_undo(i);
315 } 322 }
316 323
317} 324}