When settings struct gets modified, go through macros to set

the modified flag
This commit is contained in:
twinaphex 2020-03-05 13:00:43 +01:00
parent f87bd0c190
commit d592959be8
6 changed files with 209 additions and 163 deletions

View File

@ -2047,54 +2047,69 @@ void config_set_defaults(void *data)
} }
if (def_camera) if (def_camera)
strlcpy(settings->arrays.camera_driver, configuration_set_string(settings,
def_camera, sizeof(settings->arrays.camera_driver)); settings->arrays.camera_driver,
def_camera);
if (def_wifi) if (def_wifi)
strlcpy(settings->arrays.wifi_driver, configuration_set_string(settings,
def_wifi, sizeof(settings->arrays.wifi_driver)); settings->arrays.wifi_driver,
def_wifi);
if (def_led) if (def_led)
strlcpy(settings->arrays.led_driver, configuration_set_string(settings,
def_led, sizeof(settings->arrays.led_driver)); settings->arrays.led_driver,
def_led);
if (def_location) if (def_location)
strlcpy(settings->arrays.location_driver, configuration_set_string(settings,
def_location, sizeof(settings->arrays.location_driver)); settings->arrays.location_driver,
def_location);
if (def_video) if (def_video)
strlcpy(settings->arrays.video_driver, configuration_set_string(settings,
def_video, sizeof(settings->arrays.video_driver)); settings->arrays.video_driver,
def_video);
if (def_audio) if (def_audio)
strlcpy(settings->arrays.audio_driver, configuration_set_string(settings,
def_audio, sizeof(settings->arrays.audio_driver)); settings->arrays.audio_driver,
def_audio);
if (def_audio_resampler) if (def_audio_resampler)
strlcpy(settings->arrays.audio_resampler, configuration_set_string(settings,
def_audio_resampler, sizeof(settings->arrays.audio_resampler)); settings->arrays.audio_resampler,
def_audio_resampler);
if (def_input) if (def_input)
strlcpy(settings->arrays.input_driver, configuration_set_string(settings,
def_input, sizeof(settings->arrays.input_driver)); settings->arrays.input_driver,
def_input);
if (def_joypad) if (def_joypad)
strlcpy(settings->arrays.input_joypad_driver, configuration_set_string(settings,
def_joypad, sizeof(settings->arrays.input_joypad_driver)); settings->arrays.input_joypad_driver,
def_joypad);
if (def_record) if (def_record)
strlcpy(settings->arrays.record_driver, configuration_set_string(settings,
def_record, sizeof(settings->arrays.record_driver)); settings->arrays.record_driver,
def_record);
if (def_midi) if (def_midi)
strlcpy(settings->arrays.midi_driver, configuration_set_string(settings,
def_midi, sizeof(settings->arrays.midi_driver)); settings->arrays.midi_driver,
def_midi);
if (def_mitm) if (def_mitm)
strlcpy(settings->arrays.netplay_mitm_server, configuration_set_string(settings,
def_mitm, sizeof(settings->arrays.netplay_mitm_server)); settings->arrays.netplay_mitm_server,
def_mitm);
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (def_menu) if (def_menu)
strlcpy(settings->arrays.menu_driver, configuration_set_string(settings,
def_menu, sizeof(settings->arrays.menu_driver)); settings->arrays.menu_driver,
def_menu);
#ifdef HAVE_XMB #ifdef HAVE_XMB
*settings->paths.path_menu_xmb_font = '\0'; *settings->paths.path_menu_xmb_font = '\0';
#endif #endif
strlcpy(settings->arrays.discord_app_id, configuration_set_string(settings,
DEFAULT_DISCORD_APP_ID, sizeof(settings->arrays.discord_app_id)); settings->arrays.discord_app_id,
DEFAULT_DISCORD_APP_ID);
strlcpy(settings->arrays.ai_service_url, configuration_set_string(settings,
DEFAULT_AI_SERVICE_URL, sizeof(settings->arrays.ai_service_url)); settings->arrays.ai_service_url,
DEFAULT_AI_SERVICE_URL);
#ifdef HAVE_MATERIALUI #ifdef HAVE_MATERIALUI
@ -2121,8 +2136,9 @@ void config_set_defaults(void *data)
settings->floats.video_refresh_rate = g_defaults.settings.video_refresh_rate; settings->floats.video_refresh_rate = g_defaults.settings.video_refresh_rate;
if (DEFAULT_AUDIO_DEVICE) if (DEFAULT_AUDIO_DEVICE)
strlcpy(settings->arrays.audio_device, configuration_set_string(settings,
DEFAULT_AUDIO_DEVICE, sizeof(settings->arrays.audio_device)); settings->arrays.audio_device,
DEFAULT_AUDIO_DEVICE);
if (!g_defaults.settings.out_latency) if (!g_defaults.settings.out_latency)
g_defaults.settings.out_latency = DEFAULT_OUT_LATENCY; g_defaults.settings.out_latency = DEFAULT_OUT_LATENCY;
@ -2135,16 +2151,20 @@ void config_set_defaults(void *data)
#endif #endif
#ifdef HAVE_LAKKA #ifdef HAVE_LAKKA
settings->bools.ssh_enable = filestream_exists(LAKKA_SSH_PATH); configuration_set_bool(settings,
settings->bools.samba_enable = filestream_exists(LAKKA_SAMBA_PATH); settings->bools.ssh_enable, filestream_exists(LAKKA_SSH_PATH));
settings->bools.bluetooth_enable = filestream_exists(LAKKA_BLUETOOTH_PATH); configuration_set_bool(settings,
settings->bools.localap_enable = false; settings->bools.samba_enable, filestream_exists(LAKKA_SAMBA_PATH));
configuration_set_bool(settings,
settings->bools.bluetooth_enable, filestream_exists(LAKKA_BLUETOOTH_PATH));
configuration_set_bool(settings, settings->bools.localap_enable, false);
#endif #endif
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (first_initialized) if (first_initialized)
settings->bools.menu_show_start_screen = configuration_set_bool(settings,
DEFAULT_MENU_SHOW_START_SCREEN; settings->bools.menu_show_start_screen,
DEFAULT_MENU_SHOW_START_SCREEN);
#endif #endif
#ifdef HAVE_CHEEVOS #ifdef HAVE_CHEEVOS
@ -2170,11 +2190,11 @@ void config_set_defaults(void *data)
} }
} }
strlcpy(settings->paths.network_buildbot_url, DEFAULT_BUILDBOT_SERVER_URL, configuration_set_string(settings,
sizeof(settings->paths.network_buildbot_url)); settings->paths.network_buildbot_url, DEFAULT_BUILDBOT_SERVER_URL);
strlcpy(settings->paths.network_buildbot_assets_url, configuration_set_string(settings,
DEFAULT_BUILDBOT_ASSETS_SERVER_URL, settings->paths.network_buildbot_assets_url,
sizeof(settings->paths.network_buildbot_assets_url)); DEFAULT_BUILDBOT_ASSETS_SERVER_URL);
*settings->arrays.input_keyboard_layout = '\0'; *settings->arrays.input_keyboard_layout = '\0';
@ -2265,68 +2285,68 @@ void config_set_defaults(void *data)
video_driver_default_settings(); video_driver_default_settings();
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_WALLPAPERS])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_WALLPAPERS]))
strlcpy(settings->paths.directory_dynamic_wallpapers, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_WALLPAPERS], settings->paths.directory_dynamic_wallpapers,
sizeof(settings->paths.directory_dynamic_wallpapers)); g_defaults.dirs[DEFAULT_DIR_WALLPAPERS]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS]))
strlcpy(settings->paths.directory_thumbnails, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_THUMBNAILS], settings->paths.directory_thumbnails,
sizeof(settings->paths.directory_thumbnails)); g_defaults.dirs[DEFAULT_DIR_THUMBNAILS]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_REMAP])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_REMAP]))
strlcpy(settings->paths.directory_input_remapping, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_REMAP], settings->paths.directory_input_remapping,
sizeof(settings->paths.directory_input_remapping)); g_defaults.dirs[DEFAULT_DIR_REMAP]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CACHE])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CACHE]))
strlcpy(settings->paths.directory_cache, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_CACHE], settings->paths.directory_cache,
sizeof(settings->paths.directory_cache)); g_defaults.dirs[DEFAULT_DIR_CACHE]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_ASSETS])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_ASSETS]))
strlcpy(settings->paths.directory_assets, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_ASSETS], settings->paths.directory_assets,
sizeof(settings->paths.directory_assets)); g_defaults.dirs[DEFAULT_DIR_ASSETS]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]))
strlcpy(settings->paths.directory_core_assets, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS], settings->paths.directory_core_assets,
sizeof(settings->paths.directory_core_assets)); g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_PLAYLIST])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_PLAYLIST]))
strlcpy(settings->paths.directory_playlist, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_PLAYLIST], settings->paths.directory_playlist,
sizeof(settings->paths.directory_playlist)); g_defaults.dirs[DEFAULT_DIR_PLAYLIST]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CORE])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CORE]))
fill_pathname_expand_special(settings->paths.directory_libretro, fill_pathname_expand_special(settings->paths.directory_libretro,
g_defaults.dirs[DEFAULT_DIR_CORE], g_defaults.dirs[DEFAULT_DIR_CORE],
sizeof(settings->paths.directory_libretro)); sizeof(settings->paths.directory_libretro));
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER]))
strlcpy(settings->paths.directory_audio_filter, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER], settings->paths.directory_audio_filter,
sizeof(settings->paths.directory_audio_filter)); g_defaults.dirs[DEFAULT_DIR_AUDIO_FILTER]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]))
strlcpy(settings->paths.directory_video_filter, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER], settings->paths.directory_video_filter,
sizeof(settings->paths.directory_video_filter)); g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SHADER])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SHADER]))
fill_pathname_expand_special(settings->paths.directory_video_shader, fill_pathname_expand_special(settings->paths.directory_video_shader,
g_defaults.dirs[DEFAULT_DIR_SHADER], g_defaults.dirs[DEFAULT_DIR_SHADER],
sizeof(settings->paths.directory_video_shader)); sizeof(settings->paths.directory_video_shader));
if (!string_is_empty(g_defaults.path.buildbot_server_url)) if (!string_is_empty(g_defaults.path.buildbot_server_url))
strlcpy(settings->paths.network_buildbot_url, configuration_set_string(settings,
g_defaults.path.buildbot_server_url, settings->paths.network_buildbot_url,
sizeof(settings->paths.network_buildbot_url)); g_defaults.path.buildbot_server_url);
if (!string_is_empty(g_defaults.path.core)) if (!string_is_empty(g_defaults.path.core))
path_set(RARCH_PATH_CORE, g_defaults.path.core); path_set(RARCH_PATH_CORE, g_defaults.path.core);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_DATABASE])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_DATABASE]))
strlcpy(settings->paths.path_content_database, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_DATABASE], settings->paths.path_content_database,
sizeof(settings->paths.path_content_database)); g_defaults.dirs[DEFAULT_DIR_DATABASE]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CURSOR])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CURSOR]))
strlcpy(settings->paths.directory_cursor, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_CURSOR], settings->paths.directory_cursor,
sizeof(settings->paths.directory_cursor)); g_defaults.dirs[DEFAULT_DIR_CURSOR]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CHEATS])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CHEATS]))
strlcpy(settings->paths.path_cheat_database, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_CHEATS], settings->paths.path_cheat_database,
sizeof(settings->paths.path_cheat_database)); g_defaults.dirs[DEFAULT_DIR_CHEATS]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CORE_INFO])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]))
fill_pathname_expand_special(settings->paths.path_libretro_info, fill_pathname_expand_special(settings->paths.path_libretro_info,
g_defaults.dirs[DEFAULT_DIR_CORE_INFO], g_defaults.dirs[DEFAULT_DIR_CORE_INFO],
@ -2358,9 +2378,9 @@ void config_set_defaults(void *data)
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG]))
{ {
strlcpy(settings->paths.directory_menu_config, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG], settings->paths.directory_menu_config,
sizeof(settings->paths.directory_menu_config)); g_defaults.dirs[DEFAULT_DIR_MENU_CONFIG]);
#if TARGET_OS_IPHONE #if TARGET_OS_IPHONE
{ {
char *config_file_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); char *config_file_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
@ -2375,14 +2395,14 @@ void config_set_defaults(void *data)
} }
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_MENU_CONTENT])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_MENU_CONTENT]))
strlcpy(settings->paths.directory_menu_content, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_MENU_CONTENT], settings->paths.directory_menu_content,
sizeof(settings->paths.directory_menu_content)); g_defaults.dirs[DEFAULT_DIR_MENU_CONTENT]);
#endif #endif
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG]))
strlcpy(settings->paths.directory_autoconfig, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG], settings->paths.directory_autoconfig,
sizeof(settings->paths.directory_autoconfig)); g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SAVESTATE])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SAVESTATE]))
dir_set(RARCH_DIR_SAVESTATE, g_defaults.dirs[DEFAULT_DIR_SAVESTATE]); dir_set(RARCH_DIR_SAVESTATE, g_defaults.dirs[DEFAULT_DIR_SAVESTATE]);
@ -2391,26 +2411,25 @@ void config_set_defaults(void *data)
dir_set(RARCH_DIR_SAVEFILE, g_defaults.dirs[DEFAULT_DIR_SRAM]); dir_set(RARCH_DIR_SAVEFILE, g_defaults.dirs[DEFAULT_DIR_SRAM]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SYSTEM])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SYSTEM]))
strlcpy(settings->paths.directory_system, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_SYSTEM], settings->paths.directory_system,
sizeof(settings->paths.directory_system)); g_defaults.dirs[DEFAULT_DIR_SYSTEM]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT]))
strlcpy(settings->paths.directory_screenshot, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_SCREENSHOT], settings->paths.directory_screenshot,
sizeof(settings->paths.directory_screenshot)); g_defaults.dirs[DEFAULT_DIR_SCREENSHOT]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_RESAMPLER])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_RESAMPLER]))
strlcpy(settings->paths.directory_resampler, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_RESAMPLER], settings->paths.directory_resampler,
sizeof(settings->paths.directory_resampler)); g_defaults.dirs[DEFAULT_DIR_RESAMPLER]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CONTENT_HISTORY])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_CONTENT_HISTORY]))
strlcpy(settings->paths.directory_content_history, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_CONTENT_HISTORY], settings->paths.directory_content_history,
sizeof(settings->paths.directory_content_history)); g_defaults.dirs[DEFAULT_DIR_CONTENT_HISTORY]);
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_LOGS])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_LOGS]))
strlcpy(settings->paths.log_dir, configuration_set_string(settings,
g_defaults.dirs[DEFAULT_DIR_LOGS], settings->paths.log_dir,
sizeof(settings->paths.log_dir)); g_defaults.dirs[DEFAULT_DIR_LOGS]);
if (!string_is_empty(g_defaults.path.config)) if (!string_is_empty(g_defaults.path.config))
{ {
@ -2425,10 +2444,12 @@ void config_set_defaults(void *data)
free(temp_str); free(temp_str);
} }
strlcpy(settings->arrays.midi_input, configuration_set_string(settings,
DEFAULT_MIDI_INPUT, sizeof(settings->arrays.midi_input)); settings->arrays.midi_input,
strlcpy(settings->arrays.midi_output, DEFAULT_MIDI_INPUT);
DEFAULT_MIDI_OUTPUT, sizeof(settings->arrays.midi_output)); configuration_set_string(settings,
settings->arrays.midi_output,
DEFAULT_MIDI_OUTPUT);
#ifdef HAVE_CONFIGFILE #ifdef HAVE_CONFIGFILE
/* Avoid reloading config on every content load */ /* Avoid reloading config on every content load */
@ -2459,7 +2480,6 @@ void config_load(void *data)
} }
#ifdef HAVE_CONFIGFILE #ifdef HAVE_CONFIGFILE
#if defined(HAVE_MENU) && defined(HAVE_RGUI) #if defined(HAVE_MENU) && defined(HAVE_RGUI)
static bool check_menu_driver_compatibility(settings_t *settings) static bool check_menu_driver_compatibility(settings_t *settings)
{ {
@ -2809,7 +2829,8 @@ static bool config_load_file(global_t *global,
snprintf(tmp, sizeof(tmp), "network_remote_enable_user_p%u", i + 1); snprintf(tmp, sizeof(tmp), "network_remote_enable_user_p%u", i + 1);
if (config_get_bool(conf, tmp, &tmp_bool)) if (config_get_bool(conf, tmp, &tmp_bool))
settings->bools.network_remote_enable_user[i] = tmp_bool; configuration_set_bool(settings,
settings->bools.network_remote_enable_user[i], tmp_bool);
} }
#endif #endif
if (config_get_bool(conf, "log_verbosity", &tmp_bool)) if (config_get_bool(conf, "log_verbosity", &tmp_bool))
@ -2922,7 +2943,8 @@ static bool config_load_file(global_t *global,
} }
if (config_get_path(conf, "libretro_directory", tmp_str, path_size)) if (config_get_path(conf, "libretro_directory", tmp_str, path_size))
strlcpy(settings->paths.directory_libretro, tmp_str, sizeof(settings->paths.directory_libretro)); configuration_set_string(settings,
settings->paths.directory_libretro, tmp_str);
#ifndef HAVE_DYNAMIC #ifndef HAVE_DYNAMIC
if (config_get_path(conf, "libretro_path", tmp_str, path_size)) if (config_get_path(conf, "libretro_path", tmp_str, path_size))
@ -2937,9 +2959,9 @@ static bool config_load_file(global_t *global,
if (rarch_ctl(RARCH_CTL_HAS_SET_USERNAME, NULL) && override_username) if (rarch_ctl(RARCH_CTL_HAS_SET_USERNAME, NULL) && override_username)
{ {
strlcpy(settings->paths.username, configuration_set_string(settings,
override_username, settings->paths.username,
sizeof(settings->paths.username)); override_username);
free(override_username); free(override_username);
} }
@ -3054,8 +3076,8 @@ static bool config_load_file(global_t *global,
if (path_is_directory(path_core)) if (path_is_directory(path_core))
{ {
RARCH_WARN("\"libretro_path\" is a directory, using this for \"libretro_directory\" instead.\n"); RARCH_WARN("\"libretro_path\" is a directory, using this for \"libretro_directory\" instead.\n");
strlcpy(settings->paths.directory_libretro, path_core, configuration_set_string(settings,
sizeof(settings->paths.directory_libretro)); settings->paths.directory_libretro, path_core);
path_clear(RARCH_PATH_CORE); path_clear(RARCH_PATH_CORE);
} }
#ifdef RARCH_CONSOLE #ifdef RARCH_CONSOLE
@ -3108,9 +3130,11 @@ static bool config_load_file(global_t *global,
if (string_is_equal(settings->paths.log_dir, "default")) if (string_is_equal(settings->paths.log_dir, "default"))
{ {
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_LOGS])) if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_LOGS]))
strlcpy(settings->paths.log_dir, {
g_defaults.dirs[DEFAULT_DIR_LOGS], configuration_set_string(settings,
sizeof(settings->paths.log_dir)); settings->paths.log_dir,
g_defaults.dirs[DEFAULT_DIR_LOGS]);
}
else else
*settings->paths.log_dir = '\0'; *settings->paths.log_dir = '\0';
} }
@ -3124,9 +3148,12 @@ static bool config_load_file(global_t *global,
configuration_set_float(settings, settings->floats.fastforward_ratio, 0.0f); configuration_set_float(settings, settings->floats.fastforward_ratio, 0.0f);
#ifdef HAVE_LAKKA #ifdef HAVE_LAKKA
settings->bools.ssh_enable = filestream_exists(LAKKA_SSH_PATH); configuration_set_bool(settings,
settings->bools.samba_enable = filestream_exists(LAKKA_SAMBA_PATH); settings->bools.ssh_enable, filestream_exists(LAKKA_SSH_PATH));
settings->bools.bluetooth_enable = filestream_exists(LAKKA_BLUETOOTH_PATH); configuration_set_bool(settings,
settings->bools.samba_enable, filestream_exists(LAKKA_SAMBA_PATH));
configuration_set_bool(settings,
settings->bools.bluetooth_enable, filestream_exists(LAKKA_BLUETOOTH_PATH));
#endif #endif
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH, NULL) && if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH, NULL) &&
@ -3180,7 +3207,8 @@ static bool config_load_file(global_t *global,
#if defined(HAVE_MENU) && defined(HAVE_RGUI) #if defined(HAVE_MENU) && defined(HAVE_RGUI)
if (!check_menu_driver_compatibility(settings)) if (!check_menu_driver_compatibility(settings))
strlcpy(settings->arrays.menu_driver, "rgui", sizeof(settings->arrays.menu_driver)); configuration_set_string(settings,
settings->arrays.menu_driver, "rgui");
#endif #endif
#ifdef HAVE_LIBNX #ifdef HAVE_LIBNX

View File

@ -470,11 +470,14 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[],
RARCH_LOG("Assets ZIP found at [%s], setting up bundle assets extraction...\n", assets_zip_path); RARCH_LOG("Assets ZIP found at [%s], setting up bundle assets extraction...\n", assets_zip_path);
RARCH_LOG("Extraction dir will be: %s\n", home_dir_buf); RARCH_LOG("Extraction dir will be: %s\n", home_dir_buf);
strlcpy(settings->arrays.bundle_assets_src, confguration_set_string(settings,
assets_zip_path, sizeof(settings->arrays.bundle_assets_src)); settings->arrays.bundle_assets_src,
strlcpy(settings->arrays.bundle_assets_dst, assets_zip_path);
home_dir_buf, sizeof(settings->arrays.bundle_assets_dst)); configuration_set_string(settings,
settings->uints.bundle_assets_extract_version_current = 130; /* TODO/FIXME: Just hardcode this for now */ settings->arrays.bundle_assets_dst,
home_dir_buf);
/* TODO/FIXME: Just hardcode this for now */
configuration_set_uint(settings, settings->uints.bundle_assets_extract_version_current, 130);
} }
#endif #endif

