diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index 236c9fea7f..ac46be81b1 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -1843,9 +1843,7 @@ static int menu_action_ok(const char *dir, driver.menu->shader, gfx_shader_parse_type(shader_path, RARCH_SHADER_NONE), shader_path); - /* Pop stack until we hit shader manager again. */ - menu_flush_stack_type(driver.menu->menu_stack, - MENU_SETTINGS_SHADER_OPTIONS); + menu_flush_stack_label(driver.menu->menu_stack, "Shader Options"); } else if (!strcmp(menu_label, "video_shader_pass") && type == MENU_FILE_PLAIN) @@ -1857,9 +1855,7 @@ static int menu_action_ok(const char *dir, /* This will reset any changed parameters. */ gfx_shader_resolve_parameters(NULL, driver.menu->shader); - /* Pop stack until we hit shader manager again. */ - menu_flush_stack_type(driver.menu->menu_stack, - MENU_SETTINGS_SHADER_OPTIONS); + menu_flush_stack_label(driver.menu->menu_stack, "Shader Options"); } #endif else if (!strcmp(menu_label, "deferred_core_list") diff --git a/frontend/menu/disp/rgui.c b/frontend/menu/disp/rgui.c index 3ae9045db3..47e48d5e4d 100644 --- a/frontend/menu/disp/rgui.c +++ b/frontend/menu/disp/rgui.c @@ -362,17 +362,7 @@ static void rgui_render(void) if (type >= MENU_SETTINGS_SHADER_FILTER && type <= MENU_SETTINGS_SHADER_LAST) { - /* HACK. Work around that we're using the menu_type as dir type - * to propagate state correctly. */ - if ((menu_type_is == MENU_SETTINGS_SHADER_OPTIONS) - && (menu_type_is == MENU_SETTINGS_SHADER_OPTIONS)) - { - type = MENU_FILE_DIRECTORY; - strlcpy(type_str, "(DIR)", sizeof(type_str)); - w = 5; - } - else if ( - type == MENU_SETTINGS_SHADER_OPTIONS || + if ( type == MENU_SETTINGS_SHADER_PRESET || type == MENU_SETTINGS_SHADER_PARAMETERS || type == MENU_SETTINGS_SHADER_PRESET_PARAMETERS) diff --git a/frontend/menu/disp/rmenu.c b/frontend/menu/disp/rmenu.c index 871e9ab289..8c3942cbaf 100644 --- a/frontend/menu/disp/rmenu.c +++ b/frontend/menu/disp/rmenu.c @@ -231,17 +231,7 @@ static void rmenu_render(void) if (type >= MENU_SETTINGS_SHADER_FILTER && type <= MENU_SETTINGS_SHADER_LAST) { - /* HACK. Work around that we're using the menu_type as - * dir type to propagate state correctly. */ - if ((menu_type_is == MENU_SETTINGS_SHADER_OPTIONS) - && (menu_type_is == MENU_SETTINGS_SHADER_OPTIONS)) - { - type = MENU_FILE_DIRECTORY; - strlcpy(type_str, "(DIR)", sizeof(type_str)); - w = 5; - } - else if ( - type == MENU_SETTINGS_SHADER_OPTIONS || + if ( type == MENU_SETTINGS_SHADER_PRESET || type == MENU_SETTINGS_SHADER_PARAMETERS || type == MENU_SETTINGS_SHADER_PRESET_PARAMETERS) diff --git a/frontend/menu/disp/rmenu_xui.cpp b/frontend/menu/disp/rmenu_xui.cpp index 61190df7bc..473fec25c6 100644 --- a/frontend/menu/disp/rmenu_xui.cpp +++ b/frontend/menu/disp/rmenu_xui.cpp @@ -442,17 +442,7 @@ static void rmenu_xui_render(void) if (type >= MENU_SETTINGS_SHADER_FILTER && type <= MENU_SETTINGS_SHADER_LAST) { - /* HACK. Work around that we're using the menu_type as - * dir type to propagate state correctly. */ - if ((menu_type_is == MENU_SETTINGS_SHADER_OPTIONS) - && (menu_type_is == MENU_SETTINGS_SHADER_OPTIONS)) - { - type = MENU_FILE_DIRECTORY; - strlcpy(type_str, "(DIR)", sizeof(type_str)); - w = 5; - } - else if (type == MENU_SETTINGS_SHADER_OPTIONS || - type == MENU_SETTINGS_SHADER_PRESET) + if (type == MENU_SETTINGS_SHADER_PRESET) strlcpy(type_str, "...", sizeof(type_str)); else if (type == MENU_SETTINGS_SHADER_FILTER) snprintf(type_str, sizeof(type_str), "%s", diff --git a/frontend/menu/disp/shared.h b/frontend/menu/disp/shared.h index 6e0e577dfc..a56eac444e 100644 --- a/frontend/menu/disp/shared.h +++ b/frontend/menu/disp/shared.h @@ -37,9 +37,9 @@ static void get_title(const char *label, const char *dir, strlcpy(title, "FRONTEND PERFORMANCE COUNTERS", sizeof_title); else if (!strcmp(label, "core_counters")) strlcpy(title, "CORE PERFORMANCE COUNTERS", sizeof_title); -#ifdef HAVE_SHADER_MANAGER - else if (menu_type == MENU_SETTINGS_SHADER_OPTIONS) + else if (!strcmp(label, "Shader Options")) strlcpy(title, "SHADER OPTIONS", sizeof_title); +#ifdef HAVE_SHADER_MANAGER else if (menu_type == MENU_SETTINGS_SHADER_PARAMETERS) strlcpy(title, "SHADER PARAMETERS (CURRENT)", sizeof_title); else if (menu_type == MENU_SETTINGS_SHADER_PRESET_PARAMETERS) diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 09958d773a..d7823d1f2c 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -640,7 +640,7 @@ unsigned menu_common_type_is(const char *label, unsigned type) !strcmp(label, "core_information") || !strcmp(label, "Video Options") || !strcmp(label, "Font Options") || - type == MENU_SETTINGS_SHADER_OPTIONS || + !strcmp(label, "Shader Options") || type == MENU_SETTINGS_SHADER_PARAMETERS || type == MENU_SETTINGS_SHADER_PRESET_PARAMETERS || !strcmp(label, "Audio Options") || diff --git a/frontend/menu/menu_entries.c b/frontend/menu/menu_entries.c index cda606db26..1d32cc085f 100644 --- a/frontend/menu/menu_entries.c +++ b/frontend/menu/menu_entries.c @@ -441,7 +441,7 @@ int menu_entries_push_list(menu_handle_t *menu, add_setting_entry(menu,list,"Driver Options", MENU_FILE_SWITCH, setting_data); add_setting_entry(menu,list,"General Options", MENU_FILE_SWITCH, setting_data); add_setting_entry(menu,list,"Video Options", MENU_FILE_SWITCH, setting_data); - add_setting_entry(menu,list,"Shader Options", MENU_SETTINGS_SHADER_OPTIONS, setting_data); + add_setting_entry(menu,list,"Shader Options", MENU_FILE_SWITCH, setting_data); add_setting_entry(menu,list,"Font Options", MENU_FILE_SWITCH, setting_data); add_setting_entry(menu,list,"Audio Options", MENU_FILE_SWITCH, setting_data); add_setting_entry(menu,list,"Input Options", MENU_FILE_SWITCH, setting_data); @@ -479,6 +479,46 @@ int menu_entries_push_list(menu_handle_t *menu, add_setting_entry(menu,list,"joypad_autoconfig_dir", 0, setting_data); add_setting_entry(menu,list,"extraction_directory", 0, setting_data); } + else if (!strcmp(label, "Shader Options")) + { + struct gfx_shader *shader = (struct gfx_shader*)menu->shader; + + if (!shader) + return -1; + + file_list_clear(list); + file_list_push(list, "Apply Shader Changes", "shader_apply_changes", + MENU_FILE_SWITCH, 0); + file_list_push(list, "Default Filter", "", + MENU_SETTINGS_SHADER_FILTER, 0); + file_list_push(list, "Load Shader Preset", "", + MENU_SETTINGS_SHADER_PRESET, 0); + file_list_push(list, "Save As Shader Preset", "", + MENU_SETTINGS_SHADER_PRESET_SAVE, 0); + file_list_push(list, "Parameters (Current)", "", + MENU_SETTINGS_SHADER_PARAMETERS, 0); + file_list_push(list, "Parameters (Menu)", "", + MENU_SETTINGS_SHADER_PRESET_PARAMETERS, 0); + file_list_push(list, "Shader Passes", "", + MENU_SETTINGS_SHADER_PASSES, 0); + + for (i = 0; i < shader->passes; i++) + { + char buf[64]; + + snprintf(buf, sizeof(buf), "Shader #%u", i); + file_list_push(list, buf, "", + MENU_SETTINGS_SHADER_0 + 3 * i, 0); + + snprintf(buf, sizeof(buf), "Shader #%u Filter", i); + file_list_push(list, buf, "", + MENU_SETTINGS_SHADER_0_FILTER + 3 * i, 0); + + snprintf(buf, sizeof(buf), "Shader #%u Scale", i); + file_list_push(list, buf, "", + MENU_SETTINGS_SHADER_0_SCALE + 3 * i, 0); + } + } else { switch (menu_type) @@ -497,47 +537,6 @@ int menu_entries_push_list(menu_handle_t *menu, shader->parameters[i].desc, "", MENU_SETTINGS_SHADER_PARAMETER_0 + i, 0); menu->parameter_shader = shader; - break; - } - case MENU_SETTINGS_SHADER_OPTIONS: - { - struct gfx_shader *shader = (struct gfx_shader*)menu->shader; - - if (!shader) - return -1; - - file_list_clear(list); - file_list_push(list, "Apply Shader Changes", "shader_apply_changes", - MENU_FILE_SWITCH, 0); - file_list_push(list, "Default Filter", "", - MENU_SETTINGS_SHADER_FILTER, 0); - file_list_push(list, "Load Shader Preset", "", - MENU_SETTINGS_SHADER_PRESET, 0); - file_list_push(list, "Save As Shader Preset", "", - MENU_SETTINGS_SHADER_PRESET_SAVE, 0); - file_list_push(list, "Parameters (Current)", "", - MENU_SETTINGS_SHADER_PARAMETERS, 0); - file_list_push(list, "Parameters (Menu)", "", - MENU_SETTINGS_SHADER_PRESET_PARAMETERS, 0); - file_list_push(list, "Shader Passes", "", - MENU_SETTINGS_SHADER_PASSES, 0); - - for (i = 0; i < shader->passes; i++) - { - char buf[64]; - - snprintf(buf, sizeof(buf), "Shader #%u", i); - file_list_push(list, buf, "", - MENU_SETTINGS_SHADER_0 + 3 * i, 0); - - snprintf(buf, sizeof(buf), "Shader #%u Filter", i); - file_list_push(list, buf, "", - MENU_SETTINGS_SHADER_0_FILTER + 3 * i, 0); - - snprintf(buf, sizeof(buf), "Shader #%u Scale", i); - file_list_push(list, buf, "", - MENU_SETTINGS_SHADER_0_SCALE + 3 * i, 0); - } } break; case MENU_SETTINGS_DISK_OPTIONS: