Reduce snprintf (#14371)

* Don't do snprintf calls in loops that can be done once outside
* Try to prevent some msg_hash_to_str calls in loops
* Add FIXME/TODO localize notes to hardcoded strings
* Reduce some snprintf calls by moving them out of if/else blocks
* Simplify early return path for one function
This commit is contained in:
LibretroAdmin 2022-09-01 14:54:07 +02:00 committed by GitHub
parent 60030e373e
commit 793370aa97
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1150,18 +1150,21 @@ static unsigned menu_displaylist_parse_core_option_dropdown_list(
retroarch_ctl(RARCH_CTL_CORE_OPTIONS_LIST_GET, &coreopts); retroarch_ctl(RARCH_CTL_CORE_OPTIONS_LIST_GET, &coreopts);
if (!coreopts) if (!coreopts)
goto end; return 0;
/* Path string has the format core_option_<opt_idx> /* Path string has the format core_option_<opt_idx>
* > Extract option index */ * > Extract option index */
if (string_is_empty(info->path)) if (string_is_empty(info->path))
goto end; return 0;
string_list_initialize(&tmp_str_list); string_list_initialize(&tmp_str_list);
string_split_noalloc(&tmp_str_list, info->path, "_"); string_split_noalloc(&tmp_str_list, info->path, "_");
if (tmp_str_list.size < 1) if (tmp_str_list.size < 1)
goto end; {
string_list_deinitialize(&tmp_str_list);
return 0;
}
option_index = string_to_unsigned( option_index = string_to_unsigned(
tmp_str_list.elems[tmp_str_list.size - 1].data); tmp_str_list.elems[tmp_str_list.size - 1].data);
@ -1174,7 +1177,10 @@ static unsigned menu_displaylist_parse_core_option_dropdown_list(
if (!option || if (!option ||
string_is_empty(val)) string_is_empty(val))
goto end; {
string_list_deinitialize(&tmp_str_list);
return 0;
}
lbl_enabled = msg_hash_to_str(MENU_ENUM_LABEL_ENABLED); lbl_enabled = msg_hash_to_str(MENU_ENUM_LABEL_ENABLED);
lbl_disabled = msg_hash_to_str(MENU_ENUM_LABEL_DISABLED); lbl_disabled = msg_hash_to_str(MENU_ENUM_LABEL_DISABLED);
@ -1209,6 +1215,8 @@ static unsigned menu_displaylist_parse_core_option_dropdown_list(
} }
} }
string_list_deinitialize(&tmp_str_list);
if (checked_found) if (checked_found)
{ {
menu_file_list_cbs_t *cbs = (menu_file_list_cbs_t*) menu_file_list_cbs_t *cbs = (menu_file_list_cbs_t*)
@ -1220,8 +1228,6 @@ static unsigned menu_displaylist_parse_core_option_dropdown_list(
menu_navigation_set_selection(checked); menu_navigation_set_selection(checked);
} }
end:
string_list_deinitialize(&tmp_str_list);
return count; return count;
} }
@ -1810,6 +1816,7 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list)
MENU_ENUM_LABEL_SYSTEM_INFO_CONTROLLER_ENTRY, MENU_ENUM_LABEL_SYSTEM_INFO_CONTROLLER_ENTRY,
MENU_SETTINGS_CORE_INFO_NONE, 0, 0, NULL)) MENU_SETTINGS_CORE_INFO_NONE, 0, 0, NULL))
count++; count++;
/* TODO/FIXME - Localize */
snprintf(tmp, sizeof(tmp), " Device VID/PID: %d/%d", snprintf(tmp, sizeof(tmp), " Device VID/PID: %d/%d",
input_config_get_device_vid(controller), input_config_get_device_vid(controller),
input_config_get_device_pid(controller)); input_config_get_device_pid(controller));
@ -2425,7 +2432,7 @@ static int create_string_list_rdb_entry_int(
str_len += strlen(label) + 1; str_len += strlen(label) + 1;
string_list_append(&str_list, label, attr); string_list_append(&str_list, label, attr);
_len = snprintf(str, sizeof(str), "%d", actual_int); _len = snprintf(str, sizeof(str), "%d", actual_int);
str_len += _len + 1; str_len += _len + 1;
string_list_append(&str_list, str, attr); string_list_append(&str_list, str, attr);
@ -5125,7 +5132,6 @@ static int menu_displaylist_parse_input_device_index_list(
{ {
char device_id[10]; char device_id[10];
char device_label[128]; char device_label[128];
const char *device_name = NULL;
const char *val_port = NULL; const char *val_port = NULL;
const char *val_na = NULL; const char *val_na = NULL;
const char *val_disabled = NULL; const char *val_disabled = NULL;
@ -5162,11 +5168,10 @@ static int menu_displaylist_parse_input_device_index_list(
snprintf(device_id, sizeof(device_id), "%d", i); snprintf(device_id, sizeof(device_id), "%d", i);
device_label[0] = '\0'; device_label[0] = '\0';
device_name = NULL;
if (i < max_devices) if (i < max_devices)
{ {
device_name = input_config_get_device_display_name(i) ? const char *device_name = input_config_get_device_display_name(i) ?
input_config_get_device_display_name(i) : input_config_get_device_name(i); input_config_get_device_display_name(i) : input_config_get_device_name(i);
if (!string_is_empty(device_name)) if (!string_is_empty(device_name))
@ -5486,7 +5491,7 @@ static int menu_displaylist_parse_input_description_kbd_list(
} }
else else
{ {
/* TODO/FIXME: Localise 'Keyboard' */ /* TODO/FIXME: Localize 'Keyboard' */
strlcpy(input_description, "Keyboard ", sizeof(input_description)); strlcpy(input_description, "Keyboard ", sizeof(input_description));
strlcat(input_description, key_label, sizeof(input_description)); strlcat(input_description, key_label, sizeof(input_description));
} }
@ -5909,19 +5914,20 @@ static int menu_displaylist_parse_disc_info(file_list_t *info_list,
unsigned type) unsigned type)
{ {
unsigned i; unsigned i;
unsigned count = 0; unsigned count = 0;
struct string_list *list = cdrom_get_available_drives(); struct string_list *list = cdrom_get_available_drives();
const char *msg_drive_number = msg_hash_to_str(MSG_DRIVE_NUMBER);
for (i = 0; list && i < list->size; i++) for (i = 0; list && i < list->size; i++)
{ {
char drive[2];
char drive_string[256] = {0}; char drive_string[256] = {0};
char drive[2] = {0}; size_t pos = snprintf(drive_string, sizeof(drive_string),
size_t pos = 0; msg_drive_number, i + 1);
pos += snprintf(drive_string + pos, sizeof(drive_string) - pos, ": %s", list->elems[i].data);
drive[0] = list->elems[i].attr.i; drive[0] = list->elems[i].attr.i;
drive[1] = '\0';
pos += snprintf(drive_string + pos, sizeof(drive_string) - pos, msg_hash_to_str(MSG_DRIVE_NUMBER), i + 1);
pos += snprintf(drive_string + pos, sizeof(drive_string) - pos, ": %s", list->elems[i].data);
if (menu_entries_append(info_list, if (menu_entries_append(info_list,
drive_string, drive_string,
@ -5984,7 +5990,7 @@ static unsigned menu_displaylist_populate_subsystem(
{ {
if (content_get_subsystem_rom_id() < subsystem->num_roms) if (content_get_subsystem_rom_id() < subsystem->num_roms)
{ {
/* TODO/FIXME - localize string */ /* TODO/FIXME - Localize string */
size_t _len = strlcpy(s, "Load", sizeof(s)); size_t _len = strlcpy(s, "Load", sizeof(s));
s[_len ] = ' '; s[_len ] = ' ';
s[_len+1] = '\0'; s[_len+1] = '\0';
@ -5998,7 +6004,7 @@ static unsigned menu_displaylist_populate_subsystem(
if (is_rgui && !menu_show_sublabels) if (is_rgui && !menu_show_sublabels)
{ {
strlcat(s, " [", sizeof(s)); strlcat(s, " [", sizeof(s));
/* TODO/FIXME - localize */ /* TODO/FIXME - Localize */
_len = strlcat(s, "Current Content:", sizeof(s)); _len = strlcat(s, "Current Content:", sizeof(s));
s[_len ] = ' '; s[_len ] = ' ';
s[_len+1] = '\0'; s[_len+1] = '\0';
@ -6018,7 +6024,7 @@ static unsigned menu_displaylist_populate_subsystem(
} }
else else
{ {
/* TODO/FIXME - localize string */ /* TODO/FIXME - Localize string */
size_t _len = strlcpy(s, "Start", sizeof(s)); size_t _len = strlcpy(s, "Start", sizeof(s));
s[_len ] = ' '; s[_len ] = ' ';
s[_len+1] = '\0'; s[_len+1] = '\0';
@ -6062,7 +6068,7 @@ static unsigned menu_displaylist_populate_subsystem(
} }
else else
{ {
/* TODO/FIXME - localize */ /* TODO/FIXME - Localize */
size_t _len = strlcpy(s, "Load", sizeof(s)); size_t _len = strlcpy(s, "Load", sizeof(s));
s[_len ] = ' '; s[_len ] = ' ';
s[_len+1] = '\0'; s[_len+1] = '\0';
@ -6078,7 +6084,7 @@ static unsigned menu_displaylist_populate_subsystem(
if (subsystem->num_roms > 0) if (subsystem->num_roms > 0)
{ {
strlcat(s, " [", sizeof(s)); strlcat(s, " [", sizeof(s));
/* TODO/FIXME - localize */ /* TODO/FIXME - Localize */
strlcat(s, "Current Content:", sizeof(s)); strlcat(s, "Current Content:", sizeof(s));
strlcat(s, " ", sizeof(s)); strlcat(s, " ", sizeof(s));
strlcat(s, subsystem->roms[0].desc, sizeof(s)); strlcat(s, subsystem->roms[0].desc, sizeof(s));
@ -10513,7 +10519,7 @@ unsigned menu_displaylist_netplay_refresh_rooms(file_list_t *list)
char passworded[64]; char passworded[64];
char country[8]; char country[8];
const char *room_type; const char *room_type;
struct netplay_room *room; const char *cnc_netplay_room = NULL;
const char *msg_int_nc = NULL; const char *msg_int_nc = NULL;
const char *msg_int_relay = NULL; const char *msg_int_relay = NULL;
const char *msg_int = NULL; const char *msg_int = NULL;
@ -10589,15 +10595,16 @@ unsigned menu_displaylist_netplay_refresh_rooms(file_list_t *list)
core_info_get_list(&coreinfos); core_info_get_list(&coreinfos);
msg_int_nc = msg_hash_to_str(MSG_INTERNET_NOT_CONNECTABLE); msg_int_nc = msg_hash_to_str(MSG_INTERNET_NOT_CONNECTABLE);
msg_int_relay = msg_hash_to_str(MSG_INTERNET_RELAY); msg_int_relay = msg_hash_to_str(MSG_INTERNET_RELAY);
msg_int = msg_hash_to_str(MSG_INTERNET); msg_int = msg_hash_to_str(MSG_INTERNET);
msg_local = msg_hash_to_str(MSG_LOCAL); msg_local = msg_hash_to_str(MSG_LOCAL);
msg_room_pwd = msg_hash_to_str(MSG_ROOM_PASSWORDED); msg_room_pwd = msg_hash_to_str(MSG_ROOM_PASSWORDED);
cnc_netplay_room = msg_hash_to_str(MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM);
for (i = 0; i < net_st->room_count; i++) for (i = 0; i < net_st->room_count; i++)
{ {
room = &net_st->room_list[i]; struct netplay_room *room = &net_st->room_list[i];
/* Get rid of any room that is not running RetroArch. */ /* Get rid of any room that is not running RetroArch. */
if (!room->is_retroarch) if (!room->is_retroarch)
@ -10657,7 +10664,7 @@ unsigned menu_displaylist_netplay_refresh_rooms(file_list_t *list)
passworded, room_type, room->nickname, country); passworded, room_type, room->nickname, country);
if (menu_entries_append(list, buf, if (menu_entries_append(list, buf,
msg_hash_to_str(MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM), cnc_netplay_room,
MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM, MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM,
(unsigned)MENU_SETTINGS_NETPLAY_ROOMS_START + i, 0, 0, NULL)) (unsigned)MENU_SETTINGS_NETPLAY_ROOMS_START + i, 0, 0, NULL))
count++; count++;
@ -10892,30 +10899,30 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, list); menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, list);
if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL)) if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL))
{ {
if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_SERVER, NULL)) if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_SERVER, NULL))
{ {
menu_entries_append(list, menu_entries_append(list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_DISABLE_HOST), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_DISABLE_HOST),
msg_hash_to_str(MENU_ENUM_LABEL_NETPLAY_DISCONNECT), msg_hash_to_str(MENU_ENUM_LABEL_NETPLAY_DISCONNECT),
MENU_ENUM_LABEL_NETPLAY_DISCONNECT, MENU_ENUM_LABEL_NETPLAY_DISCONNECT,
MENU_SETTING_ACTION, 0, 0, NULL); MENU_SETTING_ACTION, 0, 0, NULL);
if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_DATA_INITED, NULL)) if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_DATA_INITED, NULL))
{ {
menu_entries_append(list, menu_entries_append(list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_KICK), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_KICK),
msg_hash_to_str(MENU_ENUM_LABEL_NETPLAY_KICK), msg_hash_to_str(MENU_ENUM_LABEL_NETPLAY_KICK),
MENU_ENUM_LABEL_NETPLAY_KICK, MENU_ENUM_LABEL_NETPLAY_KICK,
MENU_SETTING_ACTION, 0, 0, NULL); MENU_SETTING_ACTION, 0, 0, NULL);
menu_entries_append(list, menu_entries_append(list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_BAN), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_BAN),
msg_hash_to_str(MENU_ENUM_LABEL_NETPLAY_BAN), msg_hash_to_str(MENU_ENUM_LABEL_NETPLAY_BAN),
MENU_ENUM_LABEL_NETPLAY_BAN, MENU_ENUM_LABEL_NETPLAY_BAN,
MENU_SETTING_ACTION, 0, 0, NULL); MENU_SETTING_ACTION, 0, 0, NULL);
} }
} }
} }
else else
{ {
menu_entries_append(list, menu_entries_append(list,
@ -11153,9 +11160,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
cdrom_device_fillpath(file_path, sizeof(file_path), drive, 0, true); cdrom_device_fillpath(file_path, sizeof(file_path), drive, 0, true);
/* opening the cue triggers storing of TOC info internally */ /* opening the cue triggers storing of TOC info internally */
file = filestream_open(file_path, RETRO_VFS_FILE_ACCESS_READ, 0); if ((file = filestream_open(file_path, RETRO_VFS_FILE_ACCESS_READ,
0)))
if (file)
{ {
const cdrom_toc_t *toc = retro_vfs_file_get_cdrom_toc(); const cdrom_toc_t *toc = retro_vfs_file_get_cdrom_toc();
unsigned first_data_track = 1; unsigned first_data_track = 1;
@ -11199,6 +11205,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
if (!string_is_empty(cd_info.system)) if (!string_is_empty(cd_info.system))
{ {
char system[256]; char system[256];
/* TODO/FIXME - Localize */
strlcpy(system, "System: ", sizeof(system)); strlcpy(system, "System: ", sizeof(system));
strlcat(system, cd_info.system, sizeof(system)); strlcat(system, cd_info.system, sizeof(system));
@ -11230,6 +11237,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
if (!string_is_empty(cd_info.version)) if (!string_is_empty(cd_info.version))
{ {
char version[256]; char version[256];
/* TODO/FIXME - why are we using a Qt core version string
* message here? */
snprintf(version, sizeof(version), snprintf(version, sizeof(version),
"%s: %s", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_CORE_VERSION), cd_info.version); "%s: %s", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_CORE_VERSION), cd_info.version);
@ -11244,6 +11253,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
if (!string_is_empty(cd_info.release_date)) if (!string_is_empty(cd_info.release_date))
{ {
char release_date[256]; char release_date[256];
/* TODO/FIXME - Localize */
snprintf(release_date, sizeof(release_date), snprintf(release_date, sizeof(release_date),
"Release Date: %s", cd_info.release_date); "Release Date: %s", cd_info.release_date);
@ -11257,6 +11267,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
if (atip) if (atip)
{ {
/* TODO/FIXME - Localize */
const char *atip_string = "Genuine Disc: No"; const char *atip_string = "Genuine Disc: No";
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
atip_string, atip_string,
@ -11267,6 +11278,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
} }
else else
{ {
/* TODO/FIXME - Localize */
const char *atip_string = "Genuine Disc: Yes"; const char *atip_string = "Genuine Disc: Yes";
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
atip_string, atip_string,
@ -11277,6 +11289,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
} }
{ {
/* TODO/FIXME - Localize */
char tracks_string[32] = {"Number of tracks: "}; char tracks_string[32] = {"Number of tracks: "};
snprintf(tracks_string + strlen(tracks_string), sizeof(tracks_string) - strlen(tracks_string), "%d", toc->num_tracks); snprintf(tracks_string + strlen(tracks_string), sizeof(tracks_string) - strlen(tracks_string), "%d", toc->num_tracks);
@ -11549,6 +11562,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
char title[PATH_MAX_LENGTH]; char title[PATH_MAX_LENGTH];
char* profile = SWITCH_CPU_PROFILES[i]; char* profile = SWITCH_CPU_PROFILES[i];
char* speed = SWITCH_CPU_SPEEDS[i]; char* speed = SWITCH_CPU_SPEEDS[i];
title[0] = '\0';
snprintf(title, sizeof(title), "%s (%s)", profile, speed); snprintf(title, sizeof(title), "%s (%s)", profile, speed);
@ -11575,7 +11589,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
FILE *profile = NULL; FILE *profile = NULL;
const size_t profiles_count = sizeof(SWITCH_GPU_PROFILES)/sizeof(SWITCH_GPU_PROFILES[1]); const size_t profiles_count = sizeof(SWITCH_GPU_PROFILES)/sizeof(SWITCH_GPU_PROFILES[1]);
runloop_msg_queue_push("Warning : extented overclocking can damage the Switch", 1, 90, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); runloop_msg_queue_push("Warning : extended overclocking can damage the Switch", 1, 90, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
profile = popen("gpu-profile get", "r"); profile = popen("gpu-profile get", "r");
fgets(current_profile, PATH_MAX_LENGTH, profile); fgets(current_profile, PATH_MAX_LENGTH, profile);
@ -11583,6 +11597,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
/* TODO/FIXME - Localize */
snprintf(text, sizeof(text), snprintf(text, sizeof(text),
"Current profile : %s", current_profile); "Current profile : %s", current_profile);
@ -11880,6 +11895,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
if (video_shader_enable) if (video_shader_enable)
{ {
char buf_tmp[64];
size_t _len;
const char *val_shdr = const char *val_shdr =
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SHADER); msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SHADER);
const char *shdr_pass = const char *shdr_pass =
@ -11952,33 +11969,31 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
0, 0, 0, NULL)) 0, 0, 0, NULL))
count++; count++;
_len = strlcpy(buf_tmp, val_shdr, sizeof(buf_tmp));
for (i = 0; i < pass_count; i++) for (i = 0; i < pass_count; i++)
{ {
size_t _len; size_t _len2;
char buf_tmp[64];
char buf[128]; char buf[128];
snprintf(buf_tmp + _len, sizeof(buf_tmp) - _len," #%u", i);
buf_tmp[0] = '\0';
snprintf(buf_tmp, sizeof(buf_tmp),"%s #%u", val_shdr, i);
if (menu_entries_append(info->list, buf_tmp, shdr_pass, if (menu_entries_append(info->list, buf_tmp, shdr_pass,
MENU_ENUM_LABEL_VIDEO_SHADER_PASS, MENU_ENUM_LABEL_VIDEO_SHADER_PASS,
MENU_SETTINGS_SHADER_PASS_0 + i, 0, 0, NULL)) MENU_SETTINGS_SHADER_PASS_0 + i, 0, 0, NULL))
count++; count++;
_len = strlcpy(buf, buf_tmp, sizeof(buf)); _len2 = strlcpy(buf, buf_tmp, sizeof(buf));
buf[_len ] = ' '; buf[_len2 ] = ' ';
buf[_len+1] = '\0'; buf[_len2+1] = '\0';
strlcat(buf, val_filter, sizeof(buf)); strlcat(buf, val_filter, sizeof(buf));
if (menu_entries_append(info->list, buf, shdr_filter_pass, if (menu_entries_append(info->list, buf, shdr_filter_pass,
MENU_ENUM_LABEL_VIDEO_SHADER_FILTER_PASS, MENU_ENUM_LABEL_VIDEO_SHADER_FILTER_PASS,
MENU_SETTINGS_SHADER_PASS_FILTER_0 + i, 0, 0, NULL)) MENU_SETTINGS_SHADER_PASS_FILTER_0 + i, 0, 0, NULL))
count++; count++;
_len = strlcpy(buf, buf_tmp, sizeof(buf)); _len2 = strlcpy(buf, buf_tmp, sizeof(buf));
buf[_len ] = ' '; buf[_len2 ] = ' ';
buf[_len+1] = '\0'; buf[_len2+1] = '\0';
strlcat(buf, val_scale, sizeof(buf)); strlcat(buf, val_scale, sizeof(buf));
if (menu_entries_append(info->list, buf, shdr_scale_pass, if (menu_entries_append(info->list, buf, shdr_scale_pass,
MENU_ENUM_LABEL_VIDEO_SHADER_SCALE_PASS, MENU_ENUM_LABEL_VIDEO_SHADER_SCALE_PASS,
@ -12726,11 +12741,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
if (retroarch_ctl(RARCH_CTL_CORE_OPTIONS_LIST_GET, &coreopts)) if (retroarch_ctl(RARCH_CTL_CORE_OPTIONS_LIST_GET, &coreopts))
{ {
nested_list_item_t *category_item = NULL;
nested_list_t *option_list = NULL;
nested_list_item_t *option_item = NULL;
const struct core_option *option = NULL;
size_t i; size_t i;
nested_list_t *option_list = NULL;
/* Empty 'category' string signifies top /* Empty 'category' string signifies top
* level core options menu */ * level core options menu */
@ -12738,7 +12750,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
option_list = coreopts->option_map; option_list = coreopts->option_map;
else else
{ {
category_item = nested_list_get_item(coreopts->option_map, nested_list_item_t *category_item = nested_list_get_item(coreopts->option_map,
category, NULL); category, NULL);
if (category_item) if (category_item)
option_list = nested_list_item_get_children(category_item); option_list = nested_list_item_get_children(category_item);
@ -12749,8 +12761,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
/* Loop over child options */ /* Loop over child options */
for (i = 0; i < nested_list_get_size(option_list); i++) for (i = 0; i < nested_list_get_size(option_list); i++)
{ {
option_item = nested_list_get_item_idx(option_list, i); nested_list_item_t *option_item = nested_list_get_item_idx(option_list, i);
option = (const struct core_option *) const struct core_option *option = (const struct core_option *)
nested_list_item_get_value(option_item); nested_list_item_get_value(option_item);
/* Check whether this is an option or a /* Check whether this is an option or a
@ -12771,9 +12783,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
else if (option_item) else if (option_item)
{ {
/* This is a subcategory */ /* This is a subcategory */
const char *catgory_id = nested_list_item_get_id(option_item); const char *category_id = nested_list_item_get_id(option_item);
bool category_visible = core_option_manager_get_category_visible( bool category_visible = core_option_manager_get_category_visible(
coreopts, catgory_id); coreopts, category_id);
/* Note: We use nested_list_item_get_id() because we /* Note: We use nested_list_item_get_id() because we
* guarantee that the list can only be two levels * guarantee that the list can only be two levels
@ -12781,10 +12793,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
* have to use nested_list_item_get_address() here */ * have to use nested_list_item_get_address() here */
if (category_visible && if (category_visible &&
!string_is_empty(catgory_id)) !string_is_empty(category_id))
{ {
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
catgory_id, category_id,
msg_hash_to_str(MENU_ENUM_LABEL_CORE_OPTIONS), msg_hash_to_str(MENU_ENUM_LABEL_CORE_OPTIONS),
MENU_ENUM_LABEL_CORE_OPTIONS, MENU_ENUM_LABEL_CORE_OPTIONS,
MENU_SETTING_ACTION_CORE_OPTIONS, 0, 0, NULL)) MENU_SETTING_ACTION_CORE_OPTIONS, 0, 0, NULL))
@ -14143,14 +14155,13 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
if (tmp_str_list.size > 0) if (tmp_str_list.size > 0)
{ {
unsigned i; unsigned i;
char val_s[256], val_d[16];
unsigned size = (unsigned) unsigned size = (unsigned)
tmp_str_list.size; tmp_str_list.size;
bool checked_found = false; bool checked_found = false;
unsigned checked = 0; unsigned checked = 0;
char* orig_val = setting->get_string_representation ?
char* orig_val = setting->get_string_representation ?
strdup(setting->value.target.string) : setting->value.target.string; strdup(setting->value.target.string) : setting->value.target.string;
char val_s[256], val_d[16];
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx); snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
@ -14202,6 +14213,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
case ST_INT: case ST_INT:
{ {
float i; float i;
char val_d[16];
int32_t orig_value = *setting->value.target.integer; int32_t orig_value = *setting->value.target.integer;
unsigned setting_type = MENU_SETTING_DROPDOWN_SETTING_INT_ITEM; unsigned setting_type = MENU_SETTING_DROPDOWN_SETTING_INT_ITEM;
float step = setting->step; float step = setting->step;
@ -14211,18 +14223,17 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
unsigned checked = 0; unsigned checked = 0;
unsigned entry_index = 0; unsigned entry_index = 0;
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (setting->get_string_representation) if (setting->get_string_representation)
{ {
for (i = min; i <= max; i += step) for (i = min; i <= max; i += step)
{ {
char val_s[256], val_d[16]; char val_s[256];
int val = (int)i; int val = (int)i;
*setting->value.target.integer = val; *setting->value.target.integer = val;
setting->get_string_representation(setting, setting->get_string_representation(setting,
val_s, sizeof(val_s)); val_s, sizeof(val_s));
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
val_s, val_s,
val_d, val_d,
@ -14245,11 +14256,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
{ {
for (i = min; i <= max; i += step) for (i = min; i <= max; i += step)
{ {
char val_s[16], val_d[16]; char val_s[16];
int val = (int)i; int val = (int)i;
snprintf(val_s, sizeof(val_s), "%d", val); snprintf(val_s, sizeof(val_s), "%d", val);
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
val_s, val_s,
@ -14280,6 +14289,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
case ST_FLOAT: case ST_FLOAT:
{ {
float i; float i;
char val_d[16];
float orig_value = *setting->value.target.fraction; float orig_value = *setting->value.target.fraction;
unsigned setting_type = MENU_SETTING_DROPDOWN_SETTING_FLOAT_ITEM; unsigned setting_type = MENU_SETTING_DROPDOWN_SETTING_FLOAT_ITEM;
float step = setting->step; float step = setting->step;
@ -14290,17 +14300,16 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
unsigned checked = 0; unsigned checked = 0;
unsigned entry_index = 0; unsigned entry_index = 0;
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (setting->get_string_representation) if (setting->get_string_representation)
{ {
for (i = min; i <= max; i += step) for (i = min; i <= max; i += step)
{ {
char val_s[256], val_d[16]; char val_s[256];
*setting->value.target.fraction = i; *setting->value.target.fraction = i;
setting->get_string_representation(setting, setting->get_string_representation(setting,
val_s, sizeof(val_s)); val_s, sizeof(val_s));
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
val_s, val_s,
val_d, val_d,
@ -14321,13 +14330,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
} }
else else
{ {
char val_d[16];
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
for (i = min; i <= max; i += step) for (i = min; i <= max; i += step)
{ {
char val_s[16]; char val_s[16];
snprintf(val_s, sizeof(val_s), "%.2f", i); snprintf(val_s, sizeof(val_s), "%.2f", i);
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
@ -14359,6 +14364,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
case ST_UINT: case ST_UINT:
{ {
float i; float i;
char val_d[16];
unsigned orig_value = *setting->value.target.unsigned_integer; unsigned orig_value = *setting->value.target.unsigned_integer;
unsigned setting_type = MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM; unsigned setting_type = MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM;
float step = setting->step; float step = setting->step;
@ -14368,18 +14374,17 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
unsigned checked = 0; unsigned checked = 0;
unsigned entry_index = 0; unsigned entry_index = 0;
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (setting->get_string_representation) if (setting->get_string_representation)
{ {
for (i = min; i <= max; i += step) for (i = min; i <= max; i += step)
{ {
char val_s[256], val_d[16]; char val_s[256];
int val = (int)i; int val = (int)i;
*setting->value.target.unsigned_integer = val; *setting->value.target.unsigned_integer = val;
setting->get_string_representation(setting, setting->get_string_representation(setting,
val_s, sizeof(val_s)); val_s, sizeof(val_s));
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
val_s, val_s,
val_d, val_d,
@ -14400,15 +14405,11 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
} }
else else
{ {
char val_d[16];
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
for (i = min; i <= max; i += step) for (i = min; i <= max; i += step)
{ {
char val_s[16]; char val_s[16];
int val = (int)i; int val = (int)i;
snprintf(val_s, sizeof(val_s), "%d", val); snprintf(val_s, sizeof(val_s), "%d", val);
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
val_s, val_s,
val_d, val_d,
@ -14545,6 +14546,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
case ST_INT: case ST_INT:
{ {
float i; float i;
char val_d[16];
int32_t orig_value = *setting->value.target.integer; int32_t orig_value = *setting->value.target.integer;
unsigned setting_type = MENU_SETTING_DROPDOWN_SETTING_INT_ITEM_SPECIAL; unsigned setting_type = MENU_SETTING_DROPDOWN_SETTING_INT_ITEM_SPECIAL;
float step = setting->step; float step = setting->step;
@ -14554,18 +14556,17 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
unsigned checked = 0; unsigned checked = 0;
unsigned entry_index = 0; unsigned entry_index = 0;
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (setting->get_string_representation) if (setting->get_string_representation)
{ {
for (i = min; i <= max; i += step) for (i = min; i <= max; i += step)
{ {
char val_s[256], val_d[16]; char val_s[256];
int val = (int)i; int val = (int)i;
*setting->value.target.integer = val; *setting->value.target.integer = val;
setting->get_string_representation(setting, setting->get_string_representation(setting,
val_s, sizeof(val_s)); val_s, sizeof(val_s));
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
val_s, val_s,
val_d, val_d,
@ -14586,14 +14587,11 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
} }
else else
{ {
char val_d[16];
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
for (i = min; i <= max; i += step) for (i = min; i <= max; i += step)
{ {
char val_s[16]; char val_s[16];
int val = (int)i; int val = (int)i;
snprintf(val_s, sizeof(val_s), "%d", val); snprintf(val_s, sizeof(val_s), "%d", val);
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
val_s, val_s,
val_d, val_d,
@ -14623,6 +14621,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
case ST_FLOAT: case ST_FLOAT:
{ {
float i; float i;
char val_d[16];
float orig_value = *setting->value.target.fraction; float orig_value = *setting->value.target.fraction;
unsigned setting_type = MENU_SETTING_DROPDOWN_SETTING_FLOAT_ITEM_SPECIAL; unsigned setting_type = MENU_SETTING_DROPDOWN_SETTING_FLOAT_ITEM_SPECIAL;
float step = setting->step; float step = setting->step;
@ -14633,17 +14632,16 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
unsigned checked = 0; unsigned checked = 0;
unsigned entry_index = 0; unsigned entry_index = 0;
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (setting->get_string_representation) if (setting->get_string_representation)
{ {
for (i = min; i <= max; i += step) for (i = min; i <= max; i += step)
{ {
char val_s[256], val_d[16]; char val_s[256];
*setting->value.target.fraction = i; *setting->value.target.fraction = i;
setting->get_string_representation(setting, setting->get_string_representation(setting,
val_s, sizeof(val_s)); val_s, sizeof(val_s));
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
val_s, val_s,
val_d, val_d,
@ -14664,13 +14662,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
} }
else else
{ {
char val_d[16];
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
for (i = min; i <= max; i += step) for (i = min; i <= max; i += step)
{ {
char val_s[16]; char val_s[16];
snprintf(val_s, sizeof(val_s), "%.2f", i); snprintf(val_s, sizeof(val_s), "%.2f", i);
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
val_s, val_s,
val_d, val_d,
@ -14700,6 +14695,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
case ST_UINT: case ST_UINT:
{ {
float i; float i;
char val_d[16];
unsigned orig_value = *setting->value.target.unsigned_integer; unsigned orig_value = *setting->value.target.unsigned_integer;
unsigned setting_type = MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM_SPECIAL; unsigned setting_type = MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM_SPECIAL;
float step = setting->step; float step = setting->step;
@ -14709,18 +14705,17 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
unsigned checked = 0; unsigned checked = 0;
unsigned entry_index = 0; unsigned entry_index = 0;
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (setting->get_string_representation) if (setting->get_string_representation)
{ {
for (i = min; i <= max; i += step) for (i = min; i <= max; i += step)
{ {
char val_s[256], val_d[16]; char val_s[256];
int val = (int)i; int val = (int)i;
*setting->value.target.unsigned_integer = val; *setting->value.target.unsigned_integer = val;
setting->get_string_representation(setting, setting->get_string_representation(setting,
val_s, sizeof(val_s)); val_s, sizeof(val_s));
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
val_s, val_s,
val_d, val_d,
@ -14741,14 +14736,11 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
} }
else else
{ {
char val_d[16];
snprintf(val_d, sizeof(val_d), "%d", setting->enum_idx);
for (i = min; i <= max; i += step) for (i = min; i <= max; i += step)
{ {
char val_s[16]; char val_s[16];
int val = (int)i; int val = (int)i;
snprintf(val_s, sizeof(val_s), "%d", val); snprintf(val_s, sizeof(val_s), "%d", val);
if (menu_entries_append(info->list, if (menu_entries_append(info->list,
val_s, val_s,
val_d, val_d,