(Menu) Runahead global setting now hides the related options

This commit is contained in:
twinaphex 2019-12-20 23:10:35 +01:00
parent de1e66f7a9
commit 021102c62d
2 changed files with 61 additions and 10 deletions

View File

@ -5944,15 +5944,15 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct
#endif
case DISPLAYLIST_LATENCY_SETTINGS_LIST:
{
menu_displaylist_build_info_t build_list[] = {
{MENU_ENUM_LABEL_VIDEO_FRAME_DELAY, PARSE_ONLY_UINT },
{MENU_ENUM_LABEL_AUDIO_LATENCY, PARSE_ONLY_UINT },
{MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR, PARSE_ONLY_UINT },
{MENU_ENUM_LABEL_INPUT_BLOCK_TIMEOUT, PARSE_ONLY_UINT },
{MENU_ENUM_LABEL_RUN_AHEAD_ENABLED, PARSE_ONLY_BOOL },
{MENU_ENUM_LABEL_RUN_AHEAD_FRAMES, PARSE_ONLY_UINT },
{MENU_ENUM_LABEL_RUN_AHEAD_SECONDARY_INSTANCE, PARSE_ONLY_BOOL },
{MENU_ENUM_LABEL_RUN_AHEAD_HIDE_WARNINGS, PARSE_ONLY_BOOL },
menu_displaylist_build_info_selective_t build_list[] = {
{MENU_ENUM_LABEL_VIDEO_FRAME_DELAY, PARSE_ONLY_UINT, true },
{MENU_ENUM_LABEL_AUDIO_LATENCY, PARSE_ONLY_UINT, true },
{MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR, PARSE_ONLY_UINT, true },
{MENU_ENUM_LABEL_INPUT_BLOCK_TIMEOUT, PARSE_ONLY_UINT, true },
{MENU_ENUM_LABEL_RUN_AHEAD_ENABLED, PARSE_ONLY_BOOL, true },
{MENU_ENUM_LABEL_RUN_AHEAD_FRAMES, PARSE_ONLY_UINT, false },
{MENU_ENUM_LABEL_RUN_AHEAD_SECONDARY_INSTANCE, PARSE_ONLY_BOOL, false },
{MENU_ENUM_LABEL_RUN_AHEAD_HIDE_WARNINGS, PARSE_ONLY_BOOL, false },
};
if (video_driver_test_all_flags(GFX_CTX_FLAGS_CUSTOMIZABLE_SWAPCHAIN_IMAGES))
@ -5973,10 +5973,32 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct
PARSE_ONLY_UINT, false);
count++;
}
{
settings_t *settings = config_get_ptr();
if (settings->bools.run_ahead_enabled)
{
for (i = 0; i < ARRAY_SIZE(build_list); i++)
{
switch (build_list[i].enum_idx)
{
case MENU_ENUM_LABEL_RUN_AHEAD_FRAMES:
case MENU_ENUM_LABEL_RUN_AHEAD_SECONDARY_INSTANCE:
case MENU_ENUM_LABEL_RUN_AHEAD_HIDE_WARNINGS:
build_list[i].checked = true;
break;
default:
break;
}
}
}
}
for (i = 0; i < ARRAY_SIZE(build_list); i++)
{
if (menu_displaylist_parse_settings_enum(list,
if (
build_list[i].checked &&
menu_displaylist_parse_settings_enum(list,
build_list[i].enum_idx, build_list[i].parse_type,
false) == 0)
count++;

View File

@ -686,6 +686,20 @@ int setting_uint_action_right_default(
return 0;
}
int setting_bool_action_right_with_refresh(
rarch_setting_t *setting, bool wraparound)
{
bool refresh = false;
setting_set_with_string_representation(setting,
*setting->value.target.boolean ? "false" : "true");
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
return 0;
}
int setting_uint_action_right_with_refresh(
rarch_setting_t *setting, bool wraparound)
{
@ -698,6 +712,19 @@ int setting_uint_action_right_with_refresh(
return retval;
}
int setting_bool_action_left_with_refresh(rarch_setting_t *setting, bool wraparound)
{
bool refresh = false;
setting_set_with_string_representation(setting,
*setting->value.target.boolean ? "false" : "true");
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
return 0;
}
int setting_uint_action_left_with_refresh(rarch_setting_t *setting, bool wraparound)
{
int retval = setting_uint_action_left_default(setting, wraparound);
@ -11501,6 +11528,8 @@ static bool setting_append_list(
general_read_handler,
SD_FLAG_NONE
);
(*list)[list_info->index - 1].action_left = setting_bool_action_left_with_refresh;
(*list)[list_info->index - 1].action_right = setting_bool_action_right_with_refresh;
CONFIG_UINT(
list, list_info,