Some cleanups in settings saving/load defaults.

This commit is contained in:
Themaister 2013-09-15 16:03:43 +02:00
parent aecbf71a90
commit ce6de72181
6 changed files with 36 additions and 56 deletions

View File

@ -564,8 +564,6 @@ void menu_init(void)
rgui->current_pad = 0;
menu_update_libretro_info();
if (*g_extern.config_path)
fill_pathname_basedir(rgui->config_dir, g_extern.config_path, sizeof(rgui->config_dir));
#ifdef HAVE_FILEBROWSER
if (!(strlen(g_settings.rgui_browser_directory) > 0))

View File

@ -248,7 +248,6 @@ typedef struct
#ifdef HAVE_DYNAMIC
char libretro_dir[PATH_MAX];
#endif
char config_dir[PATH_MAX];
struct retro_system_info info;
bool load_no_rom;

View File

@ -2380,7 +2380,7 @@ static int rgui_settings_iterate(rgui_handle_t *rgui, rgui_action_t action)
#endif
}
else if (type == RGUI_SETTINGS_CONFIG)
label = rgui->config_dir;
label = g_settings.rgui_config_directory;
else if (type == RGUI_SETTINGS_DISK_APPEND)
label = rgui->base_path;

View File

@ -286,6 +286,7 @@ struct settings
#if defined(HAVE_RGUI) || defined(HAVE_RMENU)
char rgui_browser_directory[PATH_MAX];
char rgui_config_directory[PATH_MAX];
#endif
};

View File

@ -43,6 +43,9 @@
# Sets start directory for RGUI ROM browser.
# rgui_browser_directory =
# Sets start directory for RGUI config browser.
# rgui_config_directory =
# Flushes config to disk on exit. Useful for RGUI as settings can be modified.
# Overwrites the config. #include's and comments are not preserved.
# config_save_on_exit = false

View File

