mirror of
https://github.com/libretro/RetroArch
synced 2025-01-29 00:32:49 +00:00
Reduce stack usage for menu_setting_new_internal
This commit is contained in:
parent
8792e78102
commit
75d850eead
@ -7108,6 +7108,46 @@ bool menu_setting_free(void *data)
|
||||
return true;
|
||||
}
|
||||
|
||||
static void menu_setting_terminate_last(rarch_setting_t *list, unsigned pos)
|
||||
{
|
||||
(*&list)[pos].enum_idx = MSG_UNKNOWN;
|
||||
(*&list)[pos].type = ST_NONE;
|
||||
(*&list)[pos].size = 0;
|
||||
(*&list)[pos].name = NULL;
|
||||
(*&list)[pos].name_hash = 0;
|
||||
(*&list)[pos].short_description = NULL;
|
||||
(*&list)[pos].group = NULL;
|
||||
(*&list)[pos].subgroup = NULL;
|
||||
(*&list)[pos].parent_group = NULL;
|
||||
(*&list)[pos].values = NULL;
|
||||
(*&list)[pos].index = 0;
|
||||
(*&list)[pos].index_offset = 0;
|
||||
(*&list)[pos].min = 0.0;
|
||||
(*&list)[pos].max = 0.0;
|
||||
(*&list)[pos].flags = 0;
|
||||
(*&list)[pos].free_flags = 0;
|
||||
(*&list)[pos].change_handler = NULL;
|
||||
(*&list)[pos].read_handler = NULL;
|
||||
(*&list)[pos].action_start = NULL;
|
||||
(*&list)[pos].action_left = NULL;
|
||||
(*&list)[pos].action_right = NULL;
|
||||
(*&list)[pos].action_up = NULL;
|
||||
(*&list)[pos].action_down = NULL;
|
||||
(*&list)[pos].action_cancel = NULL;
|
||||
(*&list)[pos].action_ok = NULL;
|
||||
(*&list)[pos].action_select = NULL;
|
||||
(*&list)[pos].get_string_representation = NULL;
|
||||
(*&list)[pos].bind_type = 0;
|
||||
(*&list)[pos].browser_selection_type = ST_NONE;
|
||||
(*&list)[pos].step = 0.0f;
|
||||
(*&list)[pos].rounding_fraction = NULL;
|
||||
(*&list)[pos].enforce_minrange = false;
|
||||
(*&list)[pos].enforce_maxrange = false;
|
||||
(*&list)[pos].cmd_trigger.idx = CMD_EVENT_NONE;
|
||||
(*&list)[pos].cmd_trigger.triggered = false;
|
||||
(*&list)[pos].dont_use_enum_idx_representation = false;
|
||||
}
|
||||
|
||||
static rarch_setting_t *menu_setting_new_internal(rarch_setting_info_t *list_info)
|
||||
{
|
||||
unsigned i;
|
||||
@ -7144,7 +7184,6 @@ static rarch_setting_t *menu_setting_new_internal(rarch_setting_info_t *list_inf
|
||||
SETTINGS_LIST_DIRECTORY,
|
||||
SETTINGS_LIST_PRIVACY
|
||||
};
|
||||
rarch_setting_t terminator = setting_terminator_setting();
|
||||
const char *root = msg_hash_to_str(MENU_ENUM_LABEL_MAIN_MENU);
|
||||
rarch_setting_t *list = (rarch_setting_t*)calloc(
|
||||
list_info->size, sizeof(*list));
|
||||
@ -7160,9 +7199,8 @@ static rarch_setting_t *menu_setting_new_internal(rarch_setting_info_t *list_inf
|
||||
|
||||
if (!(settings_list_append(&list, list_info)))
|
||||
goto error;
|
||||
if (terminator.name)
|
||||
terminator.name_hash = msg_hash_calculate(terminator.name);
|
||||
(*&list)[list_info->index++] = terminator;
|
||||
menu_setting_terminate_last(list, list_info->index);
|
||||
list_info->index++;
|
||||
|
||||
/* flatten this array to save ourselves some kilobytes. */
|
||||
resized_list = (rarch_setting_t*)realloc(list,
|
||||
|
@ -36,59 +36,6 @@
|
||||
#include "config.def.h"
|
||||
#include "setting_list.h"
|
||||
|
||||
rarch_setting_t setting_terminator_setting(void)
|
||||
{
|
||||
rarch_setting_t result;
|
||||
|
||||
result.enum_idx = MSG_UNKNOWN;
|
||||
result.type = ST_NONE;
|
||||
|
||||
result.size = 0;
|
||||
|
||||
result.name = NULL;
|
||||
result.name_hash = 0;
|
||||
result.short_description = NULL;
|
||||
result.group = NULL;
|
||||
result.subgroup = NULL;
|
||||
result.parent_group = NULL;
|
||||
result.values = NULL;
|
||||
|
||||
result.index = 0;
|
||||
result.index_offset = 0;
|
||||
|
||||
result.min = 0.0;
|
||||
result.max = 0.0;
|
||||
|
||||
result.flags = 0;
|
||||
result.free_flags = 0;
|
||||
|
||||
result.change_handler = NULL;
|
||||
result.read_handler = NULL;
|
||||
result.action_start = NULL;
|
||||
result.action_left = NULL;
|
||||
result.action_right = NULL;
|
||||
result.action_up = NULL;
|
||||
result.action_down = NULL;
|
||||
result.action_cancel = NULL;
|
||||
result.action_ok = NULL;
|
||||
result.action_select = NULL;
|
||||
result.get_string_representation = NULL;
|
||||
|
||||
result.bind_type = 0;
|
||||
result.browser_selection_type = ST_NONE;
|
||||
result.step = 0.0f;
|
||||
result.rounding_fraction = NULL;
|
||||
result.enforce_minrange = false;
|
||||
result.enforce_maxrange = false;
|
||||
|
||||
result.cmd_trigger.idx = CMD_EVENT_NONE;
|
||||
result.cmd_trigger.triggered = false;
|
||||
|
||||
result.dont_use_enum_idx_representation = false;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool settings_list_append(rarch_setting_t **list,
|
||||
rarch_setting_info_t *list_info)
|
||||
{
|
||||
|
@ -418,8 +418,6 @@ void settings_data_list_current_add_free_flags(
|
||||
|
||||
#define setting_get_type(setting) ((setting) ? setting->type : ST_NONE)
|
||||
|
||||
rarch_setting_t setting_terminator_setting(void);
|
||||
|
||||
RETRO_END_DECLS
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user