diff options
author | Christian Soffke <christian.soffke@gmail.com> | 2022-12-05 20:05:15 +0100 |
---|---|---|
committer | Christian Soffke <christian.soffke@gmail.com> | 2022-12-08 00:38:59 -0500 |
commit | 66a411a1ba6d3668b002760ce2d26bca42db894f (patch) | |
tree | 6af403e9a03c3785f805be1d2600a806ceb61bae /apps/menu.c | |
parent | a9a284c1a09f960a307d5eb9bcb9f4e92a1e7747 (diff) | |
download | rockbox-66a411a1ba6d3668b002760ce2d26bca42db894f.tar.gz rockbox-66a411a1ba6d3668b002760ce2d26bca42db894f.zip |
Tree / Playlist Viewer / Menu: Fix redraw issues
1) Tree_lists was only initialized when booting the player.
In cases where a skin used custom UI viewports of
different sizes, when switching between screens, such as
between root menu, QuickScreen, and tree browser, this
caused list titles to appear with a significant delay,
unless a GUI_EVENT_ACTIONUPDATE was sent.
Tree_lists is now initialized when entering dirbrowse
or when restoring/reloading the list.
This eliminates multiple redundant UI refreshes when
entering the tree browser, due to gui_synclist_draw not
being called twice anymore and by being able to omit
GUI_EVENT_ACTIONUPDATE.
Separate calls to gui_synclist_init_display_settings
have become unnecessary since it is already called
by gui_synclist_init.
2) The synclist is also re-initialized when returning
from the QuickScreen in the Playlist Viewer or
regular menus, or when returning from Settings
menus
Change-Id: I2884249eda55f782e97abad9dc19b3d9d1267fc9
Diffstat (limited to 'apps/menu.c')
-rw-r--r-- | apps/menu.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/apps/menu.c b/apps/menu.c index eb3adcc037..48eea70454 100644 --- a/apps/menu.c +++ b/apps/menu.c | |||
@@ -466,6 +466,8 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected, | |||
466 | done = true; | 466 | done = true; |
467 | } | 467 | } |
468 | } | 468 | } |
469 | if (!done) | ||
470 | init_menu_lists(menu, &lists, lists.selected_item, false, vps); | ||
469 | redraw_lists = true; | 471 | redraw_lists = true; |
470 | } | 472 | } |
471 | #endif | 473 | #endif |
@@ -670,7 +672,9 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected, | |||
670 | case MT_SETTING_W_TEXT: | 672 | case MT_SETTING_W_TEXT: |
671 | { | 673 | { |
672 | do_setting_from_menu(temp, vps); | 674 | do_setting_from_menu(temp, vps); |
673 | send_event(GUI_EVENT_ACTIONUPDATE, (void*)1); /* force a redraw */ | 675 | init_menu_lists(menu, &lists, selected, false, vps); |
676 | redraw_lists = true; | ||
677 | |||
674 | break; | 678 | break; |
675 | } | 679 | } |
676 | case MT_RETURN_ID: | 680 | case MT_RETURN_ID: |