From 7d956b611c1b75f4cb7b353b25132f4bde3e4959 Mon Sep 17 00:00:00 2001 From: LibretroAdmin Date: Wed, 5 Oct 2022 04:34:47 +0200 Subject: [PATCH] rarch_setting - we can downgrade flags and free_flags to 32bit since the flags don't come anywhere near close to 64 unique flags --- menu/menu_displaylist.c | 2 +- menu/menu_setting.c | 29 +++++++++++++++-------------- setting_list.h | 5 ++--- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index bfb0de34bc..19541229d5 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -3119,7 +3119,7 @@ int menu_displaylist_parse_settings_enum( ST_NONE, /* PARSE_SUB_GROUP */ ST_SIZE, /* PARSE_ONLY_SIZE */ }; - uint64_t flags; + uint32_t flags; enum setting_type precond = precond_lut[parse_type]; size_t count = 0; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 393795608f..31cff335e0 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1019,7 +1019,7 @@ int setting_set_with_string_representation(rarch_setting_t* setting, { char *ptr; float min, max; - uint64_t flags; + uint32_t flags; if (!setting || !value) return -1; @@ -1033,9 +1033,9 @@ int setting_set_with_string_representation(rarch_setting_t* setting, *setting->value.target.integer = (int)strtol(value, &ptr, 10); if (flags & SD_FLAG_HAS_RANGE) { - if (setting->flags & SD_FLAG_ENFORCE_MINRANGE && *setting->value.target.integer < min) + if (flags & SD_FLAG_ENFORCE_MINRANGE && *setting->value.target.integer < min) *setting->value.target.integer = min; - if (setting->flags & SD_FLAG_ENFORCE_MAXRANGE && *setting->value.target.integer > max) + if (flags & SD_FLAG_ENFORCE_MAXRANGE && *setting->value.target.integer > max) { settings_t *settings = config_get_ptr(); if (settings && settings->bools.menu_navigation_wraparound_enable) @@ -1049,9 +1049,9 @@ int setting_set_with_string_representation(rarch_setting_t* setting, *setting->value.target.unsigned_integer = (unsigned int)strtoul(value, &ptr, 10); if (flags & SD_FLAG_HAS_RANGE) { - if (setting->flags & SD_FLAG_ENFORCE_MINRANGE && *setting->value.target.unsigned_integer < min) + if (flags & SD_FLAG_ENFORCE_MINRANGE && *setting->value.target.unsigned_integer < min) *setting->value.target.unsigned_integer = min; - if (setting->flags & SD_FLAG_ENFORCE_MAXRANGE && *setting->value.target.unsigned_integer > max) + if (flags & SD_FLAG_ENFORCE_MAXRANGE && *setting->value.target.unsigned_integer > max) { settings_t *settings = config_get_ptr(); if (settings && settings->bools.menu_navigation_wraparound_enable) @@ -1065,9 +1065,9 @@ int setting_set_with_string_representation(rarch_setting_t* setting, sscanf(value, "%" PRI_SIZET, setting->value.target.sizet); if (flags & SD_FLAG_HAS_RANGE) { - if (setting->flags & SD_FLAG_ENFORCE_MINRANGE && *setting->value.target.sizet < min) + if (flags & SD_FLAG_ENFORCE_MINRANGE && *setting->value.target.sizet < min) *setting->value.target.sizet = min; - if (setting->flags & SD_FLAG_ENFORCE_MAXRANGE && *setting->value.target.sizet > max) + if (flags & SD_FLAG_ENFORCE_MAXRANGE && *setting->value.target.sizet > max) { settings_t *settings = config_get_ptr(); if (settings && settings->bools.menu_navigation_wraparound_enable) @@ -1082,9 +1082,9 @@ int setting_set_with_string_representation(rarch_setting_t* setting, *setting->value.target.fraction = (float)strtod(value, &ptr); if (flags & SD_FLAG_HAS_RANGE) { - if (setting->flags & SD_FLAG_ENFORCE_MINRANGE && *setting->value.target.fraction < min) + if (flags & SD_FLAG_ENFORCE_MINRANGE && *setting->value.target.fraction < min) *setting->value.target.fraction = min; - if (setting->flags & SD_FLAG_ENFORCE_MAXRANGE && *setting->value.target.fraction > max) + if (flags & SD_FLAG_ENFORCE_MAXRANGE && *setting->value.target.fraction > max) { settings_t *settings = config_get_ptr(); if (settings && settings->bools.menu_navigation_wraparound_enable) @@ -7027,7 +7027,7 @@ static void menu_settings_list_current_add_range( int menu_setting_generic(rarch_setting_t *setting, size_t idx, bool wraparound) { - uint64_t flags = setting->flags; + uint32_t flags = setting->flags; if (setting_generic_action_ok_default(setting, idx, wraparound) != 0) return -1; @@ -7722,12 +7722,13 @@ static enum event_command write_handler_get_cmd(rarch_setting_t *setting) { if (setting && setting->cmd_trigger_idx != CMD_EVENT_NONE) { - if (setting->flags & SD_FLAG_EXIT) + uint32_t flags = setting->flags; + if (flags & SD_FLAG_EXIT) if (*setting->value.target.boolean) *setting->value.target.boolean = false; - if ( (setting->flags & SD_FLAG_CMD_TRIGGER_EVENT_TRIGGERED) || - (setting->flags & SD_FLAG_CMD_APPLY_AUTO)) + if ( (flags & SD_FLAG_CMD_TRIGGER_EVENT_TRIGGERED) || + (flags & SD_FLAG_CMD_APPLY_AUTO)) return setting->cmd_trigger_idx; } return CMD_EVENT_NONE; @@ -21705,7 +21706,7 @@ void menu_setting_free(rarch_setting_t *setting) /* Free data which was previously tagged */ for (; setting->type != ST_NONE; (*list = *list + 1)) - for (values = (unsigned)setting->free_flags, n = 0; values != 0; values >>= 1, n++) + for (values = setting->free_flags, n = 0; values != 0; values >>= 1, n++) if (values & 1) switch (1 << n) { diff --git a/setting_list.h b/setting_list.h index 897cd96d74..54706feea6 100644 --- a/setting_list.h +++ b/setting_list.h @@ -117,9 +117,6 @@ struct rarch_setting_group_info struct rarch_setting { - uint64_t flags; - uint64_t free_flags; - float min; float max; struct @@ -186,6 +183,8 @@ struct rarch_setting bool boolean; } original_value; + uint32_t flags; + uint32_t free_flags; uint32_t index_offset; uint32_t size; unsigned bind_type;