diff options
author | Frank Gevaerts <frank@gevaerts.be> | 2009-12-09 20:34:06 +0000 |
---|---|---|
committer | Frank Gevaerts <frank@gevaerts.be> | 2009-12-09 20:34:06 +0000 |
commit | 4862e28b679a41e8a9c95d25f94083fe4408b96c (patch) | |
tree | 43a9d861d59ff2f5afa776c538c397f55d9595c4 /apps/gui | |
parent | c3a908f04b578b391ecc86198368cc22a742d105 (diff) | |
download | rockbox-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/gui')
-rw-r--r-- | apps/gui/usb_screen.c | 13 |
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 |
131 | static void usb_screen_fix_viewports(struct screen *screen, | 131 | static 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) | |||
240 | void gui_usb_screen_run(void) | 245 | void 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 | } |