From cbfb1cb3207a7c2c6d611834024dafc20b38ba3f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 23 Sep 2018 13:53:36 +0200 Subject: [PATCH] Add dropdown list for max users and set index offset by 1 - doesn't report correct representation values but too much hassle to implement for now --- menu/menu_displaylist.c | 4 ++-- menu/menu_setting.c | 14 ++++++++++++++ setting_list.c | 11 +++++++++++ setting_list.h | 1 + 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 3ae4f3cf9b..1b80953ae7 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -7710,7 +7710,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) if (setting->get_string_representation) { unsigned orig_value = *setting->value.target.unsigned_integer; - for (i = min; i <= max; i += step) + for (i = min; i <= (max + (setting->offset_by)); i += step) { char val_s[256], val_d[256]; int val = (int)i; @@ -7735,7 +7735,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) } else { - for (i = min; i <= max; i += step) + for (i = min; i <= (max + (setting->offset_by)); i += step) { char val_s[16], val_d[16]; int val = (int)i; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 7e7b5557ce..fd6946f1eb 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -175,6 +175,16 @@ static int setting_action_ok_uint(void *data, bool wraparound) return 0; } +static void setting_get_string_representation_max_users(void *data, + char *s, size_t len) +{ + rarch_setting_t *setting = (rarch_setting_t*)data; + if (!setting) + return; + + snprintf(s, len, "%d", *setting->value.target.unsigned_integer); +} + #ifdef HAVE_CHEEVOS static void setting_get_string_representation_cheevos_password(void *data, char *s, size_t len) @@ -5522,6 +5532,10 @@ 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].get_string_representation = + &setting_get_string_representation_max_users; + (*list)[list_info->index - 1].offset_by = 1; menu_settings_list_current_add_range(list, list_info, 1, MAX_USERS, 1, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_LAKKA_ADVANCED); diff --git a/setting_list.c b/setting_list.c index f7b265b0af..57bd0579d5 100644 --- a/setting_list.c +++ b/setting_list.c @@ -858,6 +858,7 @@ static rarch_setting_t setting_action_setting(const char* name, result.index = 0; result.index_offset = 0; + result.offset_by = 0; result.min = 0.0; result.max = 0.0; @@ -920,6 +921,7 @@ static rarch_setting_t setting_group_setting(enum setting_type type, const char* result.index = 0; result.index_offset = 0; + result.offset_by = 0; result.min = 0.0; result.max = 0.0; @@ -993,6 +995,7 @@ static rarch_setting_t setting_float_setting(const char* name, result.index = 0; result.index_offset = 0; + result.offset_by = 0; result.min = 0.0; result.max = 0.0; @@ -1069,6 +1072,7 @@ static rarch_setting_t setting_uint_setting(const char* name, result.index = 0; result.index_offset = 0; + result.offset_by = 0; result.min = 0.0; result.max = 0.0; @@ -1147,6 +1151,7 @@ static rarch_setting_t setting_size_setting(const char* name, result.index = 0; result.index_offset = 0; + result.offset_by = 0; result.min = 0.0; result.max = 0.0; @@ -1223,6 +1228,7 @@ static rarch_setting_t setting_hex_setting(const char* name, result.index = 0; result.index_offset = 0; + result.offset_by = 0; result.min = 0.0; result.max = 0.0; @@ -1300,6 +1306,7 @@ static rarch_setting_t setting_bind_setting(const char* name, result.index = idx; result.index_offset = idx_offset; + result.offset_by = 0; result.min = 0.0; result.max = 0.0; @@ -1459,6 +1466,7 @@ static rarch_setting_t setting_string_setting(enum setting_type type, result.index = 0; result.index_offset = 0; + result.offset_by = 0; result.min = 0.0; result.max = 0.0; @@ -1580,6 +1588,7 @@ static rarch_setting_t setting_subgroup_setting(enum setting_type type, result.index = 0; result.index_offset = 0; + result.offset_by = 0; result.min = 0.0; result.max = 0.0; @@ -1654,6 +1663,7 @@ static rarch_setting_t setting_bool_setting(const char* name, result.index = 0; result.index_offset = 0; + result.offset_by = 0; result.min = 0.0; result.max = 0.0; @@ -1732,6 +1742,7 @@ static rarch_setting_t setting_int_setting(const char* name, result.index = 0; result.index_offset = 0; + result.offset_by = 0; result.min = 0.0; result.max = 0.0; diff --git a/setting_list.h b/setting_list.h index 0964091971..3616484943 100644 --- a/setting_list.h +++ b/setting_list.h @@ -102,6 +102,7 @@ struct rarch_setting uint8_t index; uint32_t index_offset; + uint8_t offset_by; unsigned bind_type; uint32_t size;