From d1bcd01b88c45dde077a5ba4bd66fac9d8e56fcc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 02:09:46 +0200 Subject: [PATCH] Move more video rendering code to menu_iterate.c --- menu/menu_entry.c | 3 --- menu/menu_iterate.c | 47 +++++++++++++++++++-------------------------- 2 files changed, 20 insertions(+), 30 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 62569f82be..5b32e9a2ce 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -366,9 +366,6 @@ int menu_entry_iterate(unsigned action) if (!menu_list) return -1; - if (action != MENU_ACTION_NOOP || menu_entries_needs_refresh() || menu_display_update_pending()) - menu_display_fb_set_dirty(); - menu_list_get_last_stack(menu_list, NULL, &label, NULL, NULL); return menu_iterate_main(label, action); diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index 7696c62a7e..4f5872e750 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -33,27 +33,6 @@ #include "../input/input_common.h" #include "../input/input_autodetect.h" -static void menu_driver_render_messagebox(const char *msg) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - const ui_companion_driver_t *ui = ui_companion_get_ptr(); - if (!msg) - return; - - if (driver->render_messagebox && msg[0] != '\0') - driver->render_messagebox(msg); - if (ui->render_messagebox && msg[0] != '\0') - ui->render_messagebox(msg); -} - -static void menu_driver_render(void) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (driver->render) - driver->render(); -} - static int action_iterate_help(char *s, size_t len, const char *label) { unsigned i; @@ -437,15 +416,16 @@ int menu_iterate_main(const char *label, unsigned action) { menu_entry_t entry; char msg[PATH_MAX_LENGTH] = {0}; - static bool did_messagebox = false; enum action_iterate_type iterate_type; size_t selected; size_t *pop_selected = NULL; + bool fb_is_dirty = false; bool do_messagebox = false; bool do_pop_stack = false; bool do_post_iterate = false; bool do_render = false; int ret = 0; + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); menu_display_t *disp = menu_display_get_ptr(); @@ -456,6 +436,9 @@ int menu_iterate_main(const char *label, unsigned action) iterate_type = action_iterate_type(hash); + if (action != MENU_ACTION_NOOP || menu_entries_needs_refresh() || menu_display_update_pending()) + fb_is_dirty = true; + switch (iterate_type) { case ITERATE_TYPE_HELP: @@ -523,13 +506,20 @@ int menu_iterate_main(const char *label, unsigned action) break; } - did_messagebox = did_messagebox != do_messagebox; + if (fb_is_dirty != do_messagebox) + fb_is_dirty = true; - if (did_messagebox) + if (fb_is_dirty) menu_display_fb_set_dirty(); - if (do_messagebox) - menu_driver_render_messagebox(msg); + if (do_messagebox && msg[0] != '\0') + { + const ui_companion_driver_t *ui = ui_companion_get_ptr(); + if (driver->render_messagebox && msg[0] != '\0') + driver->render_messagebox(msg); + if (ui->render_messagebox && msg[0] != '\0') + ui->render_messagebox(msg); + } if (do_pop_stack && action == MENU_ACTION_OK) menu_list_pop(menu_list->menu_stack, pop_selected); @@ -538,7 +528,10 @@ int menu_iterate_main(const char *label, unsigned action) menu_input_post_iterate(&ret, action); if (do_render) - menu_driver_render(); + { + if (driver->render) + driver->render(); + } return ret; }