Wrap all access of runloop_shutdown_initiated

This commit is contained in:
twinaphex 2019-01-10 02:35:03 +01:00
parent 96b7f9fd9e
commit d3f58bb65c
2 changed files with 8 additions and 4 deletions

View File

@ -1914,6 +1914,9 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
case RARCH_CTL_SET_SHUTDOWN:
runloop_shutdown_initiated = true;
break;
case RARCH_CTL_UNSET_SHUTDOWN:
runloop_shutdown_initiated = false;
break;
case RARCH_CTL_IS_SHUTDOWN:
return runloop_shutdown_initiated;
case RARCH_CTL_DATA_DEINIT:
@ -2396,7 +2399,7 @@ void retroarch_fail(int error_code, const char *error)
bool retroarch_main_quit(void)
{
if (!runloop_shutdown_initiated)
if (!case_ctl(RARCH_CTL_IS_SHUTDOWN, NULL))
{
command_event(CMD_EVENT_AUTOSAVE_STATE, NULL);
command_event(CMD_EVENT_DISABLE_OVERRIDES, NULL);
@ -2404,7 +2407,7 @@ bool retroarch_main_quit(void)
command_event(CMD_EVENT_RESTORE_REMAPS, NULL);
}
runloop_shutdown_initiated = true;
rarch_ctl(RARCH_CTL_SET_SHUTDOWN, NULL);
rarch_menu_running_finished();
#ifdef HAVE_DISCORD
@ -2484,7 +2487,7 @@ bool runloop_msg_queue_pull(const char **ret)
* d) Video driver no longer alive.
* e) End of BSV movie and BSV EOF exit is true. (TODO/FIXME - explain better)
*/
#define time_to_exit(quit_key_pressed) (runloop_shutdown_initiated || quit_key_pressed || !is_alive || bsv_movie_is_end_of_file() || ((runloop_max_frames != 0) && (frame_count >= runloop_max_frames)) || runloop_exec)
#define time_to_exit(quit_key_pressed) (rarch_ctl(RARCH_CTL_IS_SHUTDOWN, NULL) || quit_key_pressed || !is_alive || bsv_movie_is_end_of_file() || ((runloop_max_frames != 0) && (frame_count >= runloop_max_frames)) || runloop_exec)
#define runloop_check_cheevos() (settings->bools.cheevos_enable && cheevos_loaded && (!cheats_are_enabled && !cheats_were_enabled))
@ -2782,7 +2785,7 @@ static enum runloop_state runloop_check_state(
/* Loads dummy core instead of exiting RetroArch completely.
* Aborts core shutdown if invoked. */
runloop_shutdown_initiated = false;
rarch_ctl(RARCH_CTL_UNSET_SHUTDOWN, NULL);
runloop_core_shutdown_initiated = false;
}
else

View File

@ -145,6 +145,7 @@ enum rarch_ctl_state
RARCH_CTL_SET_CORE_SHUTDOWN,
RARCH_CTL_SET_SHUTDOWN,
RARCH_CTL_UNSET_SHUTDOWN,
RARCH_CTL_IS_SHUTDOWN,
/* Runloop state */