diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 5d3a718352..f9b35ca387 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -6906,17 +6906,17 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, settings_t *settings = config_get_ptr(); menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); filebrowser_clear_type(); - info->type_default = FILE_TYPE_RDB; if (!string_is_empty(info->exts)) free(info->exts); - info->exts = strdup( + if (info->path) + free(info->path); + info->type_default = FILE_TYPE_RDB; + info->exts = strdup( file_path_str(FILE_PATH_RDB_EXTENSION)); info->enum_idx = MENU_ENUM_LABEL_PLAYLISTS_TAB; load_content = false; use_filebrowser = true; - if (info->path) - free(info->path); - info->path = strdup(settings->paths.path_content_database); + info->path = strdup(settings->paths.path_content_database); } break; case DISPLAYLIST_DATABASE_CURSORS: @@ -6924,29 +6924,35 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, settings_t *settings = config_get_ptr(); menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); filebrowser_clear_type(); - info->type_default = FILE_TYPE_CURSOR; - load_content = false; - use_filebrowser = true; if (!string_is_empty(info->exts)) free(info->exts); if (info->path) free(info->path); + info->type_default = FILE_TYPE_CURSOR; info->exts = strdup("dbc"); + load_content = false; + use_filebrowser = true; info->path = strdup(settings->paths.directory_cursor); } break; + case DISPLAYLIST_SHADER_PASS: case DISPLAYLIST_SHADER_PRESET: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); { char new_exts[PATH_MAX_LENGTH]; union string_list_elem_attr attr; struct string_list *str_list = string_list_new(); + attr.i = 0; new_exts[0] = '\0'; filebrowser_clear_type(); - info->type_default = FILE_TYPE_SHADER_PRESET; + + if (type == DISPLAYLIST_SHADER_PRESET) + info->type_default = FILE_TYPE_SHADER_PRESET; + else if (type == DISPLAYLIST_SHADER_PASS) + info->type_default = FILE_TYPE_SHADER; { gfx_ctx_flags_t flags; @@ -6974,46 +6980,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, use_filebrowser = true; } break; - case DISPLAYLIST_SHADER_PASS: - menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); - { - char new_exts[PATH_MAX_LENGTH]; - union string_list_elem_attr attr; - struct string_list *str_list = string_list_new(); - - attr.i = 0; - - new_exts[0] = '\0'; - - filebrowser_clear_type(); - info->type_default = FILE_TYPE_SHADER; - - { - gfx_ctx_flags_t flags; - if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_CG)) - string_list_append(str_list, "cg", attr); - } - - { - gfx_ctx_flags_t flags; - if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_GLSL)) - string_list_append(str_list, "glsl", attr); - } - - { - gfx_ctx_flags_t flags; - if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_SLANG)) - string_list_append(str_list, "slang", attr); - } - - string_list_join_concat(new_exts, sizeof(new_exts), str_list, "|"); - if (!string_is_empty(info->exts)) - free(info->exts); - info->exts = strdup(new_exts); - string_list_free(str_list); - use_filebrowser = true; - } - break; case DISPLAYLIST_IMAGES: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); if ( (filebrowser_get_type() != FILEBROWSER_SELECT_FILE)