fix system dir resetting on each startup

This commit is contained in:
radius 2015-07-17 02:53:59 -05:00
parent 450c665619
commit a06dd9c3a2
5 changed files with 13 additions and 7 deletions

View File

@ -534,7 +534,7 @@ static void event_deinit_core(bool reinit)
{
global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr();
rarch_system_info_t *info = rarch_system_info_get_ptr();
pretro_unload_game();
pretro_deinit();
@ -548,7 +548,7 @@ static void event_deinit_core(bool reinit)
strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir));
/* restore system directory if it was set to <content dir> */
if(settings->system_in_content_dir)
if(settings->system_in_content_dir && !strcmp(info->info.library_name,"No Core"))
settings->system_directory[0] = '\0';
/* auto overrides: reload the original config */

View File

@ -1719,6 +1719,8 @@ static bool config_load_file(const char *path, bool set_defaults)
if (!strcmp(settings->system_directory, "default"))
{
RARCH_WARN("system_directory is not set in config. Assuming system directory is same folder as game: \"%s\".\n",
settings->system_directory);
*settings->system_directory = '\0';
settings->system_in_content_dir = true;
}

View File

@ -812,11 +812,11 @@ static void frontend_android_get_environment_settings(int *argc,
path_mkdir(g_defaults.sram_dir);
fill_pathname_join(g_defaults.savestate_dir,
ext_dir, "saves", sizeof(g_defaults.savestate_dir));
ext_dir, "states", sizeof(g_defaults.savestate_dir));
path_mkdir(g_defaults.savestate_dir);
fill_pathname_join(g_defaults.system_dir,
ext_dir, "saves", sizeof(g_defaults.system_dir));
ext_dir, "system", sizeof(g_defaults.system_dir));
path_mkdir(g_defaults.system_dir);
break;
case SDCARD_NOT_WRITABLE:

View File

@ -38,6 +38,7 @@ void main_exit_save_config(void)
{
settings_t *settings = config_get_ptr();
global_t *global = global_get_ptr();
rarch_system_info_t *info = rarch_system_info_get_ptr();
if (settings->config_save_on_exit && *global->config_path)
{
@ -48,7 +49,7 @@ void main_exit_save_config(void)
strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir));
/* restore system directory if it was set to <content dir> */
if(settings->system_in_content_dir)
if(settings->system_in_content_dir && !strcmp(info->info.library_name,"No Core"))
settings->system_directory[0] = '\0';
/* Save last core-specific config to the default config location,

View File

@ -319,6 +319,8 @@ static void set_special_paths(char **argv, unsigned num_content)
fill_pathname_basedir(settings->system_directory, argv[0],
sizeof(settings->system_directory));
}
else
settings->system_in_content_dir = false;
}
void set_paths_redirect(const char *path)
@ -431,11 +433,12 @@ void rarch_set_paths(const char *path)
* as this was initialized before in a menu or otherwise. */
if (!settings->system_directory || settings->system_directory[0] == '\0')
{
RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR %s\n",path);
RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n",path);
fill_pathname_basedir(settings->system_directory, path,
sizeof(settings->system_directory));
}
else
settings->system_in_content_dir = false;
}