From 8ab15e7ef8d37ffec1b4c451034c2ccb23ed692d Mon Sep 17 00:00:00 2001 From: twinaphex <libretro@gmail.com> Date: Mon, 7 Dec 2015 15:03:54 +0100 Subject: [PATCH] Create RARCH_CTL_DESTROY --- frontend/frontend.c | 2 +- retroarch.c | 26 ++++++++++++++------------ retroarch.h | 4 ++-- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index 89b710b650..41e6877318 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -83,7 +83,7 @@ void main_exit(void *args) frontend_driver_exitspawn(settings->libretro, sizeof(settings->libretro)); - rarch_main_free(); + rarch_ctl(RARCH_CTL_DESTROY, NULL); ui_companion_driver_deinit(); diff --git a/retroarch.c b/retroarch.c index 01cbfbf195..fc4080a8dc 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1067,18 +1067,6 @@ static bool init_state(void) return true; } -void rarch_main_free(void) -{ - runloop_ctl(RUNLOOP_CTL_MSG_QUEUE_DEINIT, NULL); - event_command(EVENT_CMD_DRIVERS_DEINIT); - event_command(EVENT_CMD_LOG_FILE_DEINIT); - - runloop_ctl(RUNLOOP_CTL_STATE_FREE, NULL); - runloop_ctl(RUNLOOP_CTL_GLOBAL_FREE, NULL); - runloop_ctl(RUNLOOP_CTL_DATA_DEINIT, NULL); - config_free(); -} - /** * rarch_init_system_av_info: * @@ -1292,6 +1280,20 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data) switch(state) { + case RARCH_CTL_DESTROY: + rarch_error_on_init = false; + rarch_block_config_read = false; + rarch_force_fullscreen = false; + + runloop_ctl(RUNLOOP_CTL_MSG_QUEUE_DEINIT, NULL); + event_command(EVENT_CMD_DRIVERS_DEINIT); + event_command(EVENT_CMD_LOG_FILE_DEINIT); + + runloop_ctl(RUNLOOP_CTL_STATE_FREE, NULL); + runloop_ctl(RUNLOOP_CTL_GLOBAL_FREE, NULL); + runloop_ctl(RUNLOOP_CTL_DATA_DEINIT, NULL); + config_free(); + return true; case RARCH_CTL_DEINIT: { bool inited = false; diff --git a/retroarch.h b/retroarch.h index edc44d6cb6..56b55074b7 100644 --- a/retroarch.h +++ b/retroarch.h @@ -63,6 +63,8 @@ enum rarch_ctl_state RARCH_CTL_PREINIT, + RARCH_CTL_DESTROY, + RARCH_CTL_LOAD_CONTENT, #ifdef HAVE_FFMPEG @@ -150,8 +152,6 @@ struct rarch_main_wrap bool touched; }; -void rarch_main_free(void); - bool rarch_ctl(enum rarch_ctl_state state, void *data); /**