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(); global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *info = rarch_system_info_get_ptr();
pretro_unload_game(); pretro_unload_game();
pretro_deinit(); pretro_deinit();
@ -548,7 +548,7 @@ static void event_deinit_core(bool reinit)
strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir)); strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir));
/* restore system directory if it was set to <content 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'; settings->system_directory[0] = '\0';
/* auto overrides: reload the original config */ /* 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")) 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_directory = '\0';
settings->system_in_content_dir = true; 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); path_mkdir(g_defaults.sram_dir);
fill_pathname_join(g_defaults.savestate_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); path_mkdir(g_defaults.savestate_dir);
fill_pathname_join(g_defaults.system_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); path_mkdir(g_defaults.system_dir);
break; break;
case SDCARD_NOT_WRITABLE: case SDCARD_NOT_WRITABLE:

View File

@ -38,6 +38,7 @@ void main_exit_save_config(void)
{ {
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
global_t *global = global_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) 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)); strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir));
/* restore system directory if it was set to <content 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'; settings->system_directory[0] = '\0';
/* Save last core-specific config to the default config location, /* 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], fill_pathname_basedir(settings->system_directory, argv[0],
sizeof(settings->system_directory)); sizeof(settings->system_directory));
} }
else
settings->system_in_content_dir = false;
} }
void set_paths_redirect(const char *path) 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. */ * as this was initialized before in a menu or otherwise. */
if (!settings->system_directory || settings->system_directory[0] == '\0') 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, fill_pathname_basedir(settings->system_directory, path,
sizeof(settings->system_directory)); sizeof(settings->system_directory));
} }
else
settings->system_in_content_dir = false;
} }