From de3dbfb4399f5104c717d5986c63b50204bc1f7d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 3 Oct 2014 12:26:29 +0200 Subject: [PATCH] Have more initing/deiniting go through rarch_main_command --- general.h | 5 ++ retroarch.c | 132 +++++++++++++++++++++++++++------------------------- 2 files changed, 73 insertions(+), 64 deletions(-) diff --git a/general.h b/general.h index 1f0392e5c1..e747078f36 100644 --- a/general.h +++ b/general.h @@ -135,12 +135,17 @@ enum basic_event RARCH_CMD_SHADER_DIR_INIT, RARCH_CMD_SHADER_DIR_DEINIT, RARCH_CMD_CONTROLLERS_INIT, + RARCH_CMD_SAVEFILES, RARCH_CMD_SAVEFILES_INIT, RARCH_CMD_SAVEFILES_DEINIT, RARCH_CMD_MSG_QUEUE_INIT, RARCH_CMD_MSG_QUEUE_DEINIT, RARCH_CMD_CHEATS_INIT, RARCH_CMD_CHEATS_DEINIT, + RARCH_CMD_NETPLAY_INIT, + RARCH_CMD_NETPLAY_DEINIT, + RARCH_CMD_BSV_MOVIE_INIT, + RARCH_CMD_BSV_MOVIE_DEINIT, }; enum action_state diff --git a/retroarch.c b/retroarch.c index 96f503db13..7dc8127560 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1218,13 +1218,6 @@ static void init_movie(void) } } -static void deinit_movie(void) -{ - if (g_extern.bsv.movie) - bsv_movie_free(g_extern.bsv.movie); - g_extern.bsv.movie = NULL; -} - #define RARCH_DEFAULT_PORT 55435 #ifdef HAVE_NETPLAY @@ -1268,13 +1261,6 @@ static void init_netplay(void) 0, 180); } } - -static void deinit_netplay(void) -{ - if (driver.netplay_data) - netplay_free(driver.netplay_data); - driver.netplay_data = NULL; -} #endif #ifdef HAVE_COMMAND @@ -1398,16 +1384,10 @@ static void set_savestate_auto_index(void) RARCH_LOG("Found last state slot: #%d\n", g_settings.state_slot); } -static void deinit_savefiles(void) -{ - if (g_extern.savefiles) - string_list_free(g_extern.savefiles); - g_extern.savefiles = NULL; -} - static void fill_pathnames(void) { - deinit_savefiles(); + rarch_main_command(RARCH_CMD_SAVEFILES_DEINIT); + g_extern.savefiles = string_list_new(); rarch_assert(g_extern.savefiles); @@ -1812,7 +1792,8 @@ static bool check_movie_record(void) msg_queue_push(g_extern.msg_queue, RETRO_MSG_MOVIE_RECORD_STOPPING, 2, 180); RARCH_LOG(RETRO_LOG_MOVIE_RECORD_STOPPING); - deinit_movie(); + + rarch_main_command(RARCH_CMD_BSV_MOVIE_DEINIT); return true; } @@ -1826,7 +1807,8 @@ static bool check_movie_playback(void) RETRO_MSG_MOVIE_PLAYBACK_ENDED, 1, 180); RARCH_LOG(RETRO_LOG_MOVIE_PLAYBACK_ENDED); - deinit_movie(); + rarch_main_command(RARCH_CMD_BSV_MOVIE_DEINIT); + g_extern.bsv.movie_end = false; g_extern.bsv.movie_playback = false; @@ -2571,11 +2553,8 @@ int rarch_main_init(int argc, char *argv[]) load_auto_state(); - init_movie(); - -#ifdef HAVE_NETPLAY - init_netplay(); -#endif + rarch_main_command(RARCH_CMD_BSV_MOVIE_INIT); + rarch_main_command(RARCH_CMD_NETPLAY_INIT); } retro_init_libretro_cbs(&driver.retro_ctx); @@ -2907,15 +2886,15 @@ void rarch_main_command(unsigned cmd) /* Poll input to avoid possibly stale data to corrupt things. */ driver.input->poll(driver.input_data); break; - case RARCH_CMD_CHEATS_INIT: - rarch_main_command(RARCH_CMD_CHEATS_DEINIT); - init_cheats(); - break; case RARCH_CMD_CHEATS_DEINIT: if (g_extern.cheat) cheat_manager_free(g_extern.cheat); g_extern.cheat = NULL; break; + case RARCH_CMD_CHEATS_INIT: + rarch_main_command(RARCH_CMD_CHEATS_DEINIT); + init_cheats(); + break; case RARCH_CMD_REWIND_DEINIT: #ifdef HAVE_NETPLAY if (driver.netplay_data) @@ -2962,6 +2941,14 @@ void rarch_main_command(unsigned cmd) driver.audio_active = false; } break; + case RARCH_CMD_OVERLAY_DEINIT: +#ifdef HAVE_OVERLAY + if (driver.overlay) + input_overlay_free(driver.overlay); + driver.overlay = NULL; + memset(&driver.overlay_state, 0, sizeof(driver.overlay_state)); +#endif + break; case RARCH_CMD_OVERLAY_INIT: #ifdef HAVE_OVERLAY if (!*g_settings.input.overlay) @@ -2970,20 +2957,17 @@ void rarch_main_command(unsigned cmd) driver.overlay = input_overlay_new(g_settings.input.overlay); if (!driver.overlay) RARCH_ERR("Failed to load overlay.\n"); -#endif - break; - case RARCH_CMD_OVERLAY_DEINIT: -#ifdef HAVE_OVERLAY - if (driver.overlay) - input_overlay_free(driver.overlay); - driver.overlay = NULL; - memset(&driver.overlay_state, 0, sizeof(driver.overlay_state)); #endif break; case RARCH_CMD_OVERLAY_REINIT: rarch_main_command(RARCH_CMD_OVERLAY_DEINIT); rarch_main_command(RARCH_CMD_OVERLAY_INIT); break; + case RARCH_CMD_DSP_FILTER_DEINIT: + if (g_extern.audio_data.dsp) + rarch_dsp_filter_free(g_extern.audio_data.dsp); + g_extern.audio_data.dsp = NULL; + break; case RARCH_CMD_DSP_FILTER_INIT: rarch_main_command(RARCH_CMD_DSP_FILTER_DEINIT); if (!*g_settings.audio.dsp_plugin) @@ -2995,19 +2979,11 @@ void rarch_main_command(unsigned cmd) RARCH_ERR("[DSP]: Failed to initialize DSP filter \"%s\".\n", g_settings.audio.dsp_plugin); break; - case RARCH_CMD_DSP_FILTER_DEINIT: - if (g_extern.audio_data.dsp) - rarch_dsp_filter_free(g_extern.audio_data.dsp); - g_extern.audio_data.dsp = NULL; - break; case RARCH_CMD_GPU_RECORD_DEINIT: if (g_extern.record_gpu_buffer) free(g_extern.record_gpu_buffer); g_extern.record_gpu_buffer = NULL; break; - case RARCH_CMD_RECORD_INIT: - init_recording(); - break; case RARCH_CMD_RECORD_DEINIT: if (!driver.recording_data || !driver.recording) return; @@ -3023,6 +2999,9 @@ void rarch_main_command(unsigned cmd) rarch_main_command(RARCH_CMD_GPU_RECORD_DEINIT); break; + case RARCH_CMD_RECORD_INIT: + init_recording(); + break; case RARCH_CMD_HISTORY_DEINIT: if (g_extern.history) content_playlist_free(g_extern.history); @@ -3122,6 +3101,11 @@ void rarch_main_command(unsigned cmd) rarch_main_command(RARCH_CMD_AUDIO_START); } break; + case RARCH_CMD_SHADER_DIR_DEINIT: + dir_list_free(g_extern.shader_dir.list); + g_extern.shader_dir.list = NULL; + g_extern.shader_dir.ptr = 0; + break; case RARCH_CMD_SHADER_DIR_INIT: rarch_main_command(RARCH_CMD_SHADER_DIR_DEINIT); { @@ -3146,16 +3130,17 @@ void rarch_main_command(unsigned cmd) g_extern.shader_dir.list->elems[i].data); } break; - case RARCH_CMD_SHADER_DIR_DEINIT: - dir_list_free(g_extern.shader_dir.list); - g_extern.shader_dir.list = NULL; - g_extern.shader_dir.ptr = 0; - break; - case RARCH_CMD_SAVEFILES_INIT: - init_savefiles(); + case RARCH_CMD_SAVEFILES: + save_files(); break; case RARCH_CMD_SAVEFILES_DEINIT: - save_files(); + if (g_extern.savefiles) + string_list_free(g_extern.savefiles); + g_extern.savefiles = NULL; + break; + case RARCH_CMD_SAVEFILES_INIT: + rarch_main_command(RARCH_CMD_SAVEFILES_DEINIT); + init_savefiles(); break; case RARCH_CMD_MSG_QUEUE_DEINIT: if (g_extern.msg_queue) @@ -3167,6 +3152,28 @@ void rarch_main_command(unsigned cmd) if (!g_extern.msg_queue) rarch_assert(g_extern.msg_queue = msg_queue_new(8)); break; + case RARCH_CMD_BSV_MOVIE_DEINIT: + if (g_extern.bsv.movie) + bsv_movie_free(g_extern.bsv.movie); + g_extern.bsv.movie = NULL; + break; + case RARCH_CMD_BSV_MOVIE_INIT: + rarch_main_command(RARCH_CMD_BSV_MOVIE_DEINIT); + init_movie(); + break; + case RARCH_CMD_NETPLAY_DEINIT: +#ifdef HAVE_NETPLAY + if (driver.netplay_data) + netplay_free(driver.netplay_data); + driver.netplay_data = NULL; +#endif + break; + case RARCH_CMD_NETPLAY_INIT: + rarch_main_command(RARCH_CMD_NETPLAY_DEINIT); +#ifdef HAVE_NETPLAY + init_netplay(); +#endif + break; } } @@ -3318,9 +3325,7 @@ bool rarch_main_iterate(void) void rarch_main_deinit(void) { -#ifdef HAVE_NETPLAY - deinit_netplay(); -#endif + rarch_main_command(RARCH_CMD_NETPLAY_DEINIT); #ifdef HAVE_COMMAND deinit_command(); #endif @@ -3331,12 +3336,11 @@ void rarch_main_deinit(void) #endif rarch_main_command(RARCH_CMD_RECORD_DEINIT); - rarch_main_command(RARCH_CMD_SAVEFILES_DEINIT); + rarch_main_command(RARCH_CMD_SAVEFILES); rarch_main_command(RARCH_CMD_REWIND_DEINIT); rarch_main_command(RARCH_CMD_CHEATS_DEINIT); - - deinit_movie(); + rarch_main_command(RARCH_CMD_BSV_MOVIE_DEINIT); save_auto_state(); @@ -3344,7 +3348,7 @@ void rarch_main_deinit(void) deinit_temporary_content(); deinit_subsystem_fullpaths(); - deinit_savefiles(); + rarch_main_command(RARCH_CMD_SAVEFILES_DEINIT); g_extern.main_is_init = false; }