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);