1
Fork 0

impl-node: handle priority.driver changes

When the driver priority changes, remove and add the node into the
driver list to keep the list sorted. Also trigger a graph recalc.
This commit is contained in:
Wim Taymans 2023-12-20 12:39:19 +01:00
parent a7410fe1bf
commit 92ac9a355f
1 changed files with 11 additions and 4 deletions

View File

@ -923,8 +923,16 @@ static void check_properties(struct pw_impl_node *node)
bool driver, trigger;
if ((str = pw_properties_get(node->properties, PW_KEY_PRIORITY_DRIVER))) {
node->priority_driver = pw_properties_parse_int(str);
pw_log_debug("%p: priority driver %d", node, node->priority_driver);
value = pw_properties_parse_int(str);
if (value != node->priority_driver) {
pw_log_debug("%p: priority driver %d -> %d", node, node->priority_driver, value);
node->priority_driver = value;
if (node->registered && node->driver) {
remove_driver(context, node);
insert_driver(context, node);
recalc_reason = "driver priority changed";
}
}
}
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_NAME)) &&
@ -947,9 +955,8 @@ static void check_properties(struct pw_impl_node *node)
if (node->registered) {
if (driver)
insert_driver(context, node);
else {
else
remove_driver(context, node);
}
}
if (driver && node->driver_node == node)
node->driving = true;