parameters: param_value_is_default avoid locking if value unchanged

This commit is contained in:
Daniel Agar 2021-04-23 13:53:47 -04:00
parent c0b8f2952c
commit d1cd4904dc
1 changed files with 16 additions and 10 deletions

View File

@ -588,9 +588,17 @@ param_get_default_value(param_t param, void *default_val)
bool param_value_is_default(param_t param) bool param_value_is_default(param_t param)
{ {
if (!handle_in_range(param)) {
return true;
}
if (!params_changed[param] && !params_custom_default[param]) {
// no value saved and no custom default
return true;
} else {
// the param_values dynamic array might carry things that have been set // the param_values dynamic array might carry things that have been set
// back to default, so we don't rely on the params_changed bitset here // back to default, so we don't rely on the params_changed bitset here
if (handle_in_range(param)) {
switch (param_type(param)) { switch (param_type(param)) {
case PARAM_TYPE_INT32: { case PARAM_TYPE_INT32: {
param_lock_reader(); param_lock_reader();
@ -600,10 +608,9 @@ bool param_value_is_default(param_t param)
const void *v = param_get_value_ptr(param); const void *v = param_get_value_ptr(param);
if (v) { if (v) {
int32_t current_value; bool unchanged = (*static_cast<const int32_t *>(v) == default_value);
memcpy(&current_value, v, param_size(param));
param_unlock_reader(); param_unlock_reader();
return (current_value == default_value); return unchanged;
} }
} }
@ -619,10 +626,9 @@ bool param_value_is_default(param_t param)
const void *v = param_get_value_ptr(param); const void *v = param_get_value_ptr(param);
if (v) { if (v) {
float current_value; bool unchanged = (fabsf(*static_cast<const float *>(v) - default_value) <= FLT_EPSILON);
memcpy(&current_value, v, param_size(param));
param_unlock_reader(); param_unlock_reader();
return (fabsf(current_value - default_value) <= FLT_EPSILON); return unchanged;
} }
} }
@ -632,7 +638,7 @@ bool param_value_is_default(param_t param)
} }
} }
return false; return true;
} }
int int