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,16 +1113,14 @@ static void check_properties(struct pw_impl_node *node)
pw_context_conf_section_match_rules(context, "node.rules", pw_context_conf_section_match_rules(context, "node.rules",
&node->properties->dict, execute_match, &match); &node->properties->dict, execute_match, &match);
if ((str = pw_properties_get(node->properties, PW_KEY_PRIORITY_DRIVER))) { value = pw_properties_get_uint32(node->properties, PW_KEY_PRIORITY_DRIVER, 0);
value = pw_properties_parse_int(str); if (value != node->priority_driver) {
if (value != node->priority_driver) { pw_log_debug("%p: priority driver %d -> %d", node, node->priority_driver, value);
pw_log_debug("%p: priority driver %d -> %d", node, node->priority_driver, value); node->priority_driver = value;
node->priority_driver = value; if (node->registered && node->driver) {
if (node->registered && node->driver) { remove_driver(context, node);
remove_driver(context, node); insert_driver(context, node);
insert_driver(context, node); recalc_reason = "driver priority changed";
recalc_reason = "driver priority changed";
}
} }
} }
@ -1268,13 +1266,11 @@ static void check_properties(struct pw_impl_node *node)
} }
node->lock_quantum = pw_properties_get_bool(node->properties, PW_KEY_NODE_LOCK_QUANTUM, false); 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))) { value = pw_properties_get_uint32(node->properties, PW_KEY_NODE_FORCE_QUANTUM, 0);
if (spa_atou32(str, &value, 0) && if (node->force_quantum != value) {
node->force_quantum != value) { node->force_quantum = value;
node->force_quantum = value; node->stamp = ++context->stamp;
node->stamp = ++context->stamp; recalc_reason = "force quantum changed";
recalc_reason = "force quantum changed";
}
} }
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_RATE))) { if ((str = pw_properties_get(node->properties, PW_KEY_NODE_RATE))) {
@ -1290,18 +1286,17 @@ static void check_properties(struct pw_impl_node *node)
} }
node->lock_rate = pw_properties_get_bool(node->properties, PW_KEY_NODE_LOCK_RATE, false); 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))) { value = pw_properties_get_uint32(node->properties, PW_KEY_NODE_FORCE_RATE, SPA_ID_INVALID);
if (spa_atou32(str, &value, 0)) { if (value == 0)
if (value == 0) value = node->rate.denom;
value = node->rate.denom; if (value == SPA_ID_INVALID)
if (node->force_rate != value) { value = 0;
pw_log_info("(%s-%u) force-rate:%u -> %u", node->name, if (node->force_rate != value) {
node->info.id, node->force_rate, value); pw_log_info("(%s-%u) force-rate:%u -> %u", node->name,
node->force_rate = value; node->info.id, node->force_rate, value);
node->stamp = ++context->stamp; node->force_rate = value;
recalc_reason = "force rate changed"; node->stamp = ++context->stamp;
} recalc_reason = "force rate changed";
}
} }
pw_log_debug("%p: driver:%d recalc:%s active:%d", node, node->driver, pw_log_debug("%p: driver:%d recalc:%s active:%d", node, node->driver,