diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 9797389437..c4a83f9689 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -439,6 +439,8 @@ MSG_HASH(MENU_ENUM_LABEL_DEFERRED_VIDEO_OUTPUT_SETTINGS_LIST, "deferred_video_output_settings_list") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_VIDEO_SCALING_SETTINGS_LIST, "deferred_video_scaling_settings_list") +MSG_HASH(MENU_ENUM_LABEL_DEFERRED_VIDEO_SYNCHRONIZATION_SETTINGS_LIST, + "deferred_video_synchronization_settings_list") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_CRT_SWITCHRES_SETTINGS_LIST, "deferred_crt_switchres_settings_list") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_WIFI_SETTINGS_LIST, @@ -1419,6 +1421,8 @@ MSG_HASH(MENU_ENUM_LABEL_VIDEO_FULLSCREEN_MODE_SETTINGS, "video_fullscreen_mode_settings") MSG_HASH(MENU_ENUM_LABEL_VIDEO_SCALING_SETTINGS, "video_scaling_settings") +MSG_HASH(MENU_ENUM_LABEL_VIDEO_SYNCHRONIZATION_SETTINGS, + "video_synchronization_settings") MSG_HASH(MENU_ENUM_LABEL_VIDEO_OUTPUT_SETTINGS, "video_output_settings") MSG_HASH(MENU_ENUM_LABEL_CRT_SWITCHRES_SETTINGS, diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index ebcc1646d5..058217c07d 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -10228,3 +10228,11 @@ MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_OUTPUT_SETTINGS, "Change video output settings." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SYNCHRONIZATION_SETTINGS, + "Synchronization" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SYNCHRONIZATION_SETTINGS, + "Change video synchronization settings." + ) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index f525b89415..956832fa8c 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -147,6 +147,7 @@ generic_deferred_push(deferred_push_core_settings_list, DISPLAYLIST_ generic_deferred_push(deferred_push_video_settings_list, DISPLAYLIST_VIDEO_SETTINGS_LIST) generic_deferred_push(deferred_push_video_fullscreen_mode_settings_list, DISPLAYLIST_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST) generic_deferred_push(deferred_push_video_windowed_mode_settings_list, DISPLAYLIST_VIDEO_WINDOWED_MODE_SETTINGS_LIST) +generic_deferred_push(deferred_push_video_synchronization_settings_list, DISPLAYLIST_VIDEO_SYNCHRONIZATION_SETTINGS_LIST) generic_deferred_push(deferred_push_video_output_settings_list, DISPLAYLIST_VIDEO_OUTPUT_SETTINGS_LIST) generic_deferred_push(deferred_push_video_scaling_settings_list, DISPLAYLIST_VIDEO_SCALING_SETTINGS_LIST) generic_deferred_push(deferred_push_crt_switchres_settings_list, DISPLAYLIST_CRT_SWITCHRES_SETTINGS_LIST) @@ -729,6 +730,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label( {MENU_ENUM_LABEL_DEFERRED_VIDEO_SETTINGS_LIST, deferred_push_video_settings_list}, {MENU_ENUM_LABEL_DEFERRED_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST, deferred_push_video_fullscreen_mode_settings_list}, {MENU_ENUM_LABEL_DEFERRED_VIDEO_WINDOWED_MODE_SETTINGS_LIST, deferred_push_video_windowed_mode_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_VIDEO_SYNCHRONIZATION_SETTINGS_LIST, deferred_push_video_synchronization_settings_list}, {MENU_ENUM_LABEL_DEFERRED_VIDEO_OUTPUT_SETTINGS_LIST, deferred_push_video_output_settings_list}, {MENU_ENUM_LABEL_DEFERRED_VIDEO_SCALING_SETTINGS_LIST, deferred_push_video_scaling_settings_list}, {MENU_ENUM_LABEL_DEFERRED_CRT_SWITCHRES_SETTINGS_LIST, deferred_push_crt_switchres_settings_list}, @@ -1069,6 +1071,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label( case MENU_ENUM_LABEL_DEFERRED_VIDEO_WINDOWED_MODE_SETTINGS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_video_windowed_mode_settings_list); break; + case MENU_ENUM_LABEL_DEFERRED_VIDEO_SYNCHRONIZATION_SETTINGS_LIST: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_video_synchronization_settings_list); + break; case MENU_ENUM_LABEL_DEFERRED_VIDEO_OUTPUT_SETTINGS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_video_output_settings_list); break; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 5f6a2c3351..838d73292e 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -202,6 +202,8 @@ static enum msg_hash_enums action_ok_dl_to_enum(unsigned lbl) return MENU_ENUM_LABEL_DEFERRED_CORE_SETTINGS_LIST; case ACTION_OK_DL_VIDEO_SETTINGS_LIST: return MENU_ENUM_LABEL_DEFERRED_VIDEO_SETTINGS_LIST; + case ACTION_OK_DL_VIDEO_SYNCHRONIZATION_SETTINGS_LIST: + return MENU_ENUM_LABEL_DEFERRED_VIDEO_SYNCHRONIZATION_SETTINGS_LIST; case ACTION_OK_DL_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST: return MENU_ENUM_LABEL_DEFERRED_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST; case ACTION_OK_DL_VIDEO_WINDOWED_MODE_SETTINGS_LIST: @@ -1019,6 +1021,7 @@ int generic_action_ok_displaylist_push(const char *path, case ACTION_OK_DL_DRIVER_SETTINGS_LIST: case ACTION_OK_DL_CORE_SETTINGS_LIST: case ACTION_OK_DL_VIDEO_SETTINGS_LIST: + case ACTION_OK_DL_VIDEO_SYNCHRONIZATION_SETTINGS_LIST: case ACTION_OK_DL_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST: case ACTION_OK_DL_VIDEO_WINDOWED_MODE_SETTINGS_LIST: case ACTION_OK_DL_VIDEO_SCALING_SETTINGS_LIST: @@ -4740,6 +4743,7 @@ default_action_ok_func(action_ok_push_driver_settings_list, ACTION_OK_DL_DRIVER_ default_action_ok_func(action_ok_push_crt_switchres_settings_list, ACTION_OK_DL_CRT_SWITCHRES_SETTINGS_LIST) default_action_ok_func(action_ok_push_video_settings_list, ACTION_OK_DL_VIDEO_SETTINGS_LIST) default_action_ok_func(action_ok_push_video_fullscreen_mode_settings_list, ACTION_OK_DL_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST) +default_action_ok_func(action_ok_push_video_synchronization_settings_list, ACTION_OK_DL_VIDEO_SYNCHRONIZATION_SETTINGS_LIST) default_action_ok_func(action_ok_push_video_windowed_mode_settings_list, ACTION_OK_DL_VIDEO_WINDOWED_MODE_SETTINGS_LIST) default_action_ok_func(action_ok_push_video_scaling_settings_list, ACTION_OK_DL_VIDEO_SCALING_SETTINGS_LIST) default_action_ok_func(action_ok_push_video_output_settings_list, ACTION_OK_DL_VIDEO_OUTPUT_SETTINGS_LIST) @@ -6397,6 +6401,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_VIDEO_SETTINGS: BIND_ACTION_OK(cbs, action_ok_push_video_settings_list); break; + case MENU_ENUM_LABEL_VIDEO_SYNCHRONIZATION_SETTINGS: + BIND_ACTION_OK(cbs, action_ok_push_video_synchronization_settings_list); + break; case MENU_ENUM_LABEL_VIDEO_FULLSCREEN_MODE_SETTINGS: BIND_ACTION_OK(cbs, action_ok_push_video_fullscreen_mode_settings_list); break; diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 1731458c34..83a64f1667 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -172,6 +172,7 @@ default_sublabel_macro(action_bind_sublabel_quick_menu_views_settings_list, MENU default_sublabel_macro(action_bind_sublabel_settings_views_settings_list, MENU_ENUM_SUBLABEL_SETTINGS_VIEWS_SETTINGS) default_sublabel_macro(action_bind_sublabel_menu_settings_list, MENU_ENUM_SUBLABEL_MENU_SETTINGS) default_sublabel_macro(action_bind_sublabel_video_settings_list, MENU_ENUM_SUBLABEL_VIDEO_SETTINGS) +default_sublabel_macro(action_bind_sublabel_video_synchronization_settings_list, MENU_ENUM_SUBLABEL_VIDEO_SYNCHRONIZATION_SETTINGS) default_sublabel_macro(action_bind_sublabel_video_fullscreen_mode_settings_list, MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN_MODE_SETTINGS) default_sublabel_macro(action_bind_sublabel_video_windowed_mode_settings_list, MENU_ENUM_SUBLABEL_VIDEO_WINDOWED_MODE_SETTINGS) default_sublabel_macro(action_bind_sublabel_video_scaling_settings_list, MENU_ENUM_SUBLABEL_VIDEO_SCALING_SETTINGS) @@ -2698,6 +2699,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_VIDEO_SETTINGS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_settings_list); break; + case MENU_ENUM_LABEL_VIDEO_SYNCHRONIZATION_SETTINGS: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_synchronization_settings_list); + break; case MENU_ENUM_LABEL_VIDEO_FULLSCREEN_MODE_SETTINGS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_fullscreen_mode_settings_list); break; diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index b6aeedd441..8471ca03b3 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -333,6 +333,7 @@ default_title_macro(action_get_video_fullscreen_mode_settings_list, MENU_ENU default_title_macro(action_get_video_windowed_mode_settings_list, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_MODE_SETTINGS) default_title_macro(action_get_video_scaling_settings_list, MENU_ENUM_LABEL_VALUE_VIDEO_SCALING_SETTINGS) default_title_macro(action_get_video_output_settings_list, MENU_ENUM_LABEL_VALUE_VIDEO_OUTPUT_SETTINGS) +default_title_macro(action_get_video_synchronization_settings_list, MENU_ENUM_LABEL_VALUE_VIDEO_SYNCHRONIZATION_SETTINGS) default_title_macro(action_get_crt_switchres_settings_list, MENU_ENUM_LABEL_VALUE_CRT_SWITCHRES_SETTINGS) default_title_macro(action_get_configuration_settings_list, MENU_ENUM_LABEL_VALUE_CONFIGURATION_SETTINGS) default_title_macro(action_get_load_disc_list, MENU_ENUM_LABEL_VALUE_LOAD_DISC) @@ -675,6 +676,7 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, {MENU_ENUM_LABEL_DEFERRED_RECORDING_SETTINGS_LIST, action_get_recording_settings_list}, {MENU_ENUM_LABEL_DEFERRED_VIDEO_SCALING_SETTINGS_LIST, action_get_video_scaling_settings_list}, {MENU_ENUM_LABEL_DEFERRED_VIDEO_OUTPUT_SETTINGS_LIST, action_get_video_output_settings_list}, + {MENU_ENUM_LABEL_DEFERRED_VIDEO_SYNCHRONIZATION_SETTINGS_LIST, action_get_video_synchronization_settings_list}, {MENU_ENUM_LABEL_DEFERRED_VIDEO_WINDOWED_MODE_SETTINGS_LIST, action_get_video_windowed_mode_settings_list}, {MENU_ENUM_LABEL_DEFERRED_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST, action_get_video_fullscreen_mode_settings_list}, }; diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 3c2398f1ab..a0e47de10f 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -84,6 +84,7 @@ enum ACTION_OK_DL_VIDEO_SETTINGS_LIST, ACTION_OK_DL_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST, ACTION_OK_DL_VIDEO_WINDOWED_MODE_SETTINGS_LIST, + ACTION_OK_DL_VIDEO_SYNCHRONIZATION_SETTINGS_LIST, ACTION_OK_DL_VIDEO_OUTPUT_SETTINGS_LIST, ACTION_OK_DL_VIDEO_SCALING_SETTINGS_LIST, ACTION_OK_DL_CRT_SWITCHRES_SETTINGS_LIST, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 2ceeab856f..48360fc394 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4165,12 +4165,16 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct MENU_ENUM_LABEL_VIDEO_FULLSCREEN_MODE_SETTINGS, PARSE_ACTION, false) == 0) count++; + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_VIDEO_WINDOWED_MODE_SETTINGS, + PARSE_ACTION, false) == 0) + count++; if (menu_displaylist_parse_settings_enum(list, MENU_ENUM_LABEL_VIDEO_SCALING_SETTINGS, PARSE_ACTION, false) == 0) count++; if (menu_displaylist_parse_settings_enum(list, - MENU_ENUM_LABEL_VIDEO_WINDOWED_MODE_SETTINGS, + MENU_ENUM_LABEL_VIDEO_SYNCHRONIZATION_SETTINGS, PARSE_ACTION, false) == 0) count++; if (menu_displaylist_parse_settings_enum(list, @@ -4194,40 +4198,6 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct MENU_ENUM_LABEL_VIDEO_THREADED, PARSE_ONLY_BOOL, false) == 0) count++; - if (menu_displaylist_parse_settings_enum(list, - MENU_ENUM_LABEL_VIDEO_VSYNC, - PARSE_ONLY_BOOL, false) == 0) - count++; - if (menu_displaylist_parse_settings_enum(list, - MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL, - PARSE_ONLY_UINT, false) == 0) - count++; - if (menu_displaylist_parse_settings_enum(list, - MENU_ENUM_LABEL_VIDEO_ADAPTIVE_VSYNC, - PARSE_ONLY_BOOL, false) == 0) - count++; - if (video_driver_test_all_flags(GFX_CTX_FLAGS_CUSTOMIZABLE_SWAPCHAIN_IMAGES)) - { - if (menu_displaylist_parse_settings_enum(list, - MENU_ENUM_LABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, - PARSE_ONLY_UINT, false) == 0) - count++; - } - if (video_driver_test_all_flags(GFX_CTX_FLAGS_HARD_SYNC)) - { - if (menu_displaylist_parse_settings_enum(list, - MENU_ENUM_LABEL_VIDEO_HARD_SYNC, - PARSE_ONLY_BOOL, false) == 0) - count++; - if (menu_displaylist_parse_settings_enum(list, - MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES, - PARSE_ONLY_UINT, false) == 0) - count++; - } - if (menu_displaylist_parse_settings_enum(list, - MENU_ENUM_LABEL_VIDEO_FRAME_DELAY, - PARSE_ONLY_UINT, false) == 0) - count++; if (menu_displaylist_parse_settings_enum(list, MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION, PARSE_ONLY_BOOL, false) == 0) @@ -5657,6 +5627,42 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct PARSE_ONLY_FLOAT, false) == 0) count++; break; + case DISPLAYLIST_VIDEO_SYNCHRONIZATION_SETTINGS_LIST: + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_VIDEO_VSYNC, + PARSE_ONLY_BOOL, false) == 0) + count++; + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL, + PARSE_ONLY_UINT, false) == 0) + count++; + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_VIDEO_ADAPTIVE_VSYNC, + PARSE_ONLY_BOOL, false) == 0) + count++; + if (video_driver_test_all_flags(GFX_CTX_FLAGS_CUSTOMIZABLE_SWAPCHAIN_IMAGES)) + { + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, + PARSE_ONLY_UINT, false) == 0) + count++; + } + if (video_driver_test_all_flags(GFX_CTX_FLAGS_HARD_SYNC)) + { + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_VIDEO_HARD_SYNC, + PARSE_ONLY_BOOL, false) == 0) + count++; + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES, + PARSE_ONLY_UINT, false) == 0) + count++; + } + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_VIDEO_FRAME_DELAY, + PARSE_ONLY_UINT, false) == 0) + count++; + break; case DISPLAYLIST_VIDEO_SCALING_SETTINGS_LIST: if (menu_displaylist_parse_settings_enum(list, MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER, @@ -8236,6 +8242,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, case DISPLAYLIST_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST: case DISPLAYLIST_VIDEO_WINDOWED_MODE_SETTINGS_LIST: case DISPLAYLIST_VIDEO_OUTPUT_SETTINGS_LIST: + case DISPLAYLIST_VIDEO_SYNCHRONIZATION_SETTINGS_LIST: case DISPLAYLIST_VIDEO_SCALING_SETTINGS_LIST: case DISPLAYLIST_OPTIONS_DISK: case DISPLAYLIST_AI_SERVICE_SETTINGS_LIST: diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index aecb7d479a..6da0a3b8fc 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -137,6 +137,7 @@ enum menu_displaylist_ctl_state DISPLAYLIST_DRIVER_SETTINGS_LIST, DISPLAYLIST_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST, DISPLAYLIST_VIDEO_WINDOWED_MODE_SETTINGS_LIST, + DISPLAYLIST_VIDEO_SYNCHRONIZATION_SETTINGS_LIST, DISPLAYLIST_VIDEO_OUTPUT_SETTINGS_LIST, DISPLAYLIST_VIDEO_SCALING_SETTINGS_LIST, DISPLAYLIST_CRT_SWITCHRES_SETTINGS_LIST, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index e27ef619a0..2696ca807f 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -9681,6 +9681,14 @@ static bool setting_append_list( END_SUB_GROUP(list, list_info, parent_group); START_SUB_GROUP(list, list_info, "Scaling", &group_info, &subgroup_info, parent_group); + CONFIG_ACTION( + list, list_info, + MENU_ENUM_LABEL_VIDEO_SYNCHRONIZATION_SETTINGS, + MENU_ENUM_LABEL_VALUE_VIDEO_SYNCHRONIZATION_SETTINGS, + &group_info, + &subgroup_info, + parent_group); + CONFIG_ACTION( list, list_info, MENU_ENUM_LABEL_VIDEO_SCALING_SETTINGS, diff --git a/msg_hash.h b/msg_hash.h index 2eb0b6f78f..1e798f1bdb 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1308,6 +1308,7 @@ enum msg_hash_enums MENU_ENUM_LABEL_DEFERRED_VIDEO_WINDOWED_MODE_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_VIDEO_OUTPUT_SETTINGS_LIST, + MENU_ENUM_LABEL_DEFERRED_VIDEO_SYNCHRONIZATION_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_VIDEO_SCALING_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_CRT_SWITCHRES_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_CONFIGURATION_SETTINGS_LIST, @@ -1936,6 +1937,7 @@ enum msg_hash_enums MENU_LABEL(VIDEO_WINDOWED_MODE_SETTINGS), MENU_LABEL(VIDEO_FULLSCREEN_MODE_SETTINGS), MENU_LABEL(VIDEO_OUTPUT_SETTINGS), + MENU_LABEL(VIDEO_SYNCHRONIZATION_SETTINGS), MENU_LABEL(VIDEO_SCALING_SETTINGS), MENU_LABEL(CRT_SWITCHRES_SETTINGS), MENU_LABEL(AUDIO_SETTINGS),