forked from Archive/PX4-Autopilot
parameters: param_value_is_default avoid locking if value unchanged
This commit is contained in:
parent
c0b8f2952c
commit
d1cd4904dc
|
@ -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(¤t_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(¤t_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
|
||||||
|
|
Loading…
Reference in New Issue