diff --git a/retroarch.c b/retroarch.c index 2d7be8ae62..f5ca1bf10e 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1115,8 +1115,7 @@ void rarch_main_free(void) runloop_ctl(RUNLOOP_CTL_STATE_FREE, NULL); runloop_ctl(RUNLOOP_CTL_GLOBAL_FREE, NULL); - - rarch_main_data_deinit(); + runloop_ctl(RUNLOOP_CTL_DATA_DEINIT, NULL); config_free(); } diff --git a/runloop.c b/runloop.c index 6c21484ce4..02bf7348cd 100644 --- a/runloop.c +++ b/runloop.c @@ -359,13 +359,16 @@ global_t *global_get_ptr(void) return &g_extern; } +static void rarch_main_data_clear_state(void) +{ + runloop_ctl(RUNLOOP_CTL_DATA_DEINIT, NULL); + rarch_task_init(); +} + bool runloop_ctl(enum runloop_ctl_state state, void *data) { settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); -#ifdef HAVE_NETPLAY - driver_t *driver = driver_get_ptr(); -#endif switch (state) { @@ -453,14 +456,17 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data) event_command(EVENT_CMD_VOLUME_DOWN); #ifdef HAVE_NETPLAY - if (driver->netplay_data) { - if (cmd->netplay_flip_pressed) - event_command(EVENT_CMD_NETPLAY_FLIP_PLAYERS); + driver_t *driver = driver_get_ptr(); + if (driver->netplay_data) + { + if (cmd->netplay_flip_pressed) + event_command(EVENT_CMD_NETPLAY_FLIP_PLAYERS); - if (cmd->fullscreen_toggle) - event_command(EVENT_CMD_FULLSCREEN_TOGGLE); - break; + if (cmd->fullscreen_toggle) + event_command(EVENT_CMD_FULLSCREEN_TOGGLE); + break; + } } #endif if (!runloop_ctl(RUNLOOP_CTL_CHECK_IDLE_STATE, data)) @@ -725,6 +731,9 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data) case RUNLOOP_CTL_SET_EXEC: main_exec = true; break; + case RUNLOOP_CTL_DATA_DEINIT: + rarch_task_deinit(); + break; default: return false; } @@ -1116,21 +1125,11 @@ end: return 0; } -void rarch_main_data_deinit(void) -{ - rarch_task_deinit(); -} - void rarch_main_data_iterate(void) { rarch_task_check(); } -void rarch_main_data_clear_state(void) -{ - rarch_main_data_deinit(); - rarch_task_init(); -} void data_runloop_osd_msg(const char *msg, size_t len) { diff --git a/runloop.h b/runloop.h index 239923d544..c0d3625532 100644 --- a/runloop.h +++ b/runloop.h @@ -58,6 +58,7 @@ enum runloop_ctl_state RUNLOOP_CTL_SET_PERFCNT_ENABLE, RUNLOOP_CTL_UNSET_PERFCNT_ENABLE, RUNLOOP_CTL_IS_PERFCNT_ENABLE, + RUNLOOP_CTL_DATA_DEINIT, /* Checks for state changes in this frame. */ RUNLOOP_CTL_CHECK_STATE, RUNLOOP_CTL_CHECK_MOVIE, @@ -329,12 +330,8 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data); typedef int (*transfer_cb_t)(void *data, size_t len); -void rarch_main_data_clear_state(void); - void rarch_main_data_iterate(void); -void rarch_main_data_deinit(void); - #ifdef __cplusplus } #endif