summaryrefslogtreecommitdiff
path: root/apps/menu.c
diff options
context:
space:
mode:
authorChristian Soffke <christian.soffke@gmail.com>2022-12-05 20:05:15 +0100
committerChristian Soffke <christian.soffke@gmail.com>2022-12-08 00:38:59 -0500
commit66a411a1ba6d3668b002760ce2d26bca42db894f (patch)
tree6af403e9a03c3785f805be1d2600a806ceb61bae /apps/menu.c
parenta9a284c1a09f960a307d5eb9bcb9f4e92a1e7747 (diff)
downloadrockbox-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.c6
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: