diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index 619b076e5f..19ce69227c 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -348,10 +348,8 @@ static void menu_common_entries_init(menu_handle_t *menu, unsigned menu_type) file_list_push(menu->selection_buf, "", "libretro_dir_path", MENU_LIBRETRO_DIR_PATH, 0); file_list_push(menu->selection_buf, "", "libretro_info_path", MENU_LIBRETRO_INFO_DIR_PATH, 0); file_list_push(menu->selection_buf, "", "game_history_path", MENU_CONTENT_HISTORY_PATH, 0); -#ifdef HAVE_DYLIB - file_list_push(menu->selection_buf, "Software Filter Directory", "", MENU_FILTER_DIR_PATH, 0); -#endif - file_list_push(menu->selection_buf, "DSP Filter Directory", "", MENU_DSP_FILTER_DIR_PATH, 0); + file_list_push(menu->selection_buf, "", "video_filter_dir", MENU_FILTER_DIR_PATH, 0); + file_list_push(menu->selection_buf, "", "audio_filter_dir", MENU_DSP_FILTER_DIR_PATH, 0); #ifdef HAVE_SHADER_MANAGER file_list_push(menu->selection_buf, "", "video_shader_dir", MENU_SHADER_DIR_PATH, 0); #endif @@ -2387,12 +2385,16 @@ static int menu_common_iterate(unsigned action) } else if (menu_type == MENU_FILTER_DIR_PATH) { - strlcpy(g_settings.video.filter_dir, dir, sizeof(g_settings.video.filter_dir)); + if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "video_filter_dir"))) + menu_common_setting_set_current_string_dir(current_setting, dir); + menu_flush_stack_type(MENU_SETTINGS_PATH_OPTIONS); } else if (menu_type == MENU_DSP_FILTER_DIR_PATH) { - strlcpy(g_settings.audio.filter_dir, dir, sizeof(g_settings.audio.filter_dir)); + if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "audio_filter_dir"))) + menu_common_setting_set_current_string_dir(current_setting, dir); + menu_flush_stack_type(MENU_SETTINGS_PATH_OPTIONS); } else if (menu_type == MENU_SYSTEM_DIR_PATH) @@ -3539,6 +3541,8 @@ static int menu_common_setting_set(unsigned id, unsigned action, rarch_setting_t case MENU_SYSTEM_DIR_PATH: case MENU_AUTOCONFIG_DIR_PATH: case MENU_EXTRACTION_DIR_PATH: + case MENU_FILTER_DIR_PATH: + case MENU_DSP_FILTER_DIR_PATH: if (action == MENU_ACTION_START) { *setting->value.string = '\0'; @@ -3547,14 +3551,6 @@ static int menu_common_setting_set(unsigned id, unsigned action, rarch_setting_t setting->change_handler(setting); } break; - case MENU_FILTER_DIR_PATH: - if (action == MENU_ACTION_START) - *g_settings.video.filter_dir = '\0'; - break; - case MENU_DSP_FILTER_DIR_PATH: - if (action == MENU_ACTION_START) - *g_settings.audio.filter_dir = '\0'; - break; case MENU_SETTINGS_DRIVER_VIDEO: if (action == MENU_ACTION_LEFT) find_prev_video_driver(); diff --git a/settings_data.c b/settings_data.c index 71a66263e1..dd738f2c57 100644 --- a/settings_data.c +++ b/settings_data.c @@ -994,6 +994,10 @@ static void general_read_handler(const void *data) 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.content_history_path, setting->size); + else if (!strcmp(setting->name, "video_filter_dir")) + strlcpy(setting->value.string, g_settings.video.filter_dir, setting->size); + else if (!strcmp(setting->name, "audio_filter_dir")) + strlcpy(setting->value.string, g_settings.audio.filter_dir, setting->size); else if (!strcmp(setting->name, "video_shader_dir")) strlcpy(setting->value.string, g_settings.video.shader_dir, setting->size); else if (!strcmp(setting->name, "video_aspect_ratio_auto")) @@ -1325,6 +1329,10 @@ static void general_write_handler(const void *data) strlcpy(g_settings.cheat_settings_path, setting->value.string, sizeof(g_settings.cheat_settings_path)); else if (!strcmp(setting->name, "game_history_path")) strlcpy(g_settings.content_history_path, setting->value.string, sizeof(g_settings.content_history_path)); + else if (!strcmp(setting->name, "video_filter_dir")) + strlcpy(g_settings.video.filter_dir, setting->value.string, sizeof(g_settings.video.filter_dir)); + else if (!strcmp(setting->name, "audio_filter_dir")) + strlcpy(g_settings.audio.filter_dir, setting->value.string, sizeof(g_settings.audio.filter_dir)); else if (!strcmp(setting->name, "video_shader_dir")) strlcpy(g_settings.video.shader_dir, setting->value.string, sizeof(g_settings.video.shader_dir)); else if (!strcmp(setting->name, "video_aspect_ratio_auto")) @@ -1726,7 +1734,11 @@ rarch_setting_t* setting_data_get_list(void) CONFIG_PATH(g_settings.cheat_settings_path, "cheat_settings_path", "Cheat Settings", "", GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_FLAGS(SD_FLAG_ALLOW_EMPTY) CONFIG_PATH(g_settings.content_history_path, "game_history_path", "Content History Path", "", GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_FLAGS(SD_FLAG_ALLOW_EMPTY) + CONFIG_DIR(g_settings.video.filter_dir, "video_filter_dir", "VideoFilter Directory", "", GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_FLAGS(SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR) + CONFIG_DIR(g_settings.audio.filter_dir, "audio_filter_dir", "AudioFilter Directory", "", GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_FLAGS(SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR) +#ifdef HAVE_DYLIB CONFIG_DIR(g_settings.video.shader_dir, "video_shader_dir", "Shader Directory", g_defaults.shader_dir ? g_defaults.shader_dir : "", GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_FLAGS(SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR) +#endif #ifdef HAVE_OVERLAY CONFIG_DIR(g_extern.overlay_dir, "overlay_directory", "Overlay Directory", g_defaults.overlay_dir ? g_defaults.overlay_dir : "", GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_FLAGS(SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR)