diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 3f38faca13..8f138c19d2 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -301,6 +301,8 @@ MSG_HASH(MENU_ENUM_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST, "deferred_input_hotkey_binds") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_INPUT_SETTINGS_LIST, "deferred_input_settings_list") +MSG_HASH(MENU_ENUM_LABEL_DEFERRED_LATENCY_SETTINGS_LIST, + "deferred_latency_settings_list") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_LAKKA_LIST, "deferred_lakka_list") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST, @@ -529,6 +531,8 @@ MSG_HASH(MENU_ENUM_LABEL_INPUT_SETTINGS, "input_settings") MSG_HASH(MENU_ENUM_LABEL_INPUT_SETTINGS_BEGIN, "input_settings_begin") +MSG_HASH(MENU_ENUM_LABEL_LATENCY_SETTINGS, + "latency_settings") MSG_HASH(MENU_ENUM_LABEL_INPUT_SMALL_KEYBOARD_ENABLE, "input_small_keyboard_enable") MSG_HASH(MENU_ENUM_LABEL_INPUT_TOUCH_ENABLE, diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index c6de19a42a..923641b474 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -949,6 +949,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_TURBO_PERIOD, "Turbo Period") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_USER_BINDS, "Input User %u Binds") +MSG_HASH(MENU_ENUM_LABEL_VALUE_LATENCY_SETTINGS, + "Latency") MSG_HASH(MENU_ENUM_LABEL_VALUE_INTERNAL_STORAGE_STATUS, "Internal storage status") MSG_HASH(MENU_ENUM_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR, @@ -1979,6 +1981,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_SETTINGS, "Change joypad, keyboard, and mouse settings.") MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_USER_BINDS, "Configure controls for this user.") +MSG_HASH(MENU_ENUM_SUBLABEL_LATENCY_SETTINGS, + "Change settings related to video, audio and input latency.") MSG_HASH(MENU_ENUM_SUBLABEL_LOG_VERBOSITY, "Enable or disable logging to the terminal.") MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY, diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 648caf0128..c3bb2362c2 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -155,6 +155,7 @@ generic_deferred_push(deferred_push_directory_settings_list, DISPLAYLIST_ generic_deferred_push(deferred_push_privacy_settings_list, DISPLAYLIST_PRIVACY_SETTINGS_LIST) generic_deferred_push(deferred_push_audio_settings_list, DISPLAYLIST_AUDIO_SETTINGS_LIST) generic_deferred_push(deferred_push_input_settings_list, DISPLAYLIST_INPUT_SETTINGS_LIST) +generic_deferred_push(deferred_push_latency_settings_list, DISPLAYLIST_LATENCY_SETTINGS_LIST) generic_deferred_push(deferred_push_recording_settings_list, DISPLAYLIST_RECORDING_SETTINGS_LIST) generic_deferred_push(deferred_push_playlist_settings_list, DISPLAYLIST_PLAYLIST_SETTINGS_LIST) generic_deferred_push(deferred_push_input_hotkey_binds_list, DISPLAYLIST_INPUT_HOTKEY_BINDS_LIST) @@ -808,6 +809,11 @@ static int menu_cbs_init_bind_deferred_push_compare_label( { BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_audio_settings_list); } + else if (strstr(label, + msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LATENCY_SETTINGS_LIST))) + { + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_latency_settings_list); + } else if (strstr(label, msg_hash_to_str(MENU_ENUM_LABEL_CORE_INFORMATION))) { @@ -1158,6 +1164,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label( case MENU_ENUM_LABEL_DEFERRED_AUDIO_SETTINGS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_audio_settings_list); break; + case MENU_ENUM_LABEL_DEFERRED_LATENCY_SETTINGS_LIST: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_latency_settings_list); + break; case MENU_ENUM_LABEL_DEFERRED_CORE_SETTINGS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_settings_list); break; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index f0296a7ced..ff85e2c327 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -251,6 +251,8 @@ static enum msg_hash_enums action_ok_dl_to_enum(unsigned lbl) return MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_LIST; case ACTION_OK_DL_INPUT_SETTINGS_LIST: return MENU_ENUM_LABEL_DEFERRED_INPUT_SETTINGS_LIST; + case ACTION_OK_DL_LATENCY_SETTINGS_LIST: + return MENU_ENUM_LABEL_DEFERRED_LATENCY_SETTINGS_LIST; case ACTION_OK_DL_DRIVER_SETTINGS_LIST: return MENU_ENUM_LABEL_DEFERRED_DRIVER_SETTINGS_LIST; case ACTION_OK_DL_CORE_SETTINGS_LIST: @@ -798,6 +800,7 @@ int generic_action_ok_displaylist_push(const char *path, break; case ACTION_OK_DL_ACCOUNTS_LIST: case ACTION_OK_DL_INPUT_SETTINGS_LIST: + case ACTION_OK_DL_LATENCY_SETTINGS_LIST: case ACTION_OK_DL_DRIVER_SETTINGS_LIST: case ACTION_OK_DL_CORE_SETTINGS_LIST: case ACTION_OK_DL_VIDEO_SETTINGS_LIST: @@ -3219,6 +3222,7 @@ default_action_ok_func(action_ok_push_configuration_settings_list, ACTION_OK_DL_ default_action_ok_func(action_ok_push_core_settings_list, ACTION_OK_DL_CORE_SETTINGS_LIST) default_action_ok_func(action_ok_push_audio_settings_list, ACTION_OK_DL_AUDIO_SETTINGS_LIST) default_action_ok_func(action_ok_push_input_settings_list, ACTION_OK_DL_INPUT_SETTINGS_LIST) +default_action_ok_func(action_ok_push_latency_settings_list, ACTION_OK_DL_LATENCY_SETTINGS_LIST) default_action_ok_func(action_ok_push_recording_settings_list, ACTION_OK_DL_RECORDING_SETTINGS_LIST) default_action_ok_func(action_ok_push_playlist_settings_list, ACTION_OK_DL_PLAYLIST_SETTINGS_LIST) default_action_ok_func(action_ok_push_input_hotkey_binds_list, ACTION_OK_DL_INPUT_HOTKEY_BINDS_LIST) @@ -4218,6 +4222,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_AUDIO_SETTINGS: BIND_ACTION_OK(cbs, action_ok_push_audio_settings_list); break; + case MENU_ENUM_LABEL_LATENCY_SETTINGS: + BIND_ACTION_OK(cbs, action_ok_push_latency_settings_list); + break; case MENU_ENUM_LABEL_CORE_SETTINGS: BIND_ACTION_OK(cbs, action_ok_push_core_settings_list); break; diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 1f59d48752..d9841a6294 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -79,6 +79,7 @@ default_sublabel_macro(action_bind_sublabel_suspend_screensaver_enable, MENU_ default_sublabel_macro(action_bind_sublabel_video_window_scale, MENU_ENUM_SUBLABEL_VIDEO_WINDOW_SCALE) default_sublabel_macro(action_bind_sublabel_audio_settings_list, MENU_ENUM_SUBLABEL_AUDIO_SETTINGS) default_sublabel_macro(action_bind_sublabel_input_settings_list, MENU_ENUM_SUBLABEL_INPUT_SETTINGS) +default_sublabel_macro(action_bind_sublabel_latency_settings_list, MENU_ENUM_SUBLABEL_LATENCY_SETTINGS) default_sublabel_macro(action_bind_sublabel_wifi_settings_list, MENU_ENUM_SUBLABEL_WIFI_SETTINGS) default_sublabel_macro(action_bind_sublabel_netplay_lan_scan_settings_list,MENU_ENUM_SUBLABEL_NETPLAY_LAN_SCAN_SETTINGS) default_sublabel_macro(action_bind_sublabel_help_list, MENU_ENUM_SUBLABEL_HELP_LIST) @@ -1501,6 +1502,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_AUDIO_SETTINGS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_settings_list); break; + case MENU_ENUM_LABEL_LATENCY_SETTINGS: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_latency_settings_list); + break; case MENU_ENUM_LABEL_RECORDING_SETTINGS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_recording_settings_list); break; diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index c5f99e6dc6..0396b7826c 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -125,6 +125,7 @@ default_title_macro(action_get_privacy_settings_list, MENU_ENUM_LABEL_ default_title_macro(action_get_updater_settings_list, MENU_ENUM_LABEL_VALUE_UPDATER_SETTINGS) default_title_macro(action_get_audio_settings_list, MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS) default_title_macro(action_get_input_settings_list, MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS) +default_title_macro(action_get_latency_settings_list, MENU_ENUM_LABEL_VALUE_LATENCY_SETTINGS) default_title_macro(action_get_core_cheat_options_list, MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS) default_title_macro(action_get_load_content_list, MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST) default_title_macro(action_get_load_content_special, MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_SPECIAL) @@ -475,6 +476,11 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, BIND_ACTION_GET_TITLE(cbs, action_get_audio_settings_list); return 0; } + else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LATENCY_SETTINGS_LIST))) + { + BIND_ACTION_GET_TITLE(cbs, action_get_latency_settings_list); + return 0; + } else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_SYSTEM_INFORMATION))) { BIND_ACTION_GET_TITLE(cbs, action_get_system_information_list); diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index e28dc238e9..60e58e04e6 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -2728,6 +2728,8 @@ static void materialui_list_insert(void *userdata, || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_SETTINGS)) || + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_LATENCY_SETTINGS)) + || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_HOTKEY_BINDS)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CORE_SETTINGS)) diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 864b8f06fa..b0fff984c9 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -68,6 +68,7 @@ enum ACTION_OK_DL_DRIVER_SETTINGS_LIST, ACTION_OK_DL_VIDEO_SETTINGS_LIST, ACTION_OK_DL_AUDIO_SETTINGS_LIST, + ACTION_OK_DL_LATENCY_SETTINGS_LIST, ACTION_OK_DL_CONFIGURATION_SETTINGS_LIST, ACTION_OK_DL_SAVING_SETTINGS_LIST, ACTION_OK_DL_LOGGING_SETTINGS_LIST, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 229a2392ea..a26e2e03c6 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -5005,17 +5005,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_SLOWMOTION_RATIO, PARSE_ONLY_FLOAT, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_RUN_AHEAD_ENABLED, - PARSE_ONLY_BOOL, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_RUN_AHEAD_FRAMES, - PARSE_ONLY_UINT, false); -#if defined(HAVE_DYNAMIC) && HAVE_DYNAMIC - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_RUN_AHEAD_SECONDARY_INSTANCE, - PARSE_ONLY_BOOL, false); -#endif if (settings->bools.menu_show_advanced_settings) menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_MENU_THROTTLE_FRAMERATE, @@ -5932,18 +5921,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL, PARSE_ONLY_UINT, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, - PARSE_ONLY_UINT, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_VIDEO_HARD_SYNC, - PARSE_ONLY_BOOL, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES, - PARSE_ONLY_UINT, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_VIDEO_FRAME_DELAY, - PARSE_ONLY_UINT, false); menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION, PARSE_ONLY_BOOL, false); @@ -6004,9 +5981,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_AUDIO_SYNC, PARSE_ONLY_BOOL, false); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_AUDIO_LATENCY, - PARSE_ONLY_UINT, false); menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_AUDIO_RESAMPLER_QUALITY, PARSE_ONLY_UINT, false); @@ -6056,9 +6030,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) ret = menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_INPUT_UNIFIED_MENU_CONTROLS, PARSE_ONLY_BOOL, false); - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR, - PARSE_ONLY_UINT, false); ret = menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_INPUT_ICADE_ENABLE, PARSE_ONLY_BOOL, false); @@ -6111,6 +6082,41 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) } } + info->need_refresh = true; + info->need_push = true; + break; + case DISPLAYLIST_LATENCY_SETTINGS_LIST: + menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, + PARSE_ONLY_UINT, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_VIDEO_HARD_SYNC, + PARSE_ONLY_BOOL, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES, + PARSE_ONLY_UINT, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_VIDEO_FRAME_DELAY, + PARSE_ONLY_UINT, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_AUDIO_LATENCY, + PARSE_ONLY_UINT, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR, + PARSE_ONLY_UINT, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_RUN_AHEAD_ENABLED, + PARSE_ONLY_BOOL, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_RUN_AHEAD_FRAMES, + PARSE_ONLY_UINT, false); +#if defined(HAVE_DYNAMIC) && HAVE_DYNAMIC + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_RUN_AHEAD_SECONDARY_INSTANCE, + PARSE_ONLY_BOOL, false); +#endif + info->need_refresh = true; info->need_push = true; break; @@ -6124,6 +6130,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) MENU_ENUM_LABEL_AUDIO_SETTINGS, PARSE_ACTION, false); ret = menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_INPUT_SETTINGS, PARSE_ACTION, false); + ret = menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_LATENCY_SETTINGS, PARSE_ACTION, false); ret = menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_CORE_SETTINGS, PARSE_ACTION, false); ret = menu_displaylist_parse_settings_enum(menu, info, diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 7bcd105959..3147c9f62a 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -120,6 +120,7 @@ enum menu_displaylist_ctl_state DISPLAYLIST_AUDIO_SETTINGS_LIST, DISPLAYLIST_CORE_SETTINGS_LIST, DISPLAYLIST_INPUT_SETTINGS_LIST, + DISPLAYLIST_LATENCY_SETTINGS_LIST, DISPLAYLIST_INPUT_HOTKEY_BINDS_LIST, DISPLAYLIST_ONSCREEN_OVERLAY_SETTINGS_LIST, DISPLAYLIST_ONSCREEN_DISPLAY_SETTINGS_LIST, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 65b5ae003f..4f8b30e6ad 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2251,6 +2251,14 @@ static bool setting_append_list( &subgroup_info, parent_group); + CONFIG_ACTION( + list, list_info, + MENU_ENUM_LABEL_LATENCY_SETTINGS, + MENU_ENUM_LABEL_VALUE_LATENCY_SETTINGS, + &group_info, + &subgroup_info, + parent_group); + CONFIG_ACTION( list, list_info, MENU_ENUM_LABEL_CORE_SETTINGS, diff --git a/msg_hash.h b/msg_hash.h index 7070f56a4d..1ebe02b5a7 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -976,6 +976,7 @@ enum msg_hash_enums MENU_ENUM_LABEL_DEFERRED_RECORDING_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_PLAYLIST_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_INPUT_SETTINGS_LIST, + MENU_ENUM_LABEL_DEFERRED_LATENCY_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_DRIVER_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_VIDEO_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_CONFIGURATION_SETTINGS_LIST, @@ -1477,6 +1478,7 @@ enum msg_hash_enums MENU_LABEL(DRIVER_SETTINGS), MENU_LABEL(VIDEO_SETTINGS), MENU_LABEL(AUDIO_SETTINGS), + MENU_LABEL(LATENCY_SETTINGS), MENU_LABEL(CORE_SETTINGS), MENU_LABEL(CONFIGURATION_SETTINGS), MENU_LABEL(LOGGING_SETTINGS),