(menu_cbs_get_value.c) Cut down on all the slow menu_setting_find

calls
This commit is contained in:
twinaphex 2020-06-30 03:22:38 +02:00
parent 879cb375e7
commit f6dc06ac10
1 changed files with 71 additions and 95 deletions

View File

@ -69,8 +69,8 @@ static void menu_action_setting_audio_mixer_stream_name(
char *s2, size_t len2) char *s2, size_t len2)
{ {
unsigned offset = (type - MENU_SETTINGS_AUDIO_MIXER_STREAM_BEGIN); unsigned offset = (type - MENU_SETTINGS_AUDIO_MIXER_STREAM_BEGIN);
*w = 19; *w = 19;
strlcpy(s2, path, len2); strlcpy(s2, path, len2);
if (offset >= AUDIO_MIXER_MAX_SYSTEM_STREAMS) if (offset >= AUDIO_MIXER_MAX_SYSTEM_STREAMS)
@ -371,8 +371,10 @@ static void menu_action_setting_disp_set_label_shader_parameter(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_disp_set_label_shader_parameter_internal(list, w, type, i, menu_action_setting_disp_set_label_shader_parameter_internal(
label, s, len, path, s2, len2, MENU_SETTINGS_SHADER_PARAMETER_0); list, w, type, i,
label, s, len, path, s2, len2,
MENU_SETTINGS_SHADER_PARAMETER_0);
} }
static void menu_action_setting_disp_set_label_shader_preset_parameter( static void menu_action_setting_disp_set_label_shader_preset_parameter(
@ -383,8 +385,10 @@ static void menu_action_setting_disp_set_label_shader_preset_parameter(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_disp_set_label_shader_parameter_internal(list, w, type, i, menu_action_setting_disp_set_label_shader_parameter_internal(
label, s, len, path, s2, len2, MENU_SETTINGS_SHADER_PRESET_PARAMETER_0); list, w, type, i,
label, s, len, path, s2, len2,
MENU_SETTINGS_SHADER_PRESET_PARAMETER_0);
} }
static void menu_action_setting_disp_set_label_shader_scale_pass( static void menu_action_setting_disp_set_label_shader_scale_pass(
@ -395,7 +399,6 @@ static void menu_action_setting_disp_set_label_shader_scale_pass(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
unsigned pass = 0;
unsigned scale_value = 0; unsigned scale_value = 0;
struct video_shader *shader = menu_shader_get(); struct video_shader *shader = menu_shader_get();
struct video_shader_pass *shader_pass = shader ? &shader->pass[type - MENU_SETTINGS_SHADER_PASS_SCALE_0] : NULL; struct video_shader_pass *shader_pass = shader ? &shader->pass[type - MENU_SETTINGS_SHADER_PASS_SCALE_0] : NULL;
@ -404,9 +407,6 @@ static void menu_action_setting_disp_set_label_shader_scale_pass(
*w = 19; *w = 19;
strlcpy(s2, path, len2); strlcpy(s2, path, len2);
(void)pass;
(void)scale_value;
if (!shader_pass) if (!shader_pass)
return; return;
@ -571,41 +571,33 @@ static void menu_action_setting_disp_set_label_input_desc(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
rarch_system_info_t *system = runloop_get_system_info(); unsigned remap_idx;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
const char* descriptor = NULL; const char* descriptor = NULL;
char buf[256]; unsigned user_idx = (type - MENU_SETTINGS_INPUT_DESC_BEGIN) / (RARCH_FIRST_CUSTOM_BIND + 8);
unsigned btn_idx = (type - MENU_SETTINGS_INPUT_DESC_BEGIN) - (RARCH_FIRST_CUSTOM_BIND + 8) * user_idx;
unsigned btn_idx, user_idx, remap_idx;
if (!settings) if (!settings)
return; return;
user_idx = (type - MENU_SETTINGS_INPUT_DESC_BEGIN) / (RARCH_FIRST_CUSTOM_BIND + 8);
btn_idx = (type - MENU_SETTINGS_INPUT_DESC_BEGIN) - (RARCH_FIRST_CUSTOM_BIND + 8) * user_idx;
remap_idx = remap_idx =
settings->uints.input_remap_ids[user_idx][btn_idx]; settings->uints.input_remap_ids[user_idx][btn_idx];
if (!system)
return;
if (remap_idx != RARCH_UNMAPPED) if (remap_idx != RARCH_UNMAPPED)
descriptor = system->input_desc_btn[user_idx][remap_idx]; descriptor =
runloop_get_system_info()->input_desc_btn[user_idx][remap_idx];
if (!string_is_empty(descriptor) && remap_idx < RARCH_FIRST_CUSTOM_BIND) strlcpy(s, "---", len);
if (!string_is_empty(descriptor))
{
if (remap_idx < RARCH_FIRST_CUSTOM_BIND)
strlcpy(s, descriptor, len); strlcpy(s, descriptor, len);
else if (!string_is_empty(descriptor) && remap_idx >= RARCH_FIRST_CUSTOM_BIND && remap_idx % 2 == 0) else if (!string_is_empty(descriptor) && remap_idx >= RARCH_FIRST_CUSTOM_BIND && remap_idx % 2 == 0)
{ snprintf(s, len, "%s %c", descriptor, '+');
snprintf(buf, sizeof(buf), "%s %c", descriptor, '+'); else if (remap_idx >= RARCH_FIRST_CUSTOM_BIND && remap_idx % 2 != 0)
strlcpy(s, buf, len); snprintf(s, len, "%s %c", descriptor, '-');
} }
else if (!string_is_empty(descriptor) && remap_idx >= RARCH_FIRST_CUSTOM_BIND && remap_idx % 2 != 0)
{
snprintf(buf, sizeof(buf), "%s %c", descriptor, '-');
strlcpy(s, buf, len);
}
else
strlcpy(s, "---", len);
*w = 19; *w = 19;
strlcpy(s2, path, len2); strlcpy(s2, path, len2);
@ -696,7 +688,7 @@ static void menu_action_setting_disp_set_label_cheat_match(
unsigned int address = 0; unsigned int address = 0;
unsigned int address_mask = 0; unsigned int address_mask = 0;
unsigned int prev_val = 0; unsigned int prev_val = 0;
unsigned int curr_val = 0 ; unsigned int curr_val = 0;
cheat_manager_match_action(CHEAT_MATCH_ACTION_TYPE_VIEW, cheat_manager_state.match_idx, &address, &address_mask, &prev_val, &curr_val); cheat_manager_match_action(CHEAT_MATCH_ACTION_TYPE_VIEW, cheat_manager_state.match_idx, &address, &address_mask, &prev_val, &curr_val);
snprintf(s, len, "Prev: %u Curr: %u", prev_val, curr_val); snprintf(s, len, "Prev: %u Curr: %u", prev_val, curr_val);
@ -916,19 +908,12 @@ static void menu_action_setting_disp_set_label_menu_video_resolution(
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), len); strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), len);
} }
static void menu_action_setting_generic_disp_set_label( #define MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len, path, label, s2, len2) \
unsigned *w, char *s, size_t len, *s = '\0'; \
const char *path, const char *label, if (label) \
char *s2, size_t len2) strlcpy(s, label, len); \
{ *w = (unsigned)strlen(s); \
*s = '\0'; strlcpy(s2, path, len2)
if (label)
strlcpy(s, label, len);
*w = (unsigned)strlen(s);
strlcpy(s2, path, len2);
}
static void menu_action_setting_disp_set_label_menu_file_plain( static void menu_action_setting_disp_set_label_menu_file_plain(
file_list_t* list, file_list_t* list,
@ -938,7 +923,7 @@ static void menu_action_setting_disp_set_label_menu_file_plain(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(FILE)", s2, len2); path, "(FILE)", s2, len2);
} }
@ -950,7 +935,7 @@ static void menu_action_setting_disp_set_label_menu_file_imageviewer(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(IMAGE)", s2, len2); path, "(IMAGE)", s2, len2);
} }
@ -962,7 +947,7 @@ static void menu_action_setting_disp_set_label_movie(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(MOVIE)", s2, len2); path, "(MOVIE)", s2, len2);
} }
@ -974,22 +959,10 @@ static void menu_action_setting_disp_set_label_music(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(MUSIC)", s2, len2); path, "(MUSIC)", s2, len2);
} }
static void menu_action_setting_disp_set_label_menu_file_use_directory(
file_list_t* list,
unsigned *w, unsigned type, unsigned i,
const char *label,
char *s, size_t len,
const char *path,
char *s2, size_t len2)
{
menu_action_setting_generic_disp_set_label(w, s, len,
path, NULL, s2, len2);
}
static void menu_action_setting_disp_set_label_menu_file_directory( static void menu_action_setting_disp_set_label_menu_file_directory(
file_list_t* list, file_list_t* list,
unsigned *w, unsigned type, unsigned i, unsigned *w, unsigned type, unsigned i,
@ -998,11 +971,11 @@ static void menu_action_setting_disp_set_label_menu_file_directory(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(DIR)", s2, len2); path, "(DIR)", s2, len2);
} }
static void menu_action_setting_disp_set_label_menu_file_parent_directory( static void menu_action_setting_disp_set_label_generic(
file_list_t* list, file_list_t* list,
unsigned *w, unsigned type, unsigned i, unsigned *w, unsigned type, unsigned i,
const char *label, const char *label,
@ -1010,7 +983,7 @@ static void menu_action_setting_disp_set_label_menu_file_parent_directory(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, NULL, s2, len2); path, NULL, s2, len2);
} }
@ -1022,7 +995,7 @@ static void menu_action_setting_disp_set_label_menu_file_carchive(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(COMP)", s2, len2); path, "(COMP)", s2, len2);
} }
@ -1034,7 +1007,7 @@ static void menu_action_setting_disp_set_label_menu_file_shader(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(SHADER)", s2, len2); path, "(SHADER)", s2, len2);
} }
@ -1046,7 +1019,7 @@ static void menu_action_setting_disp_set_label_menu_file_shader_preset(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(PRESET)", s2, len2); path, "(PRESET)", s2, len2);
} }
@ -1058,7 +1031,7 @@ static void menu_action_setting_disp_set_label_menu_file_in_carchive(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(CFILE)", s2, len2); path, "(CFILE)", s2, len2);
} }
@ -1070,7 +1043,7 @@ static void menu_action_setting_disp_set_label_menu_file_overlay(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(OVERLAY)", s2, len2); path, "(OVERLAY)", s2, len2);
} }
@ -1083,8 +1056,8 @@ static void menu_action_setting_disp_set_label_menu_file_video_layout(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(Video Layout)", s2, len2); path, "(LAYOUT)", s2, len2);
} }
#endif #endif
@ -1096,7 +1069,7 @@ static void menu_action_setting_disp_set_label_menu_file_config(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(CONFIG)", s2, len2); path, "(CONFIG)", s2, len2);
} }
@ -1108,7 +1081,7 @@ static void menu_action_setting_disp_set_label_menu_file_font(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(FONT)", s2, len2); path, "(FONT)", s2, len2);
} }
@ -1120,7 +1093,7 @@ static void menu_action_setting_disp_set_label_menu_file_filter(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(FILTER)", s2, len2); path, "(FILTER)", s2, len2);
} }
@ -1132,7 +1105,7 @@ static void menu_action_setting_disp_set_label_menu_file_rdb(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(RDB)", s2, len2); path, "(RDB)", s2, len2);
} }
@ -1144,7 +1117,7 @@ static void menu_action_setting_disp_set_label_menu_file_cursor(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(CURSOR)", s2, len2); path, "(CURSOR)", s2, len2);
} }
@ -1156,7 +1129,7 @@ static void menu_action_setting_disp_set_label_menu_file_cheat(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
menu_action_setting_generic_disp_set_label(w, s, len, MENU_ACTION_SETTING_GENERIC_DISP_SET_LABEL(w, s, len,
path, "(CHEAT)", s2, len2); path, "(CHEAT)", s2, len2);
} }
@ -1357,7 +1330,8 @@ static void menu_action_setting_disp_set_label_playlist_sort_mode(
} }
} }
static void menu_action_setting_disp_set_label_core_options(file_list_t* list, static void menu_action_setting_disp_set_label_core_options(
file_list_t* list,
unsigned *w, unsigned type, unsigned i, unsigned *w, unsigned type, unsigned i,
const char *label, const char *label,
char *s, size_t len, char *s, size_t len,
@ -1379,9 +1353,11 @@ static void menu_action_setting_disp_set_label_core_options(file_list_t* list,
if (core_opt) if (core_opt)
{ {
if (string_is_equal(core_opt, msg_hash_to_str(MENU_ENUM_LABEL_ENABLED))) if (string_is_equal(core_opt,
msg_hash_to_str(MENU_ENUM_LABEL_ENABLED)))
core_opt = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ON); core_opt = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ON);
else if (string_is_equal(core_opt, msg_hash_to_str(MENU_ENUM_LABEL_DISABLED))) else if (string_is_equal(core_opt,
msg_hash_to_str(MENU_ENUM_LABEL_DISABLED)))
core_opt = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF); core_opt = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF);
strlcpy(s, core_opt, len); strlcpy(s, core_opt, len);
} }
@ -1407,7 +1383,8 @@ static void menu_action_setting_disp_set_label_achievement_information(
strlcpy(s2, path, len2); strlcpy(s2, path, len2);
} }
static void menu_action_setting_disp_set_label_manual_content_scan_dir(file_list_t* list, static void menu_action_setting_disp_set_label_manual_content_scan_dir(
file_list_t* list,
unsigned *w, unsigned type, unsigned i, unsigned *w, unsigned type, unsigned i,
const char *label, const char *label,
char *s, size_t len, char *s, size_t len,
@ -1427,7 +1404,8 @@ static void menu_action_setting_disp_set_label_manual_content_scan_dir(file_list
strlcpy(s, content_dir, len); strlcpy(s, content_dir, len);
} }
static void menu_action_setting_disp_set_label_manual_content_scan_system_name(file_list_t* list, static void menu_action_setting_disp_set_label_manual_content_scan_system_name(
file_list_t* list,
unsigned *w, unsigned type, unsigned i, unsigned *w, unsigned type, unsigned i,
const char *label, const char *label,
char *s, size_t len, char *s, size_t len,
@ -1504,7 +1482,8 @@ static void menu_action_setting_disp_set_label_setting_bool(file_list_t* list,
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
rarch_setting_t *setting = menu_setting_find(list->list[i].label); menu_file_list_cbs_t *cbs = list->list[i].actiondata;
rarch_setting_t *setting = cbs->setting;
*s = '\0'; *s = '\0';
*w = 19; *w = 19;
@ -1527,7 +1506,8 @@ static void menu_action_setting_disp_set_label_setting_string(file_list_t* list,
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
rarch_setting_t *setting = menu_setting_find(list->list[i].label); menu_file_list_cbs_t *cbs = list->list[i].actiondata;
rarch_setting_t *setting = cbs->setting;
*w = 19; *w = 19;
@ -1544,7 +1524,8 @@ static void menu_action_setting_disp_set_label_setting_path(file_list_t* list,
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
rarch_setting_t *setting = menu_setting_find(list->list[i].label); menu_file_list_cbs_t *cbs = list->list[i].actiondata;
rarch_setting_t *setting = cbs->setting;
const char *basename = setting ? path_basename(setting->value.target.string) : NULL; const char *basename = setting ? path_basename(setting->value.target.string) : NULL;
*w = 19; *w = 19;
@ -1716,9 +1697,7 @@ static int menu_cbs_init_bind_get_string_representation_compare_label(
} }
} }
else else
{
return -1; return -1;
}
return 0; return 0;
} }
@ -1815,17 +1794,14 @@ static int menu_cbs_init_bind_get_string_representation_compare_type(
BIND_ACTION_GET_VALUE(cbs, BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_menu_file_imageviewer); menu_action_setting_disp_set_label_menu_file_imageviewer);
break; break;
case FILE_TYPE_USE_DIRECTORY:
BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_menu_file_use_directory);
break;
case FILE_TYPE_DIRECTORY: case FILE_TYPE_DIRECTORY:
BIND_ACTION_GET_VALUE(cbs, BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_menu_file_directory); menu_action_setting_disp_set_label_menu_file_directory);
break; break;
case FILE_TYPE_PARENT_DIRECTORY: case FILE_TYPE_PARENT_DIRECTORY:
case FILE_TYPE_USE_DIRECTORY:
BIND_ACTION_GET_VALUE(cbs, BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_menu_file_parent_directory); menu_action_setting_disp_set_label_generic);
break; break;
case FILE_TYPE_CARCHIVE: case FILE_TYPE_CARCHIVE:
BIND_ACTION_GET_VALUE(cbs, BIND_ACTION_GET_VALUE(cbs,