impl-node: improve property parsing

Use pw_properties_get_uint32() and friends to parse properties and have
a fallback when the property is not there.
This commit is contained in:
Wim Taymans 2024-11-04 16:45:26 +01:00
parent 18148e7add
commit 9ed57c1dba

View file

@ -1113,8 +1113,7 @@ static void check_properties(struct pw_impl_node *node)
pw_context_conf_section_match_rules(context, "node.rules",
&node->properties->dict, execute_match, &match);
if ((str = pw_properties_get(node->properties, PW_KEY_PRIORITY_DRIVER))) {
value = pw_properties_parse_int(str);
value = pw_properties_get_uint32(node->properties, PW_KEY_PRIORITY_DRIVER, 0);
if (value != node->priority_driver) {
pw_log_debug("%p: priority driver %d -> %d", node, node->priority_driver, value);
node->priority_driver = value;
@ -1124,7 +1123,6 @@ static void check_properties(struct pw_impl_node *node)
recalc_reason = "driver priority changed";
}
}
}
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_NAME)) &&
(node->name == NULL || !spa_streq(node->name, str))) {
@ -1268,14 +1266,12 @@ static void check_properties(struct pw_impl_node *node)
}
node->lock_quantum = pw_properties_get_bool(node->properties, PW_KEY_NODE_LOCK_QUANTUM, false);
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_FORCE_QUANTUM))) {
if (spa_atou32(str, &value, 0) &&
node->force_quantum != value) {
value = pw_properties_get_uint32(node->properties, PW_KEY_NODE_FORCE_QUANTUM, 0);
if (node->force_quantum != value) {
node->force_quantum = value;
node->stamp = ++context->stamp;
recalc_reason = "force quantum changed";
}
}
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_RATE))) {
if (sscanf(str, "%u/%u", &frac.num, &frac.denom) == 2 && frac.denom != 0) {
@ -1290,10 +1286,11 @@ static void check_properties(struct pw_impl_node *node)
}
node->lock_rate = pw_properties_get_bool(node->properties, PW_KEY_NODE_LOCK_RATE, false);
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_FORCE_RATE))) {
if (spa_atou32(str, &value, 0)) {
value = pw_properties_get_uint32(node->properties, PW_KEY_NODE_FORCE_RATE, SPA_ID_INVALID);
if (value == 0)
value = node->rate.denom;
if (value == SPA_ID_INVALID)
value = 0;
if (node->force_rate != value) {
pw_log_info("(%s-%u) force-rate:%u -> %u", node->name,
node->info.id, node->force_rate, value);
@ -1301,8 +1298,6 @@ static void check_properties(struct pw_impl_node *node)
node->stamp = ++context->stamp;
recalc_reason = "force rate changed";
}
}
}
pw_log_debug("%p: driver:%d recalc:%s active:%d", node, node->driver,
recalc_reason, node->active);