fix save sorting for cores that do not use the sram interface and make the process more reliable

This commit is contained in:
radius 2015-05-07 19:59:06 -05:00
parent d7eab06939
commit c68c93fa79
3 changed files with 25 additions and 22 deletions

View File

@ -484,6 +484,7 @@ static void event_init_controllers(void)
static void event_deinit_core(bool reinit) static void event_deinit_core(bool reinit)
{ {
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr();
pretro_unload_game(); pretro_unload_game();
pretro_deinit(); pretro_deinit();
@ -496,6 +497,7 @@ static void event_deinit_core(bool reinit)
config_unload_override(); config_unload_override();
global->overrides_active = false; global->overrides_active = false;
} }
pretro_set_environment(rarch_environment_cb); pretro_set_environment(rarch_environment_cb);
uninit_libretro_sym(); uninit_libretro_sym();
} }
@ -656,6 +658,9 @@ static bool event_init_core(void)
driver_t *driver = driver_get_ptr(); driver_t *driver = driver_get_ptr();
settings_t *settings = config_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(settings->auto_overrides_enable)
{ {
if (config_load_override()) if (config_load_override())
@ -684,6 +689,11 @@ static bool event_init_core(void)
retro_init_libretro_cbs(&driver->retro_ctx); retro_init_libretro_cbs(&driver->retro_ctx);
rarch_init_system_av_info(); 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; return true;
} }

View File

@ -331,19 +331,16 @@ void set_paths_redirect(const char *path)
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
char orig_savestate_dir[PATH_MAX_LENGTH] = ""; if(global->system.info.library_name && strcmp(global->system.info.library_name,"No Core") && settings->sort_savefiles_enable)
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)
{ {
strlcpy(orig_savefile_dir,global->savefile_dir,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)); 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) 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)); 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)); 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)) if(path_is_directory(global->savefile_dir))
@ -372,13 +369,6 @@ void set_paths_redirect(const char *path)
".state", sizeof(global->cheatfile_name)); ".state", sizeof(global->cheatfile_name));
RARCH_LOG("Redirecting cheat file to \"%s\".\n", 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) void rarch_set_paths(const char *path)

View File

@ -176,6 +176,9 @@ void set_paths_redirect(const char *path);
**/ **/
void rarch_print_compiler(char *str, size_t sizeof_str); 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 #ifdef __cplusplus
} }
#endif #endif