Shave off some bool variables from structs that are allocated a

lot on heap
This commit is contained in:
libretroadmin 2024-09-05 11:35:15 +02:00
parent 5fbb19ea85
commit 8491aaf659
1 changed files with 30 additions and 30 deletions

View File

@ -747,15 +747,19 @@ static const enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_NULL;
#endif #endif
/* All config related settings go here. */ /* All config related settings go here. */
enum config_bool_flags
{
CFG_BOOL_FLG_DEF_ENABLE = (1 << 0),
CFG_BOOL_FLG_HANDLE = (1 << 1)
};
struct config_bool_setting struct config_bool_setting
{ {
const char *ident; const char *ident;
bool *ptr; bool *ptr;
enum rarch_override_setting override; enum rarch_override_setting override;
bool def_enable; uint8_t flags;
bool def; bool def;
bool handle;
}; };
struct config_int_setting struct config_int_setting
@ -764,8 +768,7 @@ struct config_int_setting
int *ptr; int *ptr;
int def; int def;
enum rarch_override_setting override; enum rarch_override_setting override;
bool def_enable; uint8_t flags;
bool handle;
}; };
struct config_uint_setting struct config_uint_setting
@ -774,8 +777,7 @@ struct config_uint_setting
unsigned *ptr; unsigned *ptr;
unsigned def; unsigned def;
enum rarch_override_setting override; enum rarch_override_setting override;
bool def_enable; uint8_t flags;
bool handle;
}; };
struct config_size_setting struct config_size_setting
@ -784,8 +786,7 @@ struct config_size_setting
size_t *ptr; size_t *ptr;
size_t def; size_t def;
enum rarch_override_setting override; enum rarch_override_setting override;
bool def_enable; uint8_t flags;
bool handle;
}; };
struct config_float_setting struct config_float_setting
@ -794,8 +795,7 @@ struct config_float_setting
float *ptr; float *ptr;
float def; float def;
enum rarch_override_setting override; enum rarch_override_setting override;
bool def_enable; uint8_t flags;
bool handle;
}; };
struct config_array_setting struct config_array_setting
@ -804,8 +804,7 @@ struct config_array_setting
const char *def; const char *def;
char *ptr; char *ptr;
enum rarch_override_setting override; enum rarch_override_setting override;
bool def_enable; uint8_t flags;
bool handle;
}; };
struct config_path_setting struct config_path_setting
@ -813,19 +812,20 @@ struct config_path_setting
const char *ident; const char *ident;
char *ptr; char *ptr;
char *def; char *def;
bool def_enable; uint8_t flags;
bool handle;
}; };
#define GENERAL_SETTING(key, configval, default_enable, default_setting, type, handle_setting) \ #define GENERAL_SETTING(key, configval, default_enable, default_setting, type, handle_setting) \
{ \ { \
tmp[count].ident = key; \ tmp[count].ident = key; \
tmp[count].ptr = configval; \ tmp[count].ptr = configval; \
tmp[count].def_enable = default_enable; \
if (default_enable) \ if (default_enable) \
tmp[count].def = default_setting; \ { \
tmp[count].handle = handle_setting; \ tmp[count].flags |= CFG_BOOL_FLG_DEF_ENABLE; \
tmp[count].def = default_setting; \
} \
if (handle_setting) \
tmp[count].flags |= CFG_BOOL_FLG_HANDLE; \
count++; \ count++; \
} }
@ -2739,7 +2739,7 @@ void config_set_defaults(void *data)
{ {
for (i = 0; i < (unsigned)bool_settings_size; i++) for (i = 0; i < (unsigned)bool_settings_size; i++)
{ {
if (bool_settings[i].def_enable) if (bool_settings[i].flags & CFG_BOOL_FLG_DEF_ENABLE)
*bool_settings[i].ptr = bool_settings[i].def; *bool_settings[i].ptr = bool_settings[i].def;
} }
@ -2750,7 +2750,7 @@ void config_set_defaults(void *data)
{ {
for (i = 0; i < (unsigned)int_settings_size; i++) for (i = 0; i < (unsigned)int_settings_size; i++)
{ {
if (int_settings[i].def_enable) if (int_settings[i].flags & CFG_BOOL_FLG_DEF_ENABLE)
*int_settings[i].ptr = int_settings[i].def; *int_settings[i].ptr = int_settings[i].def;
} }
@ -2761,7 +2761,7 @@ void config_set_defaults(void *data)
{ {
for (i = 0; i < (unsigned)uint_settings_size; i++) for (i = 0; i < (unsigned)uint_settings_size; i++)
{ {
if (uint_settings[i].def_enable) if (uint_settings[i].flags & CFG_BOOL_FLG_DEF_ENABLE)
*uint_settings[i].ptr = uint_settings[i].def; *uint_settings[i].ptr = uint_settings[i].def;
} }
@ -2772,7 +2772,7 @@ void config_set_defaults(void *data)
{ {
for (i = 0; i < (unsigned)size_settings_size; i++) for (i = 0; i < (unsigned)size_settings_size; i++)
{ {
if (size_settings[i].def_enable) if (size_settings[i].flags & CFG_BOOL_FLG_DEF_ENABLE)
*size_settings[i].ptr = size_settings[i].def; *size_settings[i].ptr = size_settings[i].def;
} }
@ -2783,7 +2783,7 @@ void config_set_defaults(void *data)
{ {
for (i = 0; i < (unsigned)float_settings_size; i++) for (i = 0; i < (unsigned)float_settings_size; i++)
{ {
if (float_settings[i].def_enable) if (float_settings[i].flags & CFG_BOOL_FLG_DEF_ENABLE)
*float_settings[i].ptr = float_settings[i].def; *float_settings[i].ptr = float_settings[i].def;
} }
@ -3824,16 +3824,15 @@ static bool config_load_file(global_t *global,
/* Array settings */ /* Array settings */
for (i = 0; i < (unsigned)array_settings_size; i++) for (i = 0; i < (unsigned)array_settings_size; i++)
{ {
if (!array_settings[i].handle) if (array_settings[i].flags & CFG_BOOL_FLG_HANDLE)
continue; config_get_array(conf, array_settings[i].ident,
config_get_array(conf, array_settings[i].ident, array_settings[i].ptr, PATH_MAX_LENGTH);
array_settings[i].ptr, PATH_MAX_LENGTH);
} }
/* Path settings */ /* Path settings */
for (i = 0; i < (unsigned)path_settings_size; i++) for (i = 0; i < (unsigned)path_settings_size; i++)
{ {
if (!path_settings[i].handle) if (!(path_settings[i].flags & CFG_BOOL_FLG_HANDLE))
continue; continue;
if (config_get_path(conf, path_settings[i].ident, tmp_str, sizeof(tmp_str))) if (config_get_path(conf, path_settings[i].ident, tmp_str, sizeof(tmp_str)))
strlcpy(path_settings[i].ptr, tmp_str, PATH_MAX_LENGTH); strlcpy(path_settings[i].ptr, tmp_str, PATH_MAX_LENGTH);
@ -5236,8 +5235,9 @@ bool config_save_file(const char *path)
{ {
const char *value = path_settings[i].ptr; const char *value = path_settings[i].ptr;
if (path_settings[i].def_enable && string_is_empty(path_settings[i].ptr)) if (path_settings[i].flags & CFG_BOOL_FLG_DEF_ENABLE)
value = "default"; if (string_is_empty(path_settings[i].ptr))
value = "default";
config_set_path(conf, path_settings[i].ident, value); config_set_path(conf, path_settings[i].ident, value);
} }