From c5b4482ee2468c0e40da4441ddf429c890b5a291 Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Tue, 10 Nov 2009 20:13:24 +0000 Subject: Revert r23599 and r23600 and fix the early usb problem at the root. The the viewportmanager and custom statusbar was initialized too late. Now, call it earlier and remove parts of it that caused the need to call it later. Removing that is OK since it's done again on settings loading. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23603 a1c6a512-1295-4272-9138-f99709370657 --- apps/gui/usb_screen.c | 34 +++++++++++++--------------------- apps/gui/usb_screen.h | 2 +- apps/gui/viewport.c | 5 ----- apps/main.c | 25 ++++++++++++++++--------- apps/misc.c | 2 +- 5 files changed, 31 insertions(+), 37 deletions(-) (limited to 'apps') diff --git a/apps/gui/usb_screen.c b/apps/gui/usb_screen.c index 5306b014f0..c39acad9df 100644 --- a/apps/gui/usb_screen.c +++ b/apps/gui/usb_screen.c @@ -129,7 +129,7 @@ struct usb_screen_vps_t #ifdef HAVE_LCD_BITMAP static void usb_screen_fix_viewports(struct screen *screen, - struct usb_screen_vps_t *usb_screen_vps, bool early_usb) + struct usb_screen_vps_t *usb_screen_vps) { int logo_width, logo_height; struct viewport *parent = &usb_screen_vps->parent; @@ -148,15 +148,10 @@ static void usb_screen_fix_viewports(struct screen *screen, logo_height = BMPHEIGHT_usblogo; } - if (!early_usb) - { - viewport_set_defaults(parent, screen->screen_type); - if (parent->width < logo_width || parent->height < logo_height) - viewport_set_fullscreen(parent, screen->screen_type); - } - else + viewport_set_defaults(parent, screen->screen_type); + if (parent->width < logo_width || parent->height < logo_height) viewport_set_fullscreen(parent, screen->screen_type); - + *logo = *parent; logo->x = parent->x + parent->width - logo_width; logo->y = parent->y + (parent->height - logo_height) / 2; @@ -182,7 +177,7 @@ static void usb_screen_fix_viewports(struct screen *screen, } #endif -static void usb_screens_draw(struct usb_screen_vps_t *usb_screen_vps_ar, bool early_usb) +static void usb_screens_draw(struct usb_screen_vps_t *usb_screen_vps_ar) { int i; int usb_bars = VP_SB_ALLSCREENS; /* force statusbars */ @@ -241,14 +236,13 @@ static void usb_screens_draw(struct usb_screen_vps_t *usb_screen_vps_ar, bool ea usb_bars |= VP_SB_IGNORE_SETTING(i); } - if (!early_usb) - viewportmanager_set_statusbar(usb_bars); + viewportmanager_set_statusbar(usb_bars); } -void gui_usb_screen_run(bool early_usb) +void gui_usb_screen_run(void) { int i; - int old_bars = early_usb ? 0 : viewportmanager_get_statusbar(); + int old_bars = viewportmanager_get_statusbar(); struct usb_screen_vps_t usb_screen_vps_ar[NB_SCREENS]; #if defined HAVE_TOUCHSCREEN enum touchscreen_mode old_mode = touchscreen_get_mode(); @@ -273,13 +267,13 @@ void gui_usb_screen_run(bool early_usb) screen->set_viewport(NULL); #ifdef HAVE_LCD_BITMAP - usb_screen_fix_viewports(screen, &usb_screen_vps_ar[i], early_usb); + usb_screen_fix_viewports(screen, &usb_screen_vps_ar[i]); #endif } while (1) { - usb_screens_draw(usb_screen_vps_ar, early_usb); + usb_screens_draw(usb_screen_vps_ar); #ifdef SIMULATOR if (button_get_w_tmo(HZ/2)) break; @@ -321,11 +315,9 @@ void gui_usb_screen_run(bool early_usb) { screens[i].backlight_on(); } - if (!early_usb) - { - viewportmanager_set_statusbar(old_bars); - send_event(GUI_EVENT_REFRESH, NULL); - } + viewportmanager_set_statusbar(old_bars); + send_event(GUI_EVENT_REFRESH, NULL); + } #endif /* !defined(USB_NONE) */ diff --git a/apps/gui/usb_screen.h b/apps/gui/usb_screen.h index cbf4d296a5..d601546520 100644 --- a/apps/gui/usb_screen.h +++ b/apps/gui/usb_screen.h @@ -21,7 +21,7 @@ #ifndef _USB_SCREEN_H_ #define _USB_SCREEN_H_ -extern void gui_usb_screen_run(bool early_usb); +extern void gui_usb_screen_run(void); #endif diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c index 063f59cec6..5f999df961 100644 --- a/apps/gui/viewport.c +++ b/apps/gui/viewport.c @@ -104,12 +104,7 @@ static bool showing_bars(enum screen_type screen) void viewportmanager_init(void) { #ifdef HAVE_LCD_BITMAP - int retval, i; add_event(GUI_EVENT_STATUSBAR_TOGGLE, false, statusbar_toggled); - retval = viewport_init_ui_vp(); - FOR_NB_SCREENS(i) - ui_vp_info.active[i] = retval & BIT_N(i); - ui_vp_info.vp = custom_vp; #endif viewportmanager_set_statusbar(VP_SB_ALLSCREENS); } diff --git a/apps/main.c b/apps/main.c index e5349ae4bf..145153ba37 100644 --- a/apps/main.c +++ b/apps/main.c @@ -142,7 +142,8 @@ int main(void) list_init(); #endif tree_gui_init(); - viewportmanager_init(); + /* Keep the order of this 3 + * Must be done before any code uses the multi-screen API */ #ifdef HAVE_USBSTACK /* All threads should be created and public queues registered by now */ usb_start_monitoring(); @@ -318,13 +319,16 @@ static void init(void) #ifdef DEBUG debug_init(); #endif - /* Must be done before any code uses the multi-screen API */ + /* Keep the order of this 3 (viewportmanager handles statusbars) + * Must be done before any code uses the multi-screen API */ gui_syncstatusbar_init(&statusbars); + sb_skin_init(); + viewportmanager_init(); + + gui_sync_wps_init(); storage_init(); settings_reset(); settings_load(SETTINGS_ALL); - gui_sync_wps_init(); - sb_skin_init(); settings_apply(true); init_dircache(true); init_dircache(false); @@ -443,8 +447,13 @@ static void init(void) radio_init(); #endif - /* Must be done before any code uses the multi-screen API */ + /* Keep the order of this 3 (viewportmanager handles statusbars) + * Must be done before any code uses the multi-screen API */ gui_syncstatusbar_init(&statusbars); + sb_skin_init(); + viewportmanager_init(); + + gui_sync_wps_init(); #if CONFIG_CHARGING && (CONFIG_CPU == SH7034) /* charger_inserted() can't be used here because power_thread() @@ -496,7 +505,7 @@ static void init(void) (mmc_remove_request() == SYS_HOTSWAP_EXTRACTED)) #endif { - gui_usb_screen_run(true); + gui_usb_screen_run(); mounted = true; /* mounting done @ end of USB mode */ } #ifdef HAVE_USB_POWER @@ -521,7 +530,7 @@ static void init(void) lcd_update(); while(button_get(true) != SYS_USB_CONNECTED) {}; - gui_usb_screen_run(true); + gui_usb_screen_run(); system_reboot(); } } @@ -551,8 +560,6 @@ static void init(void) #endif } - gui_sync_wps_init(); - sb_skin_init(); settings_apply(true); init_dircache(false); #ifdef HAVE_TAGCACHE diff --git a/apps/misc.c b/apps/misc.c index 9e5fb4068d..f1c38f376c 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -581,7 +581,7 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame check_bootfile(false); /* gets initial size */ #endif #endif - gui_usb_screen_run(false); + gui_usb_screen_run(); #ifdef BOOTFILE #if !defined(USB_NONE) && !defined(USB_HANDLED_BY_OF) check_bootfile(true); -- cgit v1.2.3