diff --git a/command.c b/command.c index c5332f9b7c..209f417ec6 100644 --- a/command.c +++ b/command.c @@ -2445,35 +2445,6 @@ bool command_event(enum event_command cmd, void *data) content_save_ram_file(i); } return true; - case CMD_EVENT_SAVEFILES_DEINIT: - { - global_t *global = global_get_ptr(); - if (!global) - break; - - if (global->savefiles) - string_list_free(global->savefiles); - global->savefiles = NULL; - } - break; - case CMD_EVENT_SAVEFILES_INIT: - { - global_t *global = global_get_ptr(); - global->sram.use = global->sram.use && !global->sram.save_disable; -#ifdef HAVE_NETPLAY - global->sram.use = global->sram.use && - (!netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_DATA_INITED, NULL) - || !global->netplay.is_client); -#endif - - if (!global->sram.use) - RARCH_LOG("%s\n", - msg_hash_to_str(MSG_SRAM_WILL_NOT_BE_SAVED)); - - if (global->sram.use) - command_event(CMD_EVENT_AUTOSAVE_INIT, NULL); - } - break; case CMD_EVENT_BSV_MOVIE_DEINIT: bsv_movie_ctl(BSV_MOVIE_CTL_DEINIT, NULL); break; diff --git a/command.h b/command.h index d34b68b3e4..0ff33189be 100644 --- a/command.h +++ b/command.h @@ -158,10 +158,6 @@ enum event_command /* Initializes controllers. */ CMD_EVENT_CONTROLLERS_INIT, CMD_EVENT_SAVEFILES, - /* Initializes savefiles. */ - CMD_EVENT_SAVEFILES_INIT, - /* Deinitializes savefiles. */ - CMD_EVENT_SAVEFILES_DEINIT, /* Initializes cheats. */ CMD_EVENT_CHEATS_INIT, /* Deinitializes cheats. */ diff --git a/paths.c b/paths.c index d03aec5618..6a1cc62726 100644 --- a/paths.c +++ b/paths.c @@ -25,6 +25,10 @@ #include "config.h" #endif +#ifdef HAVE_NETPLAY +#include "network/netplay/netplay.h" +#endif + #include "dirs.h" #include "paths.h" @@ -382,11 +386,45 @@ static void path_init_savefile_rtc(void) string_list_append(global->savefiles, savefile_name_rtc, attr); } -static void path_init_savefile(void) +void path_deinit_savefile(void) +{ + global_t *global = global_get_ptr(); + + if (!global) + return; + + if (global->savefiles) + string_list_free(global->savefiles); + global->savefiles = NULL; +} + +void path_init_savefile(void) +{ + global_t *global = global_get_ptr(); + + if (!global) + return; + + global->sram.use = global->sram.use && !global->sram.save_disable; +#ifdef HAVE_NETPLAY + global->sram.use = global->sram.use && + (!netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_DATA_INITED, NULL) + || !global->netplay.is_client); +#endif + + if (!global->sram.use) + RARCH_LOG("%s\n", + msg_hash_to_str(MSG_SRAM_WILL_NOT_BE_SAVED)); + + if (global->sram.use) + command_event(CMD_EVENT_AUTOSAVE_INIT, NULL); +} + +static void path_init_savefile_internal(void) { global_t *global = global_get_ptr(); - command_event(CMD_EVENT_SAVEFILES_DEINIT, NULL); + path_deinit_savefile(); global->savefiles = string_list_new(); retro_assert(global->savefiles); @@ -419,7 +457,7 @@ void path_fill_names(void) { global_t *global = global_get_ptr(); - path_init_savefile(); + path_init_savefile_internal(); bsv_movie_set_path(global->name.savefile); if (string_is_empty(path_main_basename)) diff --git a/paths.h b/paths.h index a6ad76457d..d5079d63ea 100644 --- a/paths.h +++ b/paths.h @@ -29,6 +29,10 @@ enum rarch_content_type RARCH_CONTENT_IMAGE }; +void path_deinit_savefile(void); + +void path_init_savefile(void); + /* fill functions */ void path_fill_names(void); diff --git a/retroarch.c b/retroarch.c index 05f3704e9f..1e07363b9f 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1066,7 +1066,9 @@ bool retroarch_main_init(int argc, char *argv[]) command_event(CMD_EVENT_CONTROLLERS_INIT, NULL); command_event(CMD_EVENT_RECORD_INIT, NULL); command_event(CMD_EVENT_CHEATS_INIT, NULL); - command_event(CMD_EVENT_SAVEFILES_INIT, NULL); + + path_init_savefile(); + command_event(CMD_EVENT_SET_PER_GAME_RESOLUTION, NULL); rarch_ctl(RARCH_CTL_UNSET_ERROR_ON_INIT, NULL); @@ -1157,7 +1159,8 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data) command_event(CMD_EVENT_TEMPORARY_CONTENT_DEINIT, NULL); command_event(CMD_EVENT_SUBSYSTEM_FULLPATHS_DEINIT, NULL); - command_event(CMD_EVENT_SAVEFILES_DEINIT, NULL); + + path_deinit_savefile(); rarch_ctl(RARCH_CTL_UNSET_INITED, NULL); break;