mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 19:20:35 +00:00
Add dropdown list for Netplay Latency Frame settings
This commit is contained in:
parent
ff949328d2
commit
962680abb8
@ -1669,6 +1669,7 @@ static int menu_cbs_init_bind_get_string_representation_compare_type(
|
||||
case 26: /* URL entries */
|
||||
BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_entry_url);
|
||||
break;
|
||||
case MENU_SETTING_DROPDOWN_SETTING_INT_ITEM:
|
||||
case MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM:
|
||||
case MENU_SETTING_DROPDOWN_ITEM:
|
||||
case MENU_SETTING_NO_ITEM:
|
||||
|
@ -4269,6 +4269,19 @@ int action_ok_push_filebrowser_list_file_select(const char *path,
|
||||
entry_idx, ACTION_OK_DL_FILE_BROWSER_SELECT_DIR);
|
||||
}
|
||||
|
||||
static int action_ok_push_dropdown_setting_int_item(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
enum msg_hash_enums enum_idx = (enum msg_hash_enums)atoi(label);
|
||||
rarch_setting_t *setting = menu_setting_find_enum(enum_idx);
|
||||
|
||||
if (!setting)
|
||||
return -1;
|
||||
|
||||
*setting->value.target.integer = idx + setting->offset_by;
|
||||
return action_cancel_pop_default(NULL, NULL, 0, 0);
|
||||
}
|
||||
|
||||
static int action_ok_push_dropdown_setting_uint_item(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
@ -5344,6 +5357,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case MENU_SETTING_DROPDOWN_SETTING_INT_ITEM:
|
||||
BIND_ACTION_OK(cbs, action_ok_push_dropdown_setting_int_item);
|
||||
break;
|
||||
case MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM:
|
||||
BIND_ACTION_OK(cbs, action_ok_push_dropdown_setting_uint_item);
|
||||
break;
|
||||
|
@ -4230,6 +4230,62 @@ void menu_displaylist_info_init(menu_displaylist_info_t *info)
|
||||
info->setting = NULL;
|
||||
}
|
||||
|
||||
static void menu_displaylist_enumerate_range(menu_displaylist_info_t *info,
|
||||
rarch_setting_t *setting, unsigned setting_type)
|
||||
{
|
||||
if (setting->enforce_minrange && setting->enforce_maxrange)
|
||||
{
|
||||
float i;
|
||||
float step = setting->step;
|
||||
double min = setting->min;
|
||||
double max = setting->max;
|
||||
|
||||
if (setting->get_string_representation)
|
||||
{
|
||||
unsigned orig_value = *setting->value.target.unsigned_integer;
|
||||
for (i = min; i <= max; i += step)
|
||||
{
|
||||
char val_s[256], val_d[256];
|
||||
int val = (int)i;
|
||||
|
||||
/* TODO/FIXME -
|
||||
* get_string_representation for aspect ratio index
|
||||
* uses setting->value.target.unsigned_integer, so
|
||||
* create this hack */
|
||||
*setting->value.target.unsigned_integer = val;
|
||||
|
||||
setting->get_string_representation(setting,
|
||||
val_s, sizeof(val_s));
|
||||
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
|
||||
menu_entries_append_enum(info->list,
|
||||
val_s,
|
||||
val_d,
|
||||
MENU_ENUM_LABEL_NO_ITEMS,
|
||||
setting_type, val, 0);
|
||||
}
|
||||
|
||||
*setting->value.target.unsigned_integer = orig_value;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = min; i <= max; i += step)
|
||||
{
|
||||
char val_s[16], val_d[16];
|
||||
int val = (int)i;
|
||||
|
||||
snprintf(val_s, sizeof(val_s), "%d", val);
|
||||
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
val_s,
|
||||
val_d,
|
||||
MENU_ENUM_LABEL_NO_ITEMS,
|
||||
setting_type, val, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
||||
{
|
||||
size_t i;
|
||||
@ -7697,60 +7753,17 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
||||
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||
|
||||
unsigned setting_type = 0;
|
||||
|
||||
switch (setting->type)
|
||||
{
|
||||
case ST_INT:
|
||||
setting_type = MENU_SETTING_DROPDOWN_SETTING_INT_ITEM;
|
||||
menu_displaylist_enumerate_range(info, setting, setting_type);
|
||||
break;
|
||||
case ST_UINT:
|
||||
if (setting->enforce_minrange && setting->enforce_maxrange)
|
||||
{
|
||||
float i;
|
||||
float step = setting->step;
|
||||
double min = setting->min;
|
||||
double max = setting->max;
|
||||
|
||||
if (setting->get_string_representation)
|
||||
{
|
||||
unsigned orig_value = *setting->value.target.unsigned_integer;
|
||||
for (i = min; i <= max; i += step)
|
||||
{
|
||||
char val_s[256], val_d[256];
|
||||
int val = (int)i;
|
||||
|
||||
/* TODO/FIXME -
|
||||
* get_string_representation for aspect ratio index
|
||||
* uses setting->value.target.unsigned_integer, so
|
||||
* create this hack */
|
||||
*setting->value.target.unsigned_integer = val;
|
||||
|
||||
setting->get_string_representation(setting,
|
||||
val_s, sizeof(val_s));
|
||||
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
|
||||
menu_entries_append_enum(info->list,
|
||||
val_s,
|
||||
val_d,
|
||||
MENU_ENUM_LABEL_NO_ITEMS,
|
||||
MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM, val, 0);
|
||||
}
|
||||
|
||||
*setting->value.target.unsigned_integer = orig_value;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = min; i <= max; i += step)
|
||||
{
|
||||
char val_s[16], val_d[16];
|
||||
int val = (int)i;
|
||||
|
||||
snprintf(val_s, sizeof(val_s), "%d", val);
|
||||
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
|
||||
|
||||
menu_entries_append_enum(info->list,
|
||||
val_s,
|
||||
val_d,
|
||||
MENU_ENUM_LABEL_NO_ITEMS,
|
||||
MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM, val, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
setting_type = MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM;
|
||||
menu_displaylist_enumerate_range(info, setting, setting_type);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -148,6 +148,7 @@ enum menu_settings_type
|
||||
MENU_ADD_TAB,
|
||||
MENU_PLAYLISTS_TAB,
|
||||
MENU_SETTING_DROPDOWN_ITEM,
|
||||
MENU_SETTING_DROPDOWN_SETTING_INT_ITEM,
|
||||
MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM,
|
||||
MENU_SETTING_NO_ITEM,
|
||||
MENU_SETTING_DRIVER,
|
||||
|
@ -4755,6 +4755,8 @@ static bool setting_append_list(
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
|
||||
(*list)[list_info->index - 1].offset_by = 1;
|
||||
menu_settings_list_current_add_range(list, list_info, 1, 100, 1, true, true);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_LAKKA_ADVANCED);
|
||||
}
|
||||
@ -4913,6 +4915,8 @@ static bool setting_append_list(
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
|
||||
(*list)[list_info->index - 1].offset_by = 1;
|
||||
menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_VIDEO_SET_BLOCKING_STATE);
|
||||
menu_settings_list_current_add_range(list, list_info, 1, 4, 1, true, true);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO);
|
||||
@ -8534,6 +8538,7 @@ static bool setting_append_list(
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
|
||||
menu_settings_list_current_add_range(list, list_info, 0, 15, 1, true, true);
|
||||
|
||||
CONFIG_INT(
|
||||
@ -8547,6 +8552,7 @@ static bool setting_append_list(
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
|
||||
menu_settings_list_current_add_range(list, list_info, 0, 15, 1, true, true);
|
||||
|
||||
CONFIG_BOOL(
|
||||
|
Loading…
x
Reference in New Issue
Block a user