View File

@ -1654,8 +1654,9 @@ static int generic_action_ok(const char *path,
{ {
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
strlcpy(settings->paths.path_menu_wallpaper, configuration_set_string(settings,
action_path, sizeof(settings->paths.path_menu_wallpaper)); settings->paths.path_menu_wallpaper,
action_path);
task_push_image_load(action_path, task_push_image_load(action_path,
video_driver_supports_rgba(), 0, video_driver_supports_rgba(), 0,
@ -1741,8 +1742,10 @@ static int generic_action_ok(const char *path,
flush_char = msg_hash_to_str(flush_id); flush_char = msg_hash_to_str(flush_id);
if (settings) if (settings)
strlcpy(settings->paths.path_stream_config, action_path, {
sizeof(settings->paths.path_stream_config)); configuration_set_string(settings,
settings->paths.path_stream_config, action_path);
}
} }
break; break;
case ACTION_OK_LOAD_RECORD_CONFIGFILE: case ACTION_OK_LOAD_RECORD_CONFIGFILE:
@ -1751,8 +1754,10 @@ static int generic_action_ok(const char *path,
flush_char = msg_hash_to_str(flush_id); flush_char = msg_hash_to_str(flush_id);
if (settings) if (settings)
strlcpy(settings->paths.path_record_config, action_path, {
sizeof(settings->paths.path_record_config)); configuration_set_string(settings,
settings->paths.path_record_config, action_path);
}
} }
break; break;
case ACTION_OK_LOAD_REMAPPING_FILE: case ACTION_OK_LOAD_REMAPPING_FILE:
@ -1786,8 +1791,10 @@ static int generic_action_ok(const char *path,
flush_char = msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_SETTINGS_LIST); flush_char = msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MENU_SETTINGS_LIST);
if (settings) if (settings)
strlcpy(settings->paths.path_rgui_theme_preset, action_path, {
sizeof(settings->paths.path_rgui_theme_preset)); configuration_set_string(settings,
settings->paths.path_rgui_theme_preset, action_path);
}
} }
break; break;
case ACTION_OK_APPEND_DISK_IMAGE: case ACTION_OK_APPEND_DISK_IMAGE:

View File

@ -244,9 +244,9 @@ static int action_start_netplay_mitm_server(
unsigned type, size_t idx, size_t entry_idx) unsigned type, size_t idx, size_t entry_idx)
{ {
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
strlcpy(settings->arrays.netplay_mitm_server, configuration_set_string(settings,
DEFAULT_NETPLAY_MITM_SERVER, settings->arrays.netplay_mitm_server,
sizeof(settings->arrays.netplay_mitm_server)); DEFAULT_NETPLAY_MITM_SERVER);
return 0; return 0;
} }

View File

@ -2428,9 +2428,10 @@ static bool menu_driver_init_internal(bool video_is_threaded)
return false; return false;
{ {
/* TODO/FIXME - can we get rid of this? Is this needed? */
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
strlcpy(settings->arrays.menu_driver, menu_driver_ctx->ident, configuration_set_string(settings,
sizeof(settings->arrays.menu_driver)); settings->arrays.menu_driver, menu_driver_ctx->ident);
} }
if (menu_driver_ctx->lists_init) if (menu_driver_ctx->lists_init)

View File

@ -8466,17 +8466,23 @@ bool command_event(enum event_command cmd, void *data)
} }
break; break;
case CMD_EVENT_AUTOSAVE_INIT: case CMD_EVENT_AUTOSAVE_INIT:
{
#ifdef HAVE_NETWORKING
unsigned autosave_interval = configuration_settings->uints.autosave_interval;
#endif
#ifdef HAVE_THREADS #ifdef HAVE_THREADS
retroarch_autosave_deinit(); retroarch_autosave_deinit();
#ifdef HAVE_NETWORKING #ifdef HAVE_NETWORKING
/* Only enable state manager if netplay is not underway /* Only enable state manager if netplay is not underway
TODO/FIXME: Add a setting for these tweaks */ TODO/FIXME: Add a setting for these tweaks */
if (configuration_settings->uints.autosave_interval != 0 if ( (autosave_interval != 0)
&& !netplay_driver_ctl_internal( && !netplay_driver_ctl_internal(
RARCH_NETPLAY_CTL_IS_ENABLED, NULL)) RARCH_NETPLAY_CTL_IS_ENABLED, NULL))
#endif #endif
runloop_autosave = autosave_init(); runloop_autosave = autosave_init();
#endif #endif
}
break; break;
case CMD_EVENT_AUDIO_STOP: case CMD_EVENT_AUDIO_STOP:
midi_driver_set_all_sounds_off(); midi_driver_set_all_sounds_off();
@ -14552,19 +14558,20 @@ static void input_overlay_load_active(input_overlay_t *ol, float opacity)
* config file. */ * config file. */
static void input_overlay_auto_rotate(input_overlay_t *ol) static void input_overlay_auto_rotate(input_overlay_t *ol)
{ {
settings_t *settings = configuration_settings;
enum overlay_orientation screen_orientation = OVERLAY_ORIENTATION_NONE; enum overlay_orientation screen_orientation = OVERLAY_ORIENTATION_NONE;
enum overlay_orientation active_overlay_orientation = OVERLAY_ORIENTATION_NONE; enum overlay_orientation active_overlay_orientation = OVERLAY_ORIENTATION_NONE;
settings_t *settings = configuration_settings;
bool input_overlay_enable = settings->bools.input_overlay_enable;
bool next_overlay_found = false; bool next_overlay_found = false;
bool tmp = false; bool tmp = false;
unsigned next_overlay_index = 0; unsigned next_overlay_index = 0;
size_t i; size_t i;
/* Sanity check */ /* Sanity check */
if (!ol || !settings) if (!ol)
return; return;
if (!ol->alive || !settings->bools.input_overlay_enable) if (!ol->alive || !input_overlay_enable)
return; return;
/* Get current screen orientation */ /* Get current screen orientation */
@ -14982,13 +14989,13 @@ static void input_poll_overlay(input_overlay_t *ol, float opacity,
rarch_joypad_info_t joypad_info; rarch_joypad_info_t joypad_info;
input_overlay_state_t old_key_state; input_overlay_state_t old_key_state;
unsigned i, j, device; unsigned i, j, device;
settings_t *settings = configuration_settings;
uint16_t key_mod = 0; uint16_t key_mod = 0;
bool polled = false; bool polled = false;
bool button_pressed = false; bool button_pressed = false;
void *input_data = current_input_data; void *input_data = current_input_data;
input_overlay_state_t *ol_state = &ol->overlay_state; input_overlay_state_t *ol_state = &ol->overlay_state;
input_driver_t *input_ptr = current_input; input_driver_t *input_ptr = current_input;
settings_t *settings = configuration_settings;
bool input_overlay_show_physical_inputs = settings->bools.input_overlay_show_physical_inputs; bool input_overlay_show_physical_inputs = settings->bools.input_overlay_show_physical_inputs;
unsigned input_overlay_show_physical_inputs_port = settings->uints.input_overlay_show_physical_inputs_port; unsigned input_overlay_show_physical_inputs_port = settings->uints.input_overlay_show_physical_inputs_port;