fix per-core config on PC

This commit is contained in:
Toad King 2014-01-01 15:34:56 -05:00
parent 8f45063f74
commit e022b39061
2 changed files with 13 additions and 5 deletions

View File

@ -450,9 +450,9 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
else if (action == RGUI_ACTION_START)
g_settings.core_specific_config = default_core_specific_config;
if (g_settings.core_specific_config)
if (g_settings.core_specific_config && *g_extern.core_specific_config_path)
strlcpy(g_extern.config_path, g_extern.core_specific_config_path, sizeof(g_extern.config_path));
else
else if (!g_settings.core_specific_config && *g_extern.original_config_path)
strlcpy(g_extern.config_path, g_extern.original_config_path, sizeof(g_extern.config_path));
break;
#if defined(HAVE_THREADS)

View File

@ -446,11 +446,14 @@ void config_load(void)
parse_config_file();
}
if (!*g_extern.original_config_path && *g_settings.libretro)
if (!*g_extern.original_config_path)
{
path_resolve_realpath(g_extern.config_path, sizeof(g_extern.config_path));
strlcpy(g_extern.original_config_path, g_extern.config_path, sizeof(g_extern.original_config_path));
}
if (*g_settings.libretro)
{
if (*g_settings.rgui_config_directory)
{
path_resolve_realpath(g_settings.rgui_config_directory, sizeof(g_settings.rgui_config_directory));
@ -458,7 +461,7 @@ void config_load(void)
}
else
{
strlcpy(g_extern.core_specific_config_path, g_extern.config_path, sizeof(g_extern.core_specific_config_path));
strlcpy(g_extern.core_specific_config_path, g_extern.original_config_path, sizeof(g_extern.core_specific_config_path));
path_basedir(g_extern.core_specific_config_path);
}
@ -466,11 +469,16 @@ void config_load(void)
if (g_settings.core_specific_config)
{
char tmp[PATH_MAX];
strlcpy(tmp, g_settings.libretro, sizeof(tmp));
strlcpy(g_extern.config_path, g_extern.core_specific_config_path, sizeof(g_extern.config_path));
RARCH_LOG("Loading core-specific config from: %s.\n", g_extern.config_path);
if (!config_load_file(g_extern.config_path))
RARCH_WARN("Core-specific config not found, reusing last config.\n");
// make sure we don't accidentally switch this
strlcpy(g_settings.libretro, tmp, sizeof(g_settings.libretro));
}
}
}