From c68c93fa798385b7a2c73fc08a9cc3a3bb34349d Mon Sep 17 00:00:00 2001 From: radius Date: Thu, 7 May 2015 19:59:06 -0500 Subject: [PATCH] fix save sorting for cores that do not use the sram interface and make the process more reliable --- command_event.c | 22 ++++++++++++++++------ retroarch.c | 22 ++++++---------------- retroarch.h | 3 +++ 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/command_event.c b/command_event.c index 3426da21d1..d0654fe66e 100644 --- a/command_event.c +++ b/command_event.c @@ -449,7 +449,7 @@ static void event_init_controllers(void) { /* If we're trying to connect a completely unknown device, * revert back to JOYPAD. */ - + if (device != RETRO_DEVICE_JOYPAD && device != RETRO_DEVICE_NONE) { /* Do not fix settings->input.libretro_device[i], @@ -484,18 +484,20 @@ static void event_init_controllers(void) static void event_deinit_core(bool reinit) { global_t *global = global_get_ptr(); - + settings_t *settings = config_get_ptr(); + pretro_unload_game(); pretro_deinit(); if (reinit) event_command(EVENT_CMD_DRIVERS_DEINIT); - + if(global->overrides_active) { config_unload_override(); global->overrides_active = false; } + pretro_set_environment(rarch_environment_cb); uninit_libretro_sym(); } @@ -530,7 +532,7 @@ static bool event_load_save_files(void) for (i = 0; i < global->savefiles->size; i++) load_ram_file(global->savefiles->elems[i].data, global->savefiles->elems[i].attr.i); - + return true; } @@ -656,6 +658,9 @@ static bool event_init_core(void) driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); + strlcpy(orig_savefile_dir,global->savefile_dir,sizeof(orig_savefile_dir)); + strlcpy(orig_savestate_dir,global->savestate_dir,sizeof(orig_savestate_dir)); + if(settings->auto_overrides_enable) { if (config_load_override()) @@ -664,7 +669,7 @@ static bool event_init_core(void) global->overrides_active = false; } - pretro_set_environment(rarch_environment_cb); + pretro_set_environment(rarch_environment_cb); if(settings->auto_remaps_enable) config_load_remap(); @@ -684,6 +689,11 @@ static bool event_init_core(void) retro_init_libretro_cbs(&driver->retro_ctx); rarch_init_system_av_info(); + if(settings->sort_savefiles_enable) + strlcpy(global->savefile_dir,orig_savefile_dir,sizeof(global->savefile_dir)); + if(settings->sort_savestates_enable) + strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir)); + return true; } @@ -704,7 +714,7 @@ static bool event_save_auto_state(void) ret = save_state(savestate_name_auto); RARCH_LOG("Auto save state to \"%s\" %s.\n", savestate_name_auto, ret ? "succeeded" : "failed"); - + return true; } diff --git a/retroarch.c b/retroarch.c index 983db6dd1c..b54845f0d7 100644 --- a/retroarch.c +++ b/retroarch.c @@ -331,19 +331,16 @@ void set_paths_redirect(const char *path) global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); - char orig_savestate_dir[PATH_MAX_LENGTH] = ""; - char orig_savefile_dir[PATH_MAX_LENGTH] = ""; - - if (global->system.info.library_name && strcmp(global->system.info.library_name,"No Core") && settings->sort_savefiles_enable) + if(global->system.info.library_name && strcmp(global->system.info.library_name,"No Core") && settings->sort_savefiles_enable) { - strlcpy(orig_savefile_dir,global->savefile_dir,sizeof(global->savefile_dir)); - fill_pathname_dir(global->savefile_dir,global->savefile_dir,global->system.info.library_name,sizeof(global->savefile_dir)); + strlcpy(orig_savefile_dir,global->savefile_dir,sizeof(global->savefile_dir)); + fill_pathname_dir(global->savefile_dir,global->savefile_dir,global->system.info.library_name,sizeof(global->savefile_dir)); } if (global->system.info.library_name && strcmp(global->system.info.library_name,"No Core") && settings->sort_savestates_enable) { - strlcpy(orig_savestate_dir,global->savestate_dir,sizeof(global->savestate_dir)); - fill_pathname_dir(global->savestate_dir,global->savestate_dir,global->system.info.library_name,sizeof(global->savestate_dir)); + strlcpy(orig_savestate_dir,global->savestate_dir,sizeof(global->savestate_dir)); + fill_pathname_dir(global->savestate_dir,global->savestate_dir,global->system.info.library_name,sizeof(global->savestate_dir)); } if(path_is_directory(global->savefile_dir)) @@ -372,13 +369,6 @@ void set_paths_redirect(const char *path) ".state", sizeof(global->cheatfile_name)); RARCH_LOG("Redirecting cheat file to \"%s\".\n", global->cheatfile_name); } - - if(global->system.info.library_name && strcmp(global->system.info.library_name,"No Core") && settings->sort_savefiles_enable) - strlcpy(global->savefile_dir,orig_savefile_dir,sizeof(global->savefile_dir)); - - if(global->system.info.library_name && strcmp(global->system.info.library_name,"No Core") && settings->sort_savestates_enable) - strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir)); - } void rarch_set_paths(const char *path) @@ -1180,7 +1170,7 @@ int rarch_main_init(int argc, char *argv[]) #if defined(GEKKO) && defined(HW_RVL) { settings_t *settings = config_get_ptr(); - + if (settings) { event_command(EVENT_CMD_VIDEO_SET_ASPECT_RATIO); diff --git a/retroarch.h b/retroarch.h index f751a7a190..0be81acfd4 100644 --- a/retroarch.h +++ b/retroarch.h @@ -176,6 +176,9 @@ void set_paths_redirect(const char *path); **/ void rarch_print_compiler(char *str, size_t sizeof_str); +char orig_savestate_dir[PATH_MAX_LENGTH]; +char orig_savefile_dir[PATH_MAX_LENGTH]; + #ifdef __cplusplus } #endif