diff --git a/menu/menu.c b/menu/menu.c index 28117dbbb5..ab2a20f68e 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -101,8 +101,7 @@ bool menu_load_content(enum rarch_core_type type) disp->msg_force = true; menu_iterate_main(MENU_ACTION_NOOP); - - menu_display_fb(); + menu_iterate_main_render(); if (!(main_load_content(0, NULL, NULL, menu_environment_get, driver->frontend_ctx->process_args))) @@ -362,11 +361,6 @@ int menu_iterate(retro_input_t input, ret = menu_iterate_main(action); - if (menu_driver_alive() && !rarch_main_is_idle()) - menu_display_fb(); - - menu_driver_set_texture(); - if (ret) return -1; diff --git a/menu/menu.h b/menu/menu.h index 5c314d5066..bf59bca8a6 100644 --- a/menu/menu.h +++ b/menu/menu.h @@ -179,6 +179,8 @@ int menu_iterate(retro_input_t input, int menu_iterate_main(unsigned action); +int menu_iterate_main_render(void); + /** * menu_free: * @menu : Menu handle. diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index 4e3068c31b..bbbf12135e 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -512,6 +512,23 @@ int menu_iterate_main(unsigned action) break; } + if (menu->state.do_pop_stack && action == MENU_ACTION_OK) + menu_list_pop(menu_list->menu_stack, menu->state.pop_selected); + + if (menu->state.do_post_iterate) + menu_input_post_iterate(&ret, action); + + return ret; +} + +int menu_iterate_main_render(void) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + menu_handle_t *menu = menu_driver_get_ptr(); + + if (!menu) + return -1; + if (menu->state.fb_is_dirty != menu->state.do_messagebox) menu->state.fb_is_dirty = true; @@ -526,18 +543,17 @@ int menu_iterate_main(unsigned action) if (ui->render_messagebox && menu->state.msg[0] != '\0') ui->render_messagebox(menu->state.msg); } - - if (menu->state.do_pop_stack && action == MENU_ACTION_OK) - menu_list_pop(menu_list->menu_stack, menu->state.pop_selected); - - if (menu->state.do_post_iterate) - menu_input_post_iterate(&ret, action); - + if (menu->state.do_render) { if (driver->render) driver->render(); } - return ret; + if (menu_driver_alive() && !rarch_main_is_idle()) + menu_display_fb(); + + menu_driver_set_texture(); + + return 0; } diff --git a/runloop_data.c b/runloop_data.c index f8e597c713..905cb8090f 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -214,6 +214,8 @@ static void rarch_main_data_menu_iterate(void) if (rarch_main_data_db_pending_scan_finished()) menu_environment_cb(MENU_ENVIRON_RESET_HORIZONTAL_LIST, NULL); #endif + + menu_iterate_main_render(); } #endif