@ -244,6 +244,7 @@ void config_set_defaults(void)
g_settings.input.autoconf_binds[i][j].joyaxis = AXIS_NONE;
}
}
memset(g_settings.input.autoconfigured, 0, sizeof(g_settings.input.autoconfigured));
// Verify that binds are in proper order.
for (int i = 0; i < MAX_PLAYERS; i++)
@ -275,6 +276,20 @@ void config_set_defaults(void)
g_extern.console.screen.viewports.custom_vp.x = 0;
g_extern.console.screen.viewports.custom_vp.y = 0;
// Make sure settings from other configs carry over into defaults for another config.
*g_settings.core_options_path = '\0';
*g_settings.game_history_path = '\0';
*g_settings.cheat_database = '\0';
*g_settings.cheat_settings_path = '\0';
*g_settings.screenshot_directory = '\0';
*g_settings.system_directory = '\0';
*g_settings.input.autoconfig_dir = '\0';
*g_settings.input.overlay = '\0';
#if defined(HAVE_RGUI) || defined(HAVE_RMENU)
*g_settings.rgui_browser_directory = '\0';
*g_settings.rgui_config_directory = '\0';
#endif
#ifdef RARCH_CONSOLE
g_extern.lifecycle_mode_state |= ((1ULL << MODE_INFO_DRAW) | (1ULL << MODE_MENU));
@ -684,6 +699,9 @@ bool config_load_file(const char *path)
CONFIG_GET_PATH(rgui_browser_directory, "rgui_browser_directory");
if (!strcmp(g_settings.rgui_browser_directory, "default"))
*g_settings.rgui_browser_directory = '\0';
CONFIG_GET_PATH(rgui_config_directory, "rgui_config_directory");
if (!strcmp(g_settings.rgui_config_directory, "default"))
*g_settings.rgui_config_directory = '\0';
#endif
#ifdef HAVE_OVERLAY
@ -1014,39 +1032,18 @@ bool config_save_file(const char *path)
config_set_bool(conf, "audio_rate_control", g_settings.audio.rate_control);
config_set_float(conf, "audio_rate_control_delta", g_settings.audio.rate_control_delta);
if (*g_settings.system_directory)
config_set_string(conf, "system_directory", g_settings.system_directory);
else
config_set_string(conf, "system_directory", "default");
if (*g_extern.savefile_dir)
config_set_string(conf, "savefile_directory", g_extern.savefile_dir);
else
config_set_string(conf, "savefile_directory", "default");
if (*g_extern.savestate_dir)
config_set_string(conf, "savestate_directory", g_extern.savestate_dir);
else
config_set_string(conf, "savestate_directory", "default");
if (*g_settings.video.shader_dir)
config_set_string(conf, "video_shader_dir", g_settings.video.shader_dir);
else
config_set_string(conf, "video_shader_dir", "default");
config_set_string(conf, "system_directory", *g_settings.system_directory ? g_settings.system_directory : "default");
config_set_string(conf, "savefile_directory", *g_extern.savefile_dir ? g_extern.savefile_dir : "default");
config_set_string(conf, "savestate_directory", *g_extern.savestate_dir ? g_extern.savestate_dir : "default");
config_set_string(conf, "video_shader_dir", *g_settings.video.shader_dir ? g_settings.video.shader_dir : "default");
#if defined(HAVE_RGUI) || defined(HAVE_RMENU)
if (*g_settings.rgui_browser_directory)
config_set_string(conf, "rgui_browser_directory", g_settings.rgui_browser_directory);
else
config_set_string(conf, "rgui_browser_directory", "default");
config_set_string(conf, "rgui_browser_directory", *g_settings.rgui_browser_directory ? g_settings.rgui_browser_directory : "default");
config_set_string(conf, "rgui_config_directory", *g_settings.rgui_config_directory ? g_settings.rgui_config_directory : "default");
#endif
#ifdef HAVE_OVERLAY
if (*g_extern.overlay_dir)
config_set_string(conf, "overlay_directory", g_extern.overlay_dir);
else
config_set_string(conf, "overlay_directory", "default");
config_set_string(conf, "overlay_directory", *g_extern.overlay_dir ? g_extern.overlay_dir : "default");
config_set_string(conf, "input_overlay", g_settings.input.overlay);
config_set_float(conf, "input_overlay_opacity", g_settings.input.overlay_opacity);
config_set_float(conf, "input_overlay_scale", g_settings.input.overlay_scale);
@ -1064,25 +1061,10 @@ bool config_save_file(const char *path)
#ifdef _XBOX1
config_set_int(conf, "sound_volume_level", g_extern.console.sound.volume_level);
#endif
if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE))
config_set_bool(conf, "triple_buffering_enable", true);
else
config_set_bool(conf, "triple_buffering_enable", false);
if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW))
config_set_bool(conf, "info_msg_enable", true);
else
config_set_bool(conf, "info_msg_enable", false);
if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_SOFT_FILTER_ENABLE))
config_set_bool(conf, "soft_filter_enable", true);
else
config_set_bool(conf, "soft_filter_enable", false);
if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_FLICKER_FILTER_ENABLE))
config_set_bool(conf, "flicker_filter_enable", true);
else
config_set_bool(conf, "flicker_filter_enable", false);
config_set_bool(conf, "triple_buffering_enable", g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE));
config_set_bool(conf, "info_msg_enable", g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW));
config_set_bool(conf, "soft_filter_enable", g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_SOFT_FILTER_ENABLE));
config_set_bool(conf, "flicker_filter_enable", g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_FLICKER_FILTER_ENABLE));
config_set_int(conf, "flicker_filter_index", g_extern.console.screen.flicker_filter_index);
config_set_int(conf, "soft_filter_index", g_extern.console.screen.soft_filter_index);
@ -1101,11 +1083,8 @@ bool config_save_file(const char *path)
config_set_int(conf, "sound_mode", g_extern.console.sound.mode);
config_set_int(conf, "state_slot", g_extern.state_slot);
config_set_int(conf, "audio_mute", g_extern.audio_data.mute);
if (g_extern.lifecycle_mode_state & (1ULL << MODE_AUDIO_CUSTOM_BGM_ENABLE))
config_set_bool(conf, "custom_bgm_enable", true);
else
config_set_bool(conf, "custom_bgm_enable", false);
config_set_int(conf, "screen_orientation", g_extern.console.screen.orientation);
config_set_bool(conf, "custom_bgm_enable", g_extern.lifecycle_mode_state & (1ULL << MODE_AUDIO_CUSTOM_BGM_ENABLE));
for (unsigned i = 0; i < MAX_PLAYERS; i++)
{