diff --git a/frontend/frontend_console.c b/frontend/frontend_console.c index ebd2cd4a9e..0a699078e9 100644 --- a/frontend/frontend_console.c +++ b/frontend/frontend_console.c @@ -275,6 +275,7 @@ begin_loop: audio_start_func(); while(rarch_main_iterate()); audio_stop_func(); + g_extern.lifecycle_menu_state &= ~(1 << MODE_EMULATION); } else if (g_extern.lifecycle_menu_state & (1 << MODE_INIT)) { @@ -295,14 +296,15 @@ begin_loop: if (init_ret == 0) { RARCH_LOG("rarch_main_init succeeded.\n"); - g_extern.lifecycle_menu_state = (1 << MODE_EMULATION); + g_extern.lifecycle_menu_state |= (1 << MODE_EMULATION); } else { RARCH_ERR("rarch_main_init failed.\n"); - g_extern.lifecycle_menu_state = (1 << MODE_MENU); + g_extern.lifecycle_menu_state |= (1 << MODE_MENU); rarch_settings_msg(S_MSG_ROM_LOADING_ERROR, S_DELAY_180); } + g_extern.lifecycle_menu_state &= ~(1 << MODE_INIT); } else if(g_extern.lifecycle_menu_state & (1 << MODE_MENU)) { diff --git a/retroarch.c b/retroarch.c index 85260609d9..2750149d58 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2782,7 +2782,7 @@ bool rarch_main_iterate(void) if (g_extern.system.shutdown) { #ifdef HAVE_RMENU - g_extern.lifecycle_menu_state = (1 << MODE_EXIT); + g_extern.lifecycle_menu_state |= (1 << MODE_EXIT); #endif return false; } @@ -2798,11 +2798,12 @@ bool rarch_main_iterate(void) if (rmenu_enable || ((g_extern.lifecycle_menu_state & (1 << MODE_MENU_INGAME)) && !rmenu_enable)) { - g_extern.lifecycle_menu_state &= ~(1 << MODE_EMULATION); g_extern.lifecycle_menu_state |= (1 << MODE_MENU); g_extern.delay_timer[0] = g_extern.frame_count + 30; } #endif + else + g_extern.lifecycle_menu_state |= (1 << MODE_EXIT); return false; } @@ -2850,7 +2851,6 @@ bool rarch_main_iterate(void) if (input_key_pressed_func(RARCH_FRAMEADVANCE)) { g_extern.lifecycle_state &= ~(1ULL << RARCH_FRAMEADVANCE); - g_extern.lifecycle_menu_state &= ~(1 << MODE_EMULATION); g_extern.lifecycle_menu_state |= (1 << MODE_MENU); g_extern.lifecycle_menu_state |= (1 << MODE_MENU_INGAME); return false;