diff --git a/runloop.c b/runloop.c index 5b26f401d2..4533573d50 100644 --- a/runloop.c +++ b/runloop.c @@ -993,6 +993,8 @@ static void rarch_main_cmd_get_state(driver_t *driver, RARCH_CHEAT_TOGGLE); } +unsigned menu_input_this_frame; + /** * rarch_main_iterate: * @@ -1077,16 +1079,19 @@ int rarch_main_iterate(unsigned *sleep_ms) } #ifdef HAVE_MENU + menu_input_this_frame = 0; if (menu_driver_alive()) { menu_handle_t *menu = menu_driver_get_ptr(); if (menu) - if (menu_iterate(true, menu_input_frame(input, trigger_input)) == -1) - rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); + { + menu_input_this_frame = menu_input_frame(input, trigger_input); + menu_iterate_render(); - if (!input && settings->menu.pause_libretro) - return 1; - return rarch_limit_frame_time(settings->fastforward_ratio, sleep_ms); + if (!input && settings->menu.pause_libretro) + return 1; + return rarch_limit_frame_time(settings->fastforward_ratio, sleep_ms); + } } #endif diff --git a/runloop_data.c b/runloop_data.c index bbcf683ed5..6d37fc646b 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -20,6 +20,7 @@ #include #include "general.h" +#include "retroarch.h" #include "tasks/tasks.h" #include "input/input_overlay.h" @@ -209,14 +210,16 @@ error: #endif #ifdef HAVE_MENU +extern unsigned menu_input_this_frame; + static void rarch_main_data_menu_iterate(void) { #ifdef HAVE_LIBRETRODB if (rarch_main_data_db_pending_scan_finished()) menu_environment_cb(MENU_ENVIRON_RESET_HORIZONTAL_LIST, NULL); #endif - - menu_iterate_render(); + if (menu_iterate(true, menu_input_this_frame) == -1) + rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); } #endif