From 6a851ab2914e96f1eacded95665b278cf72ee91f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 13 May 2015 01:53:32 +0200 Subject: [PATCH] Create DISPLAYLIST_OPTIONS_VIDEO --- menu/menu_displaylist.c | 73 ++++++++++++++++++++ menu/menu_displaylist.h | 2 + menu/menu_entries_cbs_deferred_push.c | 98 ++++----------------------- 3 files changed, 89 insertions(+), 84 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index f807c2d825..e6adbf5004 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -752,6 +752,56 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info) return 0; } +static int menu_displaylist_parse_all_settings(menu_displaylist_info_t *info) +{ + rarch_setting_t *setting = NULL; + menu_handle_t *menu = menu_driver_get_ptr(); + settings_t *settings = config_get_ptr(); + + settings_list_free(menu->list_settings); + menu->list_settings = setting_new(SL_FLAG_ALL_SETTINGS); + + setting = menu_setting_find("Driver Settings"); + + if (settings->menu.collapse_subgroups_enable) + { + for (; setting->type != ST_NONE; setting++) + { + if (setting->type == ST_GROUP) + menu_list_push(info->list, setting->short_description, + setting->name, menu_setting_set_flags(setting), 0); + } + } + else + { + for (; setting->type != ST_NONE; setting++) + { + char group_label[PATH_MAX_LENGTH]; + char subgroup_label[PATH_MAX_LENGTH]; + + if (setting->type == ST_GROUP) + strlcpy(group_label, setting->name, sizeof(group_label)); + else if (setting->type == ST_SUB_GROUP) + { + char new_label[PATH_MAX_LENGTH], new_path[PATH_MAX_LENGTH]; + strlcpy(subgroup_label, setting->name, sizeof(group_label)); + strlcpy(new_label, group_label, sizeof(new_label)); + strlcat(new_label, "|", sizeof(new_label)); + strlcat(new_label, subgroup_label, sizeof(new_label)); + + strlcpy(new_path, group_label, sizeof(new_path)); + strlcat(new_path, " - ", sizeof(new_path)); + strlcat(new_path, setting->short_description, sizeof(new_path)); + + menu_list_push(info->list, new_path, + new_label, MENU_SETTING_SUBGROUP, 0); + } + } + } + + return 0; +} + int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) { int ret = 0; @@ -776,12 +826,35 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) ret = menu_entries_push_list(menu, info->list, info->path, info->label, info->type, info->flags); break; + case DISPLAYLIST_SETTINGS_ALL: + menu_list_clear(info->list); + + ret = menu_displaylist_parse_all_settings(info); + + need_push = true; + break; case DISPLAYLIST_HORIZONTAL: break; case DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS: menu_list_clear(info->list); ret = menu_displaylist_parse_horizontal_content_actions(info); need_refresh = true; + need_push = true; + break; + case DISPLAYLIST_OPTIONS_VIDEO: + menu_list_clear(info->list); + +#if defined(GEKKO) || defined(__CELLOS_LV2__) + menu_list_push(info->list, "Screen Resolution", "", + MENU_SETTINGS_VIDEO_RESOLUTION, 0); +#endif + menu_list_push(info->list, "Custom Ratio", "", + MENU_SETTINGS_CUSTOM_VIEWPORT, 0); +#ifndef HAVE_FILTERS_BUILTIN + menu_list_push(info->list, "Video Filter", "video_filter", + 0, 0); +#endif + need_push = true; break; case DISPLAYLIST_DEFAULT: diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index db3971f582..9c4e9c8dfa 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -31,6 +31,7 @@ enum DISPLAYLIST_NONE = 0, DISPLAYLIST_MAIN_MENU, DISPLAYLIST_SETTINGS, + DISPLAYLIST_SETTINGS_ALL, DISPLAYLIST_HORIZONTAL, DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS, DISPLAYLIST_HISTORY, @@ -61,6 +62,7 @@ enum DISPLAYLIST_OVERLAYS, DISPLAYLIST_SHADER_PARAMETERS, DISPLAYLIST_SHADER_PARAMETERS_PRESET, + DISPLAYLIST_OPTIONS_VIDEO, }; typedef struct menu_displaylist_info diff --git a/menu/menu_entries_cbs_deferred_push.c b/menu/menu_entries_cbs_deferred_push.c index f60b65a26f..f08b971995 100644 --- a/menu/menu_entries_cbs_deferred_push.c +++ b/menu/menu_entries_cbs_deferred_push.c @@ -1070,67 +1070,16 @@ static int deferred_push_video_shader_parameters(void *data, void *userdata, static int deferred_push_settings(void *data, void *userdata, const char *path, const char *label, unsigned type) { - rarch_setting_t *setting = NULL; - file_list_t *list = NULL; - file_list_t *menu_list = NULL; - menu_handle_t *menu = menu_driver_get_ptr(); - settings_t *settings = config_get_ptr(); + menu_displaylist_info_t info = {0}; - if (!menu) - return -1; + info.list = (file_list_t*)data; + info.menu_list = (file_list_t*)userdata; + info.type = type; + strlcpy(info.path, path, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); - list = (file_list_t*)data; - menu_list = (file_list_t*)userdata; + return menu_displaylist_push_list(&info, DISPLAYLIST_SETTINGS_ALL); - if (!list || !menu_list) - return -1; - - settings_list_free(menu->list_settings); - menu->list_settings = setting_new(SL_FLAG_ALL_SETTINGS); - - setting = menu_setting_find("Driver Settings"); - - menu_list_clear(list); - - if (settings->menu.collapse_subgroups_enable) - { - for (; setting->type != ST_NONE; setting++) - { - if (setting->type == ST_GROUP) - menu_list_push(list, setting->short_description, - setting->name, menu_setting_set_flags(setting), 0); - } - } - else - { - for (; setting->type != ST_NONE; setting++) - { - char group_label[PATH_MAX_LENGTH]; - char subgroup_label[PATH_MAX_LENGTH]; - - if (setting->type == ST_GROUP) - strlcpy(group_label, setting->name, sizeof(group_label)); - else if (setting->type == ST_SUB_GROUP) - { - char new_label[PATH_MAX_LENGTH], new_path[PATH_MAX_LENGTH]; - strlcpy(subgroup_label, setting->name, sizeof(group_label)); - strlcpy(new_label, group_label, sizeof(new_label)); - strlcat(new_label, "|", sizeof(new_label)); - strlcat(new_label, subgroup_label, sizeof(new_label)); - - strlcpy(new_path, group_label, sizeof(new_path)); - strlcat(new_path, " - ", sizeof(new_path)); - strlcat(new_path, setting->short_description, sizeof(new_path)); - - menu_list_push(list, new_path, - new_label, MENU_SETTING_SUBGROUP, 0); - } - } - } - - menu_driver_populate_entries(path, label, type); - - return 0; } static int deferred_push_settings_subgroup(void *data, void *userdata, @@ -1227,34 +1176,15 @@ static int deferred_push_category(void *data, void *userdata, static int deferred_push_video_options(void *data, void *userdata, const char *path, const char *label, unsigned type) { - file_list_t *list = NULL; - file_list_t *menu_list = NULL; - menu_handle_t *menu = menu_driver_get_ptr(); + menu_displaylist_info_t info = {0}; - if (!menu) - return -1; + info.list = (file_list_t*)data; + info.menu_list = (file_list_t*)userdata; + info.type = type; + strlcpy(info.path, path, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); - list = (file_list_t*)data; - menu_list = (file_list_t*)userdata; - - if (!list || !menu_list) - return -1; - - menu_list_clear(list); -#if defined(GEKKO) || defined(__CELLOS_LV2__) - menu_list_push(list, "Screen Resolution", "", - MENU_SETTINGS_VIDEO_RESOLUTION, 0); -#endif - menu_list_push(list, "Custom Ratio", "", - MENU_SETTINGS_CUSTOM_VIEWPORT, 0); -#ifndef HAVE_FILTERS_BUILTIN - menu_list_push(list, "Video Filter", "video_filter", - 0, 0); -#endif - - menu_driver_populate_entries(path, label, type); - - return 0; + return menu_displaylist_push_list(&info, DISPLAYLIST_OPTIONS_VIDEO); } static int deferred_push_shader_options(void *data, void *userdata,