diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index b67a5b2f98..b7c9be6987 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -1829,7 +1829,7 @@ static int menu_action_ok(const char *dir, && type == MENU_FILE_PLAIN) { menu_common_setting_set_current_string_path(setting, dir, path); - menu_flush_stack_type(driver.menu->menu_stack,MENU_SETTINGS_AUDIO_OPTIONS); + menu_flush_stack_label(driver.menu->menu_stack, "Audio Options"); } #ifdef HAVE_SHADER_MANAGER else if (!strcmp(menu_label, "video_shader_preset") diff --git a/frontend/menu/disp/shared.h b/frontend/menu/disp/shared.h index cdd9ea1ce2..2f7cc67e51 100644 --- a/frontend/menu/disp/shared.h +++ b/frontend/menu/disp/shared.h @@ -49,7 +49,7 @@ static void get_title(const char *label, const char *dir, strlcpy(title, "FONT OPTIONS", sizeof_title); else if (!strcmp(dir, "General Options")) strlcpy(title, "GENERAL OPTIONS", sizeof_title); - else if (menu_type == MENU_SETTINGS_AUDIO_OPTIONS) + else if (!strcmp(label, "Audio Options")) strlcpy(title, "AUDIO OPTIONS", sizeof_title); else if (menu_type == MENU_SETTINGS_DISK_OPTIONS) strlcpy(title, "DISK OPTIONS", sizeof_title); diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 3b1a6a1c0e..dea33a1c15 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -652,7 +652,7 @@ unsigned menu_common_type_is(const char *label, unsigned type) type == MENU_SETTINGS_SHADER_OPTIONS || type == MENU_SETTINGS_SHADER_PARAMETERS || type == MENU_SETTINGS_SHADER_PRESET_PARAMETERS || - type == MENU_SETTINGS_AUDIO_OPTIONS || + !strcmp(label, "Audio Options") || type == MENU_SETTINGS_DISK_OPTIONS || type == MENU_SETTINGS_PATH_OPTIONS || !strcmp(label, "Privacy Options") || diff --git a/frontend/menu/menu_common.h b/frontend/menu/menu_common.h index 2c96b62a89..e85ac653ed 100644 --- a/frontend/menu/menu_common.h +++ b/frontend/menu/menu_common.h @@ -108,7 +108,6 @@ typedef enum // settings options are done here too MENU_SETTINGS_CONFIG, - MENU_SETTINGS_AUDIO_OPTIONS, MENU_SETTINGS_INPUT_OPTIONS, MENU_SETTINGS_PATH_OPTIONS, MENU_SETTINGS_OPTIONS, diff --git a/frontend/menu/menu_entries.c b/frontend/menu/menu_entries.c index 09e99832dc..358e1fe202 100644 --- a/frontend/menu/menu_entries.c +++ b/frontend/menu/menu_entries.c @@ -344,6 +344,19 @@ int menu_entries_push_list(menu_handle_t *menu, file_list_push(list, "No options available.", "", MENU_SETTINGS_CORE_OPTION_NONE, 0); } + else if (!strcmp(label, "Audio Options")) + { + file_list_clear(list); + add_setting_entry(menu,list,"audio_dsp_plugin", 0, setting_data); + add_setting_entry(menu,list,"audio_enable", 0, setting_data); + add_setting_entry(menu,list,"audio_mute", 0, setting_data); + add_setting_entry(menu,list,"audio_latency", 0, setting_data); + add_setting_entry(menu,list,"audio_sync", 0, setting_data); + add_setting_entry(menu,list,"audio_rate_control_delta", 0, setting_data); + add_setting_entry(menu,list,"system_bgm_enable", 0, setting_data); + add_setting_entry(menu,list,"audio_volume", 0, setting_data); + add_setting_entry(menu,list,"audio_device", 0, setting_data); + } else { switch (menu_type) @@ -452,7 +465,7 @@ int menu_entries_push_list(menu_handle_t *menu, add_setting_entry(menu,list,"Video Options", MENU_SETTINGS_VIDEO_OPTIONS, setting_data); add_setting_entry(menu,list,"Shader Options", MENU_SETTINGS_SHADER_OPTIONS, setting_data); add_setting_entry(menu,list,"Font Options", MENU_SETTINGS_FONT_OPTIONS, setting_data); - add_setting_entry(menu,list,"Audio Options", MENU_SETTINGS_AUDIO_OPTIONS, setting_data); + add_setting_entry(menu,list,"Audio Options", MENU_FILE_SWITCH, setting_data); add_setting_entry(menu,list,"Input Options", MENU_SETTINGS_INPUT_OPTIONS, setting_data); add_setting_entry(menu,list,"Overlay Options", MENU_FILE_SWITCH, setting_data); add_setting_entry(menu,list,"User Options", MENU_FILE_SWITCH, setting_data); @@ -518,18 +531,6 @@ int menu_entries_push_list(menu_handle_t *menu, input_config_bind_map[i - MENU_SETTINGS_BIND_BEGIN].desc, "", i, 0); break; - case MENU_SETTINGS_AUDIO_OPTIONS: - file_list_clear(list); - add_setting_entry(menu,list,"audio_dsp_plugin", 0, setting_data); - add_setting_entry(menu,list,"audio_enable", 0, setting_data); - add_setting_entry(menu,list,"audio_mute", 0, setting_data); - add_setting_entry(menu,list,"audio_latency", 0, setting_data); - add_setting_entry(menu,list,"audio_sync", 0, setting_data); - add_setting_entry(menu,list,"audio_rate_control_delta", 0, setting_data); - add_setting_entry(menu,list,"system_bgm_enable", 0, setting_data); - add_setting_entry(menu,list,"audio_volume", 0, setting_data); - add_setting_entry(menu,list,"audio_device", 0, setting_data); - break; case MENU_SETTINGS_DRIVERS: file_list_clear(list); add_setting_entry(menu,list,"video_driver", 0, setting_data); @@ -826,6 +827,25 @@ void menu_flush_stack_type(file_list_t *list, } } +void menu_flush_stack_label(file_list_t *list, + const char *needle) +{ + const char *path = NULL; + const char *label = NULL; + unsigned type = 0; + + if (!driver.menu) + return; + + driver.menu->need_refresh = true; + file_list_get_last(list, &path, &label, &type); + while (strcmp(needle, label) != 0) + { + file_list_pop(list, &driver.menu->selection_ptr); + file_list_get_last(list, &path, &label, &type); + } +} + void menu_entries_push(file_list_t *list, const char *path, const char *label, unsigned type, size_t directory_ptr) diff --git a/frontend/menu/menu_entries.h b/frontend/menu/menu_entries.h index fba6ee7ed4..2e3cd2eae8 100644 --- a/frontend/menu/menu_entries.h +++ b/frontend/menu/menu_entries.h @@ -36,6 +36,7 @@ int menu_parse_and_resolve(file_list_t *list, file_list_t *menu_list); void menu_entries_pop(file_list_t *list); void menu_flush_stack_type(file_list_t *list, unsigned final_type); +void menu_flush_stack_label(file_list_t *list, const char *needle); int menu_entries_get_description(const char *label, char *msg, size_t sizeof_msg);