Refactor has_set settings

This commit is contained in:
twinaphex 2016-08-01 21:51:23 +02:00
parent ef7ce5beee
commit aa2af0b61f
5 changed files with 172 additions and 78 deletions

View File

@ -744,13 +744,13 @@ static void config_set_defaults(void)
/* Make sure settings from other configs carry over into defaults /* Make sure settings from other configs carry over into defaults
* for another config. */ * for another config. */
if (!global->has_set.save_path) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH))
*global->dir.savefile = '\0'; *global->dir.savefile = '\0';
if (!global->has_set.state_path) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_STATE_PATH))
*global->dir.savestate = '\0'; *global->dir.savestate = '\0';
*settings->path.libretro_info = '\0'; *settings->path.libretro_info = '\0';
if (!global->has_set.libretro_directory) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DIRECTORY))
*settings->directory.libretro = '\0'; *settings->directory.libretro = '\0';
*settings->directory.cursor = '\0'; *settings->directory.cursor = '\0';
*settings->directory.resampler = '\0'; *settings->directory.resampler = '\0';
@ -772,11 +772,11 @@ static void config_set_defaults(void)
*settings->directory.video_filter = '\0'; *settings->directory.video_filter = '\0';
*settings->directory.audio_filter = '\0'; *settings->directory.audio_filter = '\0';
if (!global->has_set.ups_pref) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_UPS_PREF))
global->patch.ups_pref = false; global->patch.ups_pref = false;
if (!global->has_set.bps_pref) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_BPS_PREF))
global->patch.bps_pref = false; global->patch.bps_pref = false;
if (!global->has_set.ips_pref) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_IPS_PREF))
global->patch.ips_pref = false; global->patch.ips_pref = false;
*global->record.output_dir = '\0'; *global->record.output_dir = '\0';
@ -925,10 +925,12 @@ static void config_set_defaults(void)
g_defaults.dir.autoconfig, g_defaults.dir.autoconfig,
sizeof(settings->directory.autoconfig)); sizeof(settings->directory.autoconfig));
if (!global->has_set.state_path && !string_is_empty(g_defaults.dir.savestate)) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_STATE_PATH) &&
!string_is_empty(g_defaults.dir.savestate))
strlcpy(global->dir.savestate, strlcpy(global->dir.savestate,
g_defaults.dir.savestate, sizeof(global->dir.savestate)); g_defaults.dir.savestate, sizeof(global->dir.savestate));
if (!global->has_set.save_path && !string_is_empty(g_defaults.dir.sram)) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH) &&
!string_is_empty(g_defaults.dir.sram))
strlcpy(global->dir.savefile, strlcpy(global->dir.savefile,
g_defaults.dir.sram, sizeof(global->dir.savefile)); g_defaults.dir.sram, sizeof(global->dir.savefile));
if (!string_is_empty(g_defaults.dir.system)) if (!string_is_empty(g_defaults.dir.system))
@ -1531,23 +1533,27 @@ static bool config_load_file(const char *path, bool set_defaults)
} }
if (!rarch_ctl(RARCH_CTL_IS_FORCE_FULLSCREEN, NULL)) if (!rarch_ctl(RARCH_CTL_IS_FORCE_FULLSCREEN, NULL))
CONFIG_GET_BOOL_BASE(conf, settings, video.fullscreen, "video_fullscreen"); CONFIG_GET_BOOL_BASE(conf, settings, video.fullscreen, "video_fullscreen");
if (!global->has_set.ups_pref)
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_UPS_PREF))
{ {
CONFIG_GET_BOOL_BASE(conf, global, patch.ups_pref, "ups_pref"); CONFIG_GET_BOOL_BASE(conf, global, patch.ups_pref, "ups_pref");
} }
if (!global->has_set.bps_pref)
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_BPS_PREF))
{ {
CONFIG_GET_BOOL_BASE(conf, global, patch.bps_pref, "bps_pref"); CONFIG_GET_BOOL_BASE(conf, global, patch.bps_pref, "bps_pref");
} }
if (!global->has_set.ips_pref)
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_IPS_PREF))
{ {
CONFIG_GET_BOOL_BASE(conf, global, patch.ips_pref, "ips_pref"); CONFIG_GET_BOOL_BASE(conf, global, patch.ips_pref, "ips_pref");
} }
#ifdef HAVE_NETPLAY #ifdef HAVE_NETPLAY
if (!global->has_set.netplay_mode) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_MODE))
CONFIG_GET_BOOL_BASE(conf, global, netplay.is_spectate, CONFIG_GET_BOOL_BASE(conf, global, netplay.is_spectate,
"netplay_spectator_mode_enable"); "netplay_spectator_mode_enable");
if (!global->has_set.netplay_mode) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_MODE))
CONFIG_GET_BOOL_BASE(conf, global, netplay.is_client, "netplay_mode"); CONFIG_GET_BOOL_BASE(conf, global, netplay.is_client, "netplay_mode");
#endif #endif
#ifdef HAVE_NETWORKGAMEPAD #ifdef HAVE_NETWORKGAMEPAD
@ -1607,9 +1613,9 @@ static bool config_load_file(const char *path, bool set_defaults)
CONFIG_GET_INT_BASE(conf, settings, state_slot, "state_slot"); CONFIG_GET_INT_BASE(conf, settings, state_slot, "state_slot");
#ifdef HAVE_NETPLAY #ifdef HAVE_NETPLAY
if (!global->has_set.netplay_delay_frames) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_DELAY_FRAMES))
CONFIG_GET_INT_BASE(conf, global, netplay.sync_frames, "netplay_delay_frames"); CONFIG_GET_INT_BASE(conf, global, netplay.sync_frames, "netplay_delay_frames");
if (!global->has_set.netplay_ip_port) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_PORT))
CONFIG_GET_INT_BASE(conf, global, netplay.port, "netplay_ip_port"); CONFIG_GET_INT_BASE(conf, global, netplay.port, "netplay_ip_port");
#endif #endif
for (i = 0; i < MAX_USERS; i++) for (i = 0; i < MAX_USERS; i++)
@ -1825,11 +1831,13 @@ static bool config_load_file(const char *path, bool set_defaults)
strlcpy(settings->directory.screenshot, tmp_str, sizeof(settings->directory.screenshot)); strlcpy(settings->directory.screenshot, tmp_str, sizeof(settings->directory.screenshot));
if (config_get_path(conf, "video_shader_dir", tmp_str, sizeof(tmp_str))) if (config_get_path(conf, "video_shader_dir", tmp_str, sizeof(tmp_str)))
strlcpy(settings->directory.video_shader, tmp_str, sizeof(settings->directory.video_shader)); strlcpy(settings->directory.video_shader, tmp_str, sizeof(settings->directory.video_shader));
if (!global->has_set.libretro_directory)
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DIRECTORY))
{ {
if (config_get_path(conf, "libretro_directory", tmp_str, sizeof(tmp_str))) if (config_get_path(conf, "libretro_directory", tmp_str, sizeof(tmp_str)))
strlcpy(settings->directory.libretro, tmp_str, sizeof(settings->directory.libretro)); strlcpy(settings->directory.libretro, tmp_str, sizeof(settings->directory.libretro));
} }
#ifndef HAVE_DYNAMIC #ifndef HAVE_DYNAMIC
if (config_get_path(conf, "libretro_path", tmp_str, sizeof(tmp_str))) if (config_get_path(conf, "libretro_path", tmp_str, sizeof(tmp_str)))
config_set_active_core_path(tmp_str); config_set_active_core_path(tmp_str);
@ -1846,7 +1854,7 @@ static bool config_load_file(const char *path, bool set_defaults)
strlcpy(settings->username, tmp_str, sizeof(settings->username)); strlcpy(settings->username, tmp_str, sizeof(settings->username));
} }
#ifdef HAVE_NETPLAY #ifdef HAVE_NETPLAY
if (!global->has_set.netplay_ip_address) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS))
{ {
if (config_get_path(conf, "netplay_ip_address", tmp_str, sizeof(tmp_str))) if (config_get_path(conf, "netplay_ip_address", tmp_str, sizeof(tmp_str)))
strlcpy(global->netplay.server, tmp_str, sizeof(global->netplay.server)); strlcpy(global->netplay.server, tmp_str, sizeof(global->netplay.server));
@ -2016,7 +2024,7 @@ static bool config_load_file(const char *path, bool set_defaults)
settings->bluetooth_enable = path_file_exists(LAKKA_BLUETOOTH_PATH); settings->bluetooth_enable = path_file_exists(LAKKA_BLUETOOTH_PATH);
#endif #endif
if (!global->has_set.save_path && if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH) &&
config_get_path(conf, "savefile_directory", tmp_str, sizeof(tmp_str))) config_get_path(conf, "savefile_directory", tmp_str, sizeof(tmp_str)))
{ {
if (string_is_equal(tmp_str, "default")) if (string_is_equal(tmp_str, "default"))
@ -2037,7 +2045,7 @@ static bool config_load_file(const char *path, bool set_defaults)
RARCH_WARN("savefile_directory is not a directory, ignoring ...\n"); RARCH_WARN("savefile_directory is not a directory, ignoring ...\n");
} }
if (!global->has_set.state_path && if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_STATE_PATH) &&
config_get_path(conf, "savestate_directory", tmp_str, sizeof(tmp_str))) config_get_path(conf, "savestate_directory", tmp_str, sizeof(tmp_str)))
{ {
if (string_is_equal(tmp_str, "default")) if (string_is_equal(tmp_str, "default"))
@ -2175,8 +2183,8 @@ bool config_load_override(void)
strlcpy(buf, config_get_active_core_path(), sizeof(buf)); strlcpy(buf, config_get_active_core_path(), sizeof(buf));
/* Toggle has_save_path to false so it resets */ /* Toggle has_save_path to false so it resets */
global->has_set.save_path = false; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_STATE_PATH);
global->has_set.state_path = false; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_SAVE_PATH);
if (!config_load_file(global->path.config, false)) if (!config_load_file(global->path.config, false))
return false; return false;
@ -2187,8 +2195,9 @@ bool config_load_override(void)
runloop_msg_queue_push("Configuration override loaded.", 1, 100, true); runloop_msg_queue_push("Configuration override loaded.", 1, 100, true);
/* Reset save paths. */ /* Reset save paths. */
global->has_set.save_path = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_STATE_PATH);
global->has_set.state_path = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_SAVE_PATH);
return true; return true;
} }
@ -2210,16 +2219,16 @@ bool config_unload_override(void)
*global->path.append_config = '\0'; *global->path.append_config = '\0';
/* Toggle has_save_path to false so it resets */ /* Toggle has_save_path to false so it resets */
global->has_set.save_path = false; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_STATE_PATH);
global->has_set.state_path = false; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_SAVE_PATH);
if (config_load_file(global->path.config, false)) if (config_load_file(global->path.config, false))
{ {
RARCH_LOG("Overrides: configuration overrides unloaded, original configuration restored.\n"); RARCH_LOG("Overrides: configuration overrides unloaded, original configuration restored.\n");
/* Reset save paths */ /* Reset save paths */
global->has_set.save_path = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_STATE_PATH);
global->has_set.state_path = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_SAVE_PATH);
return true; return true;
} }
@ -3209,11 +3218,11 @@ bool config_save_file(const char *path)
config_set_bool(conf, tmp, settings->network_remote_enable_user[i]); config_set_bool(conf, tmp, settings->network_remote_enable_user[i]);
} }
#endif #endif
if (!global->has_set.ups_pref) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_UPS_PREF))
config_set_bool(conf, "ups_pref", global->patch.ups_pref); config_set_bool(conf, "ups_pref", global->patch.ups_pref);
if (!global->has_set.bps_pref) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_BPS_PREF))
config_set_bool(conf, "bps_pref", global->patch.bps_pref); config_set_bool(conf, "bps_pref", global->patch.bps_pref);
if (!global->has_set.ips_pref) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_IPS_PREF))
config_set_bool(conf, "ips_pref", global->patch.ips_pref); config_set_bool(conf, "ips_pref", global->patch.ips_pref);
config_set_bool(conf, "log_verbosity", config_set_bool(conf, "log_verbosity",
verbosity_is_enabled()); verbosity_is_enabled());

View File

@ -3512,14 +3512,20 @@ void general_write_handler(void *data)
break; break;
case MENU_ENUM_LABEL_NETPLAY_IP_ADDRESS: case MENU_ENUM_LABEL_NETPLAY_IP_ADDRESS:
#ifdef HAVE_NETPLAY #ifdef HAVE_NETPLAY
global->has_set.netplay_ip_address = (!string_is_empty(setting->value.target.string)); {
bool val = (!string_is_empty(setting->value.target.string));
if (val)
retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS);
else
retroarch_override_setting_unset(RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS);
}
#endif #endif
break; break;
case MENU_ENUM_LABEL_NETPLAY_MODE: case MENU_ENUM_LABEL_NETPLAY_MODE:
#ifdef HAVE_NETPLAY #ifdef HAVE_NETPLAY
if (!global->netplay.is_client) if (!global->netplay.is_client)
*global->netplay.server = '\0'; *global->netplay.server = '\0';
global->has_set.netplay_mode = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_NETPLAY_MODE);
#endif #endif
break; break;
case MENU_ENUM_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE: case MENU_ENUM_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE:
@ -3530,7 +3536,10 @@ void general_write_handler(void *data)
break; break;
case MENU_ENUM_LABEL_NETPLAY_DELAY_FRAMES: case MENU_ENUM_LABEL_NETPLAY_DELAY_FRAMES:
#ifdef HAVE_NETPLAY #ifdef HAVE_NETPLAY
global->has_set.netplay_delay_frames = (global->netplay.sync_frames > 0); {
bool val = (global->netplay.sync_frames > 0);
retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_NETPLAY_DELAY_FRAMES);
}
#endif #endif
break; break;
default: default:

View File

@ -389,7 +389,7 @@ static void retroarch_set_special_paths(char **argv, unsigned num_content)
/* We defer SRAM path updates until we can resolve it. /* We defer SRAM path updates until we can resolve it.
* It is more complicated for special content types. */ * It is more complicated for special content types. */
if (!global->has_set.state_path) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_STATE_PATH))
fill_pathname_noext(global->name.savestate, global->name.base, fill_pathname_noext(global->name.savestate, global->name.base,
file_path_str(FILE_PATH_STATE_EXTENSION), file_path_str(FILE_PATH_STATE_EXTENSION),
sizeof(global->name.savestate)); sizeof(global->name.savestate));
@ -708,21 +708,8 @@ static void retroarch_parse_input(int argc, char *argv[])
retroarch_override_setting_free_state(); retroarch_override_setting_free_state();
global->has_set.save_path = false;
global->has_set.state_path = false;
global->has_set.libretro_directory = false;
global->has_set.netplay_mode = false;
rarch_ctl(RARCH_CTL_USERNAME_UNSET, NULL); rarch_ctl(RARCH_CTL_USERNAME_UNSET, NULL);
global->has_set.netplay_ip_address = false;
global->has_set.netplay_delay_frames = false;
global->has_set.netplay_ip_port = false;
global->has_set.ups_pref = false;
global->has_set.bps_pref = false;
global->has_set.ips_pref = false;
global->patch.ups_pref = false; global->patch.ups_pref = false;
global->patch.bps_pref = false; global->patch.bps_pref = false;
global->patch.ips_pref = false; global->patch.ips_pref = false;
@ -804,7 +791,7 @@ static void retroarch_parse_input(int argc, char *argv[])
case 's': case 's':
strlcpy(global->name.savefile, optarg, strlcpy(global->name.savefile, optarg,
sizeof(global->name.savefile)); sizeof(global->name.savefile));
global->has_set.save_path = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_SAVE_PATH);
break; break;
case 'f': case 'f':
@ -814,7 +801,7 @@ static void retroarch_parse_input(int argc, char *argv[])
case 'S': case 'S':
strlcpy(global->name.savestate, optarg, strlcpy(global->name.savestate, optarg,
sizeof(global->name.savestate)); sizeof(global->name.savestate));
global->has_set.state_path = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_STATE_PATH);
break; break;
case 'v': case 'v':
@ -859,7 +846,7 @@ static void retroarch_parse_input(int argc, char *argv[])
sizeof(settings->directory.libretro)); sizeof(settings->directory.libretro));
retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_LIBRETRO); retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_LIBRETRO);
global->has_set.libretro_directory = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DIRECTORY);
RARCH_WARN("Using old --libretro behavior. " RARCH_WARN("Using old --libretro behavior. "
"Setting libretro_directory to \"%s\" instead.\n", "Setting libretro_directory to \"%s\" instead.\n",
optarg); optarg);
@ -915,13 +902,13 @@ static void retroarch_parse_input(int argc, char *argv[])
#ifdef HAVE_NETPLAY #ifdef HAVE_NETPLAY
case 'H': case 'H':
global->has_set.netplay_ip_address = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS);
global->netplay.enable = true; global->netplay.enable = true;
*global->netplay.server = '\0'; *global->netplay.server = '\0';
break; break;
case 'C': case 'C':
global->has_set.netplay_ip_address = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS);
global->netplay.enable = true; global->netplay.enable = true;
strlcpy(global->netplay.server, optarg, strlcpy(global->netplay.server, optarg,
sizeof(global->netplay.server)); sizeof(global->netplay.server));
@ -929,7 +916,7 @@ static void retroarch_parse_input(int argc, char *argv[])
case 'F': case 'F':
global->netplay.sync_frames = strtol(optarg, NULL, 0); global->netplay.sync_frames = strtol(optarg, NULL, 0);
global->has_set.netplay_delay_frames = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_NETPLAY_DELAY_FRAMES);
break; break;
#endif #endif
@ -937,21 +924,21 @@ static void retroarch_parse_input(int argc, char *argv[])
strlcpy(global->name.bps, optarg, strlcpy(global->name.bps, optarg,
sizeof(global->name.bps)); sizeof(global->name.bps));
global->patch.bps_pref = true; global->patch.bps_pref = true;
global->has_set.bps_pref = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_BPS_PREF);
break; break;
case 'U': case 'U':
strlcpy(global->name.ups, optarg, strlcpy(global->name.ups, optarg,
sizeof(global->name.ups)); sizeof(global->name.ups));
global->patch.ups_pref = true; global->patch.ups_pref = true;
global->has_set.ups_pref = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_UPS_PREF);
break; break;
case RA_OPT_IPS: case RA_OPT_IPS:
strlcpy(global->name.ips, optarg, strlcpy(global->name.ips, optarg,
sizeof(global->name.ips)); sizeof(global->name.ips));
global->patch.ips_pref = true; global->patch.ips_pref = true;
global->has_set.ips_pref = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_IPS_PREF);
break; break;
case RA_OPT_NO_PATCH: case RA_OPT_NO_PATCH:
@ -970,12 +957,12 @@ static void retroarch_parse_input(int argc, char *argv[])
#ifdef HAVE_NETPLAY #ifdef HAVE_NETPLAY
case RA_OPT_PORT: case RA_OPT_PORT:
global->has_set.netplay_ip_port = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_PORT);
global->netplay.port = strtoul(optarg, NULL, 0); global->netplay.port = strtoul(optarg, NULL, 0);
break; break;
case RA_OPT_SPECTATE: case RA_OPT_SPECTATE:
global->has_set.netplay_mode = true; retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_NETPLAY_MODE);
global->netplay.is_spectate = true; global->netplay.is_spectate = true;
break; break;
@ -1087,12 +1074,12 @@ static void retroarch_parse_input(int argc, char *argv[])
content_set_does_not_need_content(); content_set_does_not_need_content();
/* Copy SRM/state dirs used, so they can be reused on reentrancy. */ /* Copy SRM/state dirs used, so they can be reused on reentrancy. */
if (global->has_set.save_path && if (retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH) &&
path_is_directory(global->name.savefile)) path_is_directory(global->name.savefile))
strlcpy(global->dir.savefile, global->name.savefile, strlcpy(global->dir.savefile, global->name.savefile,
sizeof(global->dir.savefile)); sizeof(global->dir.savefile));
if (global->has_set.state_path && if (retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_STATE_PATH) &&
path_is_directory(global->name.savestate)) path_is_directory(global->name.savestate))
strlcpy(global->dir.savestate, global->name.savestate, strlcpy(global->dir.savestate, global->name.savestate,
sizeof(global->dir.savestate)); sizeof(global->dir.savestate));
@ -1161,11 +1148,12 @@ static void retroarch_init_savefile_paths(void)
} }
/* Let other relevant paths be inferred from the main SRAM location. */ /* Let other relevant paths be inferred from the main SRAM location. */
if (!global->has_set.save_path) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH))
fill_pathname_noext(global->name.savefile, fill_pathname_noext(global->name.savefile,
global->name.base, global->name.base,
file_path_str(FILE_PATH_SRM_EXTENSION), file_path_str(FILE_PATH_SRM_EXTENSION),
sizeof(global->name.savefile)); sizeof(global->name.savefile));
if (path_is_directory(global->name.savefile)) if (path_is_directory(global->name.savefile))
{ {
fill_pathname_dir(global->name.savefile, fill_pathname_dir(global->name.savefile,
@ -1583,11 +1571,11 @@ void retroarch_set_pathnames(const char *path)
retroarch_set_basename(path); retroarch_set_basename(path);
if (!global->has_set.save_path) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH))
fill_pathname_noext(global->name.savefile, global->name.base, fill_pathname_noext(global->name.savefile, global->name.base,
file_path_str(FILE_PATH_SRM_EXTENSION), sizeof(global->name.savefile)); file_path_str(FILE_PATH_SRM_EXTENSION), sizeof(global->name.savefile));
if (!global->has_set.state_path) if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_STATE_PATH))
fill_pathname_noext(global->name.savestate, global->name.base, fill_pathname_noext(global->name.savestate, global->name.base,
file_path_str(FILE_PATH_STATE_EXTENSION), sizeof(global->name.savestate)); file_path_str(FILE_PATH_STATE_EXTENSION), sizeof(global->name.savestate));
@ -1623,8 +1611,18 @@ void retroarch_fill_pathnames(void)
sizeof(global->name.ips)); sizeof(global->name.ips));
} }
static bool has_set_verbosity = false; static bool has_set_verbosity = false;
static bool has_set_libretro = false; static bool has_set_libretro = false;
static bool has_set_libretro_directory = false;
static bool has_set_save_path = false;
static bool has_set_state_path = false;
static bool has_set_netplay_mode = false;
static bool has_set_netplay_ip_address = false;
static bool has_set_netplay_ip_port = false;
static bool has_set_netplay_delay_frames= false;
static bool has_set_ups_pref = false;
static bool has_set_bps_pref = false;
static bool has_set_ips_pref = false;
bool retroarch_override_setting_is_set(enum rarch_override_setting enum_idx) bool retroarch_override_setting_is_set(enum rarch_override_setting enum_idx)
{ {
@ -1634,6 +1632,27 @@ bool retroarch_override_setting_is_set(enum rarch_override_setting enum_idx)
return has_set_verbosity; return has_set_verbosity;
case RARCH_OVERRIDE_SETTING_LIBRETRO: case RARCH_OVERRIDE_SETTING_LIBRETRO:
return has_set_libretro; return has_set_libretro;
case RARCH_OVERRIDE_SETTING_LIBRETRO_DIRECTORY:
return has_set_libretro_directory;
case RARCH_OVERRIDE_SETTING_SAVE_PATH:
return has_set_save_path;
case RARCH_OVERRIDE_SETTING_STATE_PATH:
return has_set_state_path;
case RARCH_OVERRIDE_SETTING_NETPLAY_MODE:
return has_set_netplay_mode;
case RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS:
return has_set_netplay_ip_address;
case RARCH_OVERRIDE_SETTING_NETPLAY_IP_PORT:
return has_set_netplay_ip_port;
case RARCH_OVERRIDE_SETTING_NETPLAY_DELAY_FRAMES:
return has_set_netplay_delay_frames;
case RARCH_OVERRIDE_SETTING_UPS_PREF:
return has_set_ups_pref;
case RARCH_OVERRIDE_SETTING_BPS_PREF:
return has_set_bps_pref;
case RARCH_OVERRIDE_SETTING_IPS_PREF:
return has_set_ips_pref;
case RARCH_OVERRIDE_SETTING_NONE: case RARCH_OVERRIDE_SETTING_NONE:
default: default:
break; break;
@ -1652,6 +1671,36 @@ void retroarch_override_setting_set(enum rarch_override_setting enum_idx)
case RARCH_OVERRIDE_SETTING_LIBRETRO: case RARCH_OVERRIDE_SETTING_LIBRETRO:
has_set_libretro = true; has_set_libretro = true;
break; break;
case RARCH_OVERRIDE_SETTING_LIBRETRO_DIRECTORY:
has_set_libretro_directory = true;
break;
case RARCH_OVERRIDE_SETTING_SAVE_PATH:
has_set_save_path = true;
break;
case RARCH_OVERRIDE_SETTING_STATE_PATH:
has_set_state_path = true;
break;
case RARCH_OVERRIDE_SETTING_NETPLAY_MODE:
has_set_netplay_mode = true;
break;
case RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS:
has_set_netplay_ip_address = true;
break;
case RARCH_OVERRIDE_SETTING_NETPLAY_IP_PORT:
has_set_netplay_ip_port = true;
break;
case RARCH_OVERRIDE_SETTING_NETPLAY_DELAY_FRAMES:
has_set_netplay_delay_frames = true;
break;
case RARCH_OVERRIDE_SETTING_UPS_PREF:
has_set_ups_pref = true;
break;
case RARCH_OVERRIDE_SETTING_BPS_PREF:
has_set_bps_pref = true;
break;
case RARCH_OVERRIDE_SETTING_IPS_PREF:
has_set_ips_pref = true;
break;
case RARCH_OVERRIDE_SETTING_NONE: case RARCH_OVERRIDE_SETTING_NONE:
default: default:
break; break;
@ -1668,6 +1717,36 @@ void retroarch_override_setting_unset(enum rarch_override_setting enum_idx)
case RARCH_OVERRIDE_SETTING_LIBRETRO: case RARCH_OVERRIDE_SETTING_LIBRETRO:
has_set_libretro = false; has_set_libretro = false;
break; break;
case RARCH_OVERRIDE_SETTING_LIBRETRO_DIRECTORY:
has_set_libretro_directory = false;
break;
case RARCH_OVERRIDE_SETTING_SAVE_PATH:
has_set_save_path = false;
break;
case RARCH_OVERRIDE_SETTING_STATE_PATH:
has_set_state_path = false;
break;
case RARCH_OVERRIDE_SETTING_NETPLAY_MODE:
has_set_netplay_mode = false;
break;
case RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS:
has_set_netplay_ip_address = false;
break;
case RARCH_OVERRIDE_SETTING_NETPLAY_IP_PORT:
has_set_netplay_ip_port = false;
break;
case RARCH_OVERRIDE_SETTING_NETPLAY_DELAY_FRAMES:
has_set_netplay_delay_frames = false;
break;
case RARCH_OVERRIDE_SETTING_UPS_PREF:
has_set_ups_pref = false;
break;
case RARCH_OVERRIDE_SETTING_BPS_PREF:
has_set_bps_pref = false;
break;
case RARCH_OVERRIDE_SETTING_IPS_PREF:
has_set_ips_pref = false;
break;
case RARCH_OVERRIDE_SETTING_NONE: case RARCH_OVERRIDE_SETTING_NONE:
default: default:
break; break;

View File

@ -103,6 +103,16 @@ enum rarch_override_setting
RARCH_OVERRIDE_SETTING_NONE = 0, RARCH_OVERRIDE_SETTING_NONE = 0,
RARCH_OVERRIDE_SETTING_LIBRETRO, RARCH_OVERRIDE_SETTING_LIBRETRO,
RARCH_OVERRIDE_SETTING_VERBOSITY, RARCH_OVERRIDE_SETTING_VERBOSITY,
RARCH_OVERRIDE_SETTING_LIBRETRO_DIRECTORY,
RARCH_OVERRIDE_SETTING_SAVE_PATH,
RARCH_OVERRIDE_SETTING_STATE_PATH,
RARCH_OVERRIDE_SETTING_NETPLAY_MODE,
RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS,
RARCH_OVERRIDE_SETTING_NETPLAY_IP_PORT,
RARCH_OVERRIDE_SETTING_NETPLAY_DELAY_FRAMES,
RARCH_OVERRIDE_SETTING_UPS_PREF,
RARCH_OVERRIDE_SETTING_BPS_PREF,
RARCH_OVERRIDE_SETTING_IPS_PREF,
RARCH_OVERRIDE_SETTING_LAST RARCH_OVERRIDE_SETTING_LAST
}; };

View File

@ -179,20 +179,7 @@ typedef struct global
struct struct
{ {
bool save_path;
bool state_path;
bool libretro_device[MAX_USERS]; bool libretro_device[MAX_USERS];
bool libretro_directory;
bool netplay_mode;
bool netplay_ip_address;
bool netplay_delay_frames;
bool netplay_ip_port;
bool ups_pref;
bool bps_pref;
bool ips_pref;
} has_set; } has_set;
struct struct