diff options
author | William Wilgus <wilgus.william@gmail.com> | 2024-07-21 11:53:25 -0400 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2024-07-22 10:27:24 -0400 |
commit | 7720b0c4e4383670a64595bb9d199c5e2dbe6651 (patch) | |
tree | 208fafcc4bf94b5d387b6517fa244ccf56dc8a74 /apps/gui/usb_screen.c | |
parent | 2bb9323de8e4edc0a04ccf7ccf61e3026b5ef847 (diff) | |
download | rockbox-7720b0c4e4383670a64595bb9d199c5e2dbe6651.tar.gz rockbox-7720b0c4e4383670a64595bb9d199c5e2dbe6651.zip |
[Bugfix] crashes on usb unplug, extra text on USB screen, viewportmgr ovfl on sim
make _lists_uiviewport_update_callback a oneshot
and reset it each call of list_do_action_timeout()
block multiple runs of gui_usb_screen_run() in the sim
Change-Id: I0c0429c42622c82bcf481ad13efdc47e9055a1bb
Diffstat (limited to 'apps/gui/usb_screen.c')
-rw-r--r-- | apps/gui/usb_screen.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/apps/gui/usb_screen.c b/apps/gui/usb_screen.c index fb59f820b6..8a3510ea15 100644 --- a/apps/gui/usb_screen.c +++ b/apps/gui/usb_screen.c | |||
@@ -243,7 +243,13 @@ static void usb_screens_draw(struct usb_screen_vps_t *usb_screen_vps_ar) | |||
243 | 243 | ||
244 | void gui_usb_screen_run(bool early_usb) | 244 | void gui_usb_screen_run(bool early_usb) |
245 | { | 245 | { |
246 | (void) early_usb; | 246 | #ifdef SIMULATOR /* the sim allows toggling USB fast enough to overflow viewportmanagers stack */ |
247 | static bool in_usb_screen = false; | ||
248 | if (in_usb_screen) | ||
249 | return; | ||
250 | in_usb_screen = true; | ||
251 | #endif | ||
252 | |||
247 | struct usb_screen_vps_t usb_screen_vps_ar[NB_SCREENS]; | 253 | struct usb_screen_vps_t usb_screen_vps_ar[NB_SCREENS]; |
248 | #if defined HAVE_TOUCHSCREEN | 254 | #if defined HAVE_TOUCHSCREEN |
249 | enum touchscreen_mode old_mode = touchscreen_get_mode(); | 255 | enum touchscreen_mode old_mode = touchscreen_get_mode(); |
@@ -334,4 +340,7 @@ void gui_usb_screen_run(bool early_usb) | |||
334 | } | 340 | } |
335 | 341 | ||
336 | pop_current_activity(); | 342 | pop_current_activity(); |
343 | #ifdef SIMULATOR | ||
344 | in_usb_screen = false; | ||
345 | #endif | ||
337 | } | 346 | } |