diff --git a/console/rarch_console.h b/console/rarch_console.h index 27e2974eb3..5d56683f7d 100644 --- a/console/rarch_console.h +++ b/console/rarch_console.h @@ -72,6 +72,7 @@ enum MODE_LOAD_GAME, MODE_INIT, MODE_MENU, + MODE_MENU_PREINIT, MODE_EXIT, MODE_LOAD_FIRST_SHADER, MODE_LOAD_SECOND_SHADER, diff --git a/frontend/frontend_console.c b/frontend/frontend_console.c index f52d15c1d4..ebd2cd4a9e 100644 --- a/frontend/frontend_console.c +++ b/frontend/frontend_console.c @@ -305,7 +305,10 @@ begin_loop: } } else if(g_extern.lifecycle_menu_state & (1 << MODE_MENU)) + { + g_extern.lifecycle_menu_state |= (1 << MODE_MENU_PREINIT); while(rmenu_iterate()); + } else goto begin_shutdown; diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index 8208f5aeb0..cdf7af80ed 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -2413,13 +2413,12 @@ void menu_free(void) bool rmenu_iterate(void) { - static bool preinit = true; const char *msg; DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; menu current_menu; - if(preinit) + if (g_extern.lifecycle_menu_state & (1 << MODE_MENU_PREINIT)) { if(g_extern.console.rmenu.state.ingame_menu.enable) menu_stack_push(INGAME_MENU); @@ -2429,7 +2428,7 @@ bool rmenu_iterate(void) device_ptr->ctx_driver->rmenu_init(); - preinit = false; + g_extern.lifecycle_menu_state &= ~(1 << MODE_MENU_PREINIT); } g_extern.frame_count++; @@ -2512,7 +2511,5 @@ deinit: device_ptr->ctx_driver->rmenu_free(); - preinit = true; - return false; } diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index 0608c4d076..be905b89f1 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -1164,16 +1164,16 @@ static void ingame_menu_resize (void) bool rmenu_iterate(void) { - static bool preinit = true; const char *msg; xdk_d3d_video_t *device_ptr = (xdk_d3d_video_t*)driver.video_data; - if(preinit) + if (g_extern.lifecycle_menu_state & (1 << MODE_MENU_PREINIT)) { g_extern.console.rmenu.input_loop = INPUT_LOOP_MENU; g_extern.draw_menu = true; - preinit = false; + + g_extern.lifecycle_menu_state &= ~(1 << MODE_MENU_PREINIT); } g_extern.frame_count++; @@ -1240,7 +1240,6 @@ deinit: g_extern.console.rmenu.state.ingame_menu.enable = false; g_extern.draw_menu = false; - preinit = true; return false; }