diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 5076268fa5..76459837c6 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -283,6 +283,8 @@ MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_SPECIAL, "deferred_dropdown_box_list_special") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_RESOLUTION, "deferred_dropdown_box_list_resolution") +MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES, + "deferred_dropdown_box_list_video_shader_num_passes") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_DEFAULT_CORE, "deferred_dropdown_box_list_playlist_default_core") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE, diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 0e85be2d15..9d0d87b5b6 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -646,6 +646,7 @@ generic_deferred_push_clear_general(deferred_video_history_list, PUSH_DEFAULT, D generic_deferred_push_clear_general(deferred_push_dropdown_box_list, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST) generic_deferred_push_clear_general(deferred_push_dropdown_box_list_special, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_SPECIAL) generic_deferred_push_clear_general(deferred_push_dropdown_box_list_resolution, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_RESOLUTION) +generic_deferred_push_clear_general(deferred_push_dropdown_box_list_video_shader_num_passes, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_VIDEO_SHADER_NUM_PASSES) generic_deferred_push_clear_general(deferred_push_dropdown_box_list_playlist_default_core, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_DEFAULT_CORE) generic_deferred_push_clear_general(deferred_push_dropdown_box_list_playlist_label_display_mode, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LABEL_DISPLAY_MODE) generic_deferred_push_clear_general(deferred_push_dropdown_box_list_playlist_right_thumbnail_mode, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE) @@ -671,6 +672,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label( {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST, deferred_push_dropdown_box_list}, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_SPECIAL, deferred_push_dropdown_box_list_special}, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_RESOLUTION, deferred_push_dropdown_box_list_resolution}, + {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES, deferred_push_dropdown_box_list_video_shader_num_passes}, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_DEFAULT_CORE, deferred_push_dropdown_box_list_playlist_default_core}, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE, deferred_push_dropdown_box_list_playlist_label_display_mode}, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE, deferred_push_dropdown_box_list_playlist_right_thumbnail_mode}, diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index a686377894..bc742bda26 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -170,6 +170,8 @@ static enum msg_hash_enums action_ok_dl_to_enum(unsigned lbl) { switch (lbl) { + case ACTION_OK_DL_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES: + return MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES; case ACTION_OK_DL_DROPDOWN_BOX_LIST: return MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST; case ACTION_OK_DL_DROPDOWN_BOX_LIST_SPECIAL: @@ -428,6 +430,15 @@ int generic_action_ok_displaylist_push(const char *path, info.enum_idx = MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_SPECIAL; dl_type = DISPLAYLIST_GENERIC; break; + case ACTION_OK_DL_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES: + info.type = type; + info.directory_ptr = idx; + info_path = path; + info_label = msg_hash_to_str( + MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES); + info.enum_idx = MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES; + dl_type = DISPLAYLIST_GENERIC; + break; case ACTION_OK_DL_DROPDOWN_BOX_LIST_RESOLUTION: info.type = type; info.directory_ptr = idx; @@ -5462,6 +5473,25 @@ int action_cb_push_dropdown_item_resolution(const char *path, return 0; } +static int action_ok_push_dropdown_item_video_shader_num_pass(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + bool refresh = false; + struct video_shader *shader = menu_shader_get(); + unsigned pass_count = shader ? shader->passes : 0; + + if (!shader) + return menu_cbs_exit(); + + shader->passes = idx; + + video_shader_resolve_parameters(NULL, shader); + + menu_shader_set_modified(true); + + return action_cancel_pop_default(NULL, NULL, 0, 0); +} + static int action_ok_push_dropdown_item_resolution(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -5854,6 +5884,13 @@ static int action_ok_manual_content_scan_core_name(const char *path, ACTION_OK_DL_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_CORE_NAME); } +static int action_ok_video_shader_num_passes_dropdown_box_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_dropdown_box_list(idx, + ACTION_OK_DL_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES); +} + static int action_ok_manual_content_scan_start(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -6860,6 +6897,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_MANUAL_CONTENT_SCAN_CORE_NAME: BIND_ACTION_OK(cbs, action_ok_manual_content_scan_core_name); break; + case MENU_ENUM_LABEL_VIDEO_SHADER_NUM_PASSES: + BIND_ACTION_OK(cbs, action_ok_video_shader_num_passes_dropdown_box_list); + break; case MENU_ENUM_LABEL_MANUAL_CONTENT_SCAN_DAT_FILE: BIND_ACTION_OK(cbs, action_ok_manual_content_scan_dat_file); break; @@ -7111,6 +7151,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, case MENU_SETTING_DROPDOWN_ITEM_RESOLUTION: BIND_ACTION_OK(cbs, action_ok_push_dropdown_item_resolution); break; + case MENU_SETTING_DROPDOWN_ITEM_VIDEO_SHADER_NUM_PASS: + BIND_ACTION_OK(cbs, action_ok_push_dropdown_item_video_shader_num_pass); + break; case MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_DEFAULT_CORE: BIND_ACTION_OK(cbs, action_ok_push_dropdown_item_playlist_default_core); break; diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index be1b11e9d4..65949cb236 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -402,6 +402,7 @@ default_title_macro(action_get_title_goto_video, MENU_ENUM_LABEL_ default_title_macro(action_get_title_collection, MENU_ENUM_LABEL_VALUE_PLAYLISTS_TAB) default_title_macro(action_get_title_deferred_core_list, MENU_ENUM_LABEL_VALUE_SUPPORTED_CORES) default_title_macro(action_get_title_dropdown_resolution_item, MENU_ENUM_LABEL_VALUE_SCREEN_RESOLUTION) +default_title_macro(action_get_title_dropdown_video_shader_num_pass_item, MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_NUM_PASSES) default_title_macro(action_get_title_dropdown_playlist_default_core_item, MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_DEFAULT_CORE) default_title_macro(action_get_title_dropdown_playlist_label_display_mode_item, MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE) default_title_macro(action_get_title_manual_content_scan_list, MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_LIST) @@ -1445,6 +1446,7 @@ int menu_cbs_init_bind_title(menu_file_list_cbs_t *cbs, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST, action_get_title_dropdown_item}, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_SPECIAL, action_get_title_dropdown_item}, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_RESOLUTION, action_get_title_dropdown_resolution_item }, + {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES, action_get_title_dropdown_video_shader_num_pass_item }, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_DEFAULT_CORE, action_get_title_dropdown_playlist_default_core_item}, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE, action_get_title_dropdown_playlist_label_display_mode_item}, {MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE, action_get_title_dropdown_playlist_right_thumbnail_mode_item}, diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index c5a3abeb88..f95108eede 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -48,6 +48,7 @@ enum ACTION_OK_DL_DROPDOWN_BOX_LIST, ACTION_OK_DL_DROPDOWN_BOX_LIST_SPECIAL, ACTION_OK_DL_DROPDOWN_BOX_LIST_RESOLUTION, + ACTION_OK_DL_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES, ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_DEFAULT_CORE, ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE, ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index d090089c2d..08191a21e4 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -9884,6 +9884,33 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, info->need_push = true; } break; + case DISPLAYLIST_DROPDOWN_LIST_VIDEO_SHADER_NUM_PASSES: + { + unsigned i; + struct video_shader *shader = menu_shader_get(); + unsigned pass_count = shader ? shader->passes : 0; + + menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); + + for (i = 0; i < GFX_MAX_SHADERS+1; i++) + { + char val_d[256]; + snprintf(val_d, sizeof(val_d), "%d", i); + if (menu_entries_append_enum(info->list, + val_d, + val_d, + MENU_ENUM_LABEL_NO_ITEMS, + MENU_SETTING_DROPDOWN_ITEM_VIDEO_SHADER_NUM_PASS, i, 0)) + count++; + + if (i == pass_count) + menu_entries_set_checked(info->list, i, true); + } + + info->need_refresh = true; + info->need_push = true; + } + break; case DISPLAYLIST_DROPDOWN_LIST_SPECIAL: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 46271bfd88..fae49ecf6d 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -56,6 +56,7 @@ enum menu_displaylist_ctl_state DISPLAYLIST_DROPDOWN_LIST, DISPLAYLIST_DROPDOWN_LIST_SPECIAL, DISPLAYLIST_DROPDOWN_LIST_RESOLUTION, + DISPLAYLIST_DROPDOWN_LIST_VIDEO_SHADER_NUM_PASSES, DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_DEFAULT_CORE, DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LABEL_DISPLAY_MODE, DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE, diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 57dbafc211..2a930327d1 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -87,6 +87,7 @@ enum menu_settings_type MENU_PLAYLISTS_TAB, MENU_SETTING_DROPDOWN_ITEM, MENU_SETTING_DROPDOWN_ITEM_RESOLUTION, + MENU_SETTING_DROPDOWN_ITEM_VIDEO_SHADER_NUM_PASS, MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_DEFAULT_CORE, MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LABEL_DISPLAY_MODE, MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_RIGHT_THUMBNAIL_MODE, diff --git a/msg_hash.h b/msg_hash.h index fc6763f286..3b0b03c8d6 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1246,6 +1246,7 @@ enum msg_hash_enums MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST, MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_SPECIAL, MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_RESOLUTION, + MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES, MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_DEFAULT_CORE, MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE, MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE,