From 7dff082477cd15e89fa7bc01dfcada49cf063520 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 26 Jul 2014 05:51:45 +0200 Subject: [PATCH] (Settings data) Cleanup string settings --- frontend/menu/backend/menu_common_backend.c | 18 +++++---- settings_data.c | 44 ++++++++++----------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index cbb9cba3d2..714c1a1011 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -371,7 +371,8 @@ static void menu_common_entries_init(void *data, unsigned menu_type) break; case MENU_SETTINGS_OVERLAY_OPTIONS: file_list_clear(menu->selection_buf); - file_list_push(menu->selection_buf, "Overlay Preset", MENU_SETTINGS_OVERLAY_PRESET, 0); + if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "input_overlay"))) + file_list_push(menu->selection_buf, current_setting->short_description, MENU_SETTINGS_OVERLAY_PRESET, 0); if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "input_overlay_opacity"))) file_list_push(menu->selection_buf, current_setting->short_description, MENU_SETTINGS_OVERLAY_OPACITY, 0); if ((current_setting = setting_data_find_setting(setting_data, "input_overlay_scale"))) @@ -2311,6 +2312,7 @@ static void menu_common_defer_decision_manual(void) static int menu_common_iterate(unsigned action) { + rarch_setting_t *setting_data, *current_setting; int ret = 0; const char *dir = 0; unsigned menu_type = 0; @@ -2321,6 +2323,8 @@ static int menu_common_iterate(unsigned action) return 0; } + setting_data = (rarch_setting_t *)setting_data_get_list(); + file_list_get_last(driver.menu->menu_stack, &dir, &menu_type); if (driver.video_data && driver.menu_ctx && driver.menu_ctx->set_texture) @@ -2516,13 +2520,13 @@ static int menu_common_iterate(unsigned action) #ifdef HAVE_OVERLAY else if (menu_type == MENU_SETTINGS_OVERLAY_PRESET) { - fill_pathname_join(g_settings.input.overlay, dir, path, sizeof(g_settings.input.overlay)); + if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "input_overlay"))) + { + fill_pathname_join(current_setting->value.string, dir, path, current_setting->size); - if (driver.overlay) - input_overlay_free(driver.overlay); - driver.overlay = input_overlay_new(g_settings.input.overlay); - if (!driver.overlay) - RARCH_ERR("Failed to load overlay.\n"); + if (current_setting->change_handler) + current_setting->change_handler(current_setting); + } menu_flush_stack_type(MENU_SETTINGS_OPTIONS); } diff --git a/settings_data.c b/settings_data.c index f354b319e2..2201c62ad5 100644 --- a/settings_data.c +++ b/settings_data.c @@ -460,7 +460,7 @@ static void general_read_handler(const void *data) else if (!strcmp(setting->name, "video_black_frame_insertion")) *setting->value.boolean = g_settings.video.black_frame_insertion; else if (!strcmp(setting->name, "video_font_path")) - strlcpy(setting->value.string, g_settings.video.font_path, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.video.font_path, setting->size); else if (!strcmp(setting->name, "video_font_size")) *setting->value.fraction = g_settings.video.font_size; #ifdef HAVE_OVERLAY @@ -476,7 +476,7 @@ static void general_read_handler(const void *data) else if (!strcmp(setting->name, "audio_volume")) *setting->value.fraction = g_extern.audio_data.volume_db; else if (!strcmp(setting->name, "audio_device")) - strlcpy(setting->value.string, g_settings.audio.device, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.audio.device, setting->size); else if (!strcmp(setting->name, "audio_block_frames")) *setting->value.unsigned_integer = g_settings.audio.block_frames; else if (!strcmp(setting->name, "audio_latency")) @@ -484,7 +484,7 @@ static void general_read_handler(const void *data) else if (!strcmp(setting->name, "audio_dsp_plugin")) { #ifdef HAVE_DYLIB - strlcpy(setting->value.string, g_settings.audio.dsp_plugin, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.audio.dsp_plugin, setting->size); #endif } else if (!strcmp(setting->name, "state_slot")) @@ -535,7 +535,7 @@ static void general_read_handler(const void *data) #endif #ifdef HAVE_OVERLAY else if (!strcmp(setting->name, "input_overlay")) - strlcpy(setting->value.string, g_settings.input.overlay, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.input.overlay, setting->size); else if (!strcmp(setting->name, "input_overlay_scale")) *setting->value.fraction = g_settings.input.overlay_scale; #endif @@ -573,20 +573,20 @@ static void general_read_handler(const void *data) *setting->value.boolean = g_settings.video.gpu_record; #ifdef HAVE_OVERLAY else if (!strcmp(setting->name, "overlay_directory")) - strlcpy(setting->value.string, g_extern.overlay_dir, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_extern.overlay_dir, setting->size); #endif else if (!strcmp(setting->name, "joypad_autoconfig_dir")) - strlcpy(setting->value.string, g_settings.input.autoconfig_dir, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.input.autoconfig_dir, setting->size); else if (!strcmp(setting->name, "screenshot_directory")) - strlcpy(setting->value.string, g_settings.screenshot_directory, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.screenshot_directory, setting->size); else if (!strcmp(setting->name, "savefile_directory")) - strlcpy(setting->value.string, g_extern.savefile_dir, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_extern.savefile_dir, setting->size); else if (!strcmp(setting->name, "savestate_directory")) - strlcpy(setting->value.string, g_extern.savestate_dir, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_extern.savestate_dir, setting->size); else if (!strcmp(setting->name, "system_directory")) - strlcpy(setting->value.string, g_settings.system_directory, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.system_directory, setting->size); else if (!strcmp(setting->name, "extraction_directory")) - strlcpy(setting->value.string, g_settings.extraction_directory, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.extraction_directory, setting->size); else if (!strcmp(setting->name, "input_player1_joypad_index")) *setting->value.integer = g_settings.input.joypad_map[0]; else if (!strcmp(setting->name, "input_player2_joypad_index")) @@ -603,30 +603,30 @@ static void general_read_handler(const void *data) *setting->value.unsigned_integer = g_settings.game_history_size; #ifdef HAVE_MENU else if (!strcmp(setting->name, "rgui_browser_directory")) - strlcpy(setting->value.string, g_settings.menu_content_directory, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.menu_content_directory, setting->size); else if (!strcmp(setting->name, "assets_directory")) - strlcpy(setting->value.string, g_settings.assets_directory, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.assets_directory, setting->size); else if (!strcmp(setting->name, "rgui_config_directory")) - strlcpy(setting->value.string, g_settings.menu_config_directory, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.menu_config_directory, setting->size); #endif else if (!strcmp(setting->name, "libretro_path")) - strlcpy(setting->value.string, g_settings.libretro, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.libretro, setting->size); else if (!strcmp(setting->name, "libretro_info_path")) - strlcpy(setting->value.string, g_settings.libretro_info_path, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.libretro_info_path, setting->size); else if (!strcmp(setting->name, "core_options_path")) - strlcpy(setting->value.string, g_settings.core_options_path, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.core_options_path, setting->size); else if (!strcmp(setting->name, "cheat_database_path")) - strlcpy(setting->value.string, g_settings.cheat_database, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.cheat_database, setting->size); else if (!strcmp(setting->name, "cheat_settings_path")) - strlcpy(setting->value.string, g_settings.cheat_settings_path, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.cheat_settings_path, setting->size); else if (!strcmp(setting->name, "game_history_path")) - strlcpy(setting->value.string, g_settings.game_history_path, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.game_history_path, setting->size); else if (!strcmp(setting->name, "video_shader_dir")) - strlcpy(setting->value.string, g_settings.video.filter_dir, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.video.filter_dir, setting->size); else if (!strcmp(setting->name, "video_aspect_ratio_auto")) *setting->value.boolean = g_settings.video.aspect_ratio_auto; else if (!strcmp(setting->name, "video_filter")) - strlcpy(setting->value.string, g_settings.video.filter_path, sizeof(setting->value.string)); + strlcpy(setting->value.string, g_settings.video.filter_path, setting->size); #ifdef HAVE_CAMERA else if (!strcmp(setting->name, "camera_allow")) *setting->value.boolean = g_settings.camera.allow;