mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
node: only update driver_list when registered
This commit is contained in:
parent
1acefc00a6
commit
6655e09502
1 changed files with 12 additions and 8 deletions
|
|
@ -518,6 +518,8 @@ int pw_node_register(struct pw_node *this,
|
||||||
return -errno;
|
return -errno;
|
||||||
|
|
||||||
spa_list_append(&core->node_list, &this->link);
|
spa_list_append(&core->node_list, &this->link);
|
||||||
|
if (this->driver)
|
||||||
|
spa_list_append(&core->driver_list, &this->driver_link);
|
||||||
this->registered = true;
|
this->registered = true;
|
||||||
|
|
||||||
this->info.id = this->global->id;
|
this->info.id = this->global->id;
|
||||||
|
|
@ -634,11 +636,13 @@ static void check_properties(struct pw_node *node)
|
||||||
if (node->driver != driver) {
|
if (node->driver != driver) {
|
||||||
pw_log_info("node %p: driver %d -> %d", node, node->driver, driver);
|
pw_log_info("node %p: driver %d -> %d", node, node->driver, driver);
|
||||||
node->driver = driver;
|
node->driver = driver;
|
||||||
|
if (node->registered) {
|
||||||
if (driver)
|
if (driver)
|
||||||
spa_list_append(&node->core->driver_list, &node->driver_link);
|
spa_list_append(&node->core->driver_list, &node->driver_link);
|
||||||
else
|
else
|
||||||
spa_list_remove(&node->driver_link);
|
spa_list_remove(&node->driver_link);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_LATENCY))) {
|
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_LATENCY))) {
|
||||||
uint32_t num, denom;
|
uint32_t num, denom;
|
||||||
|
|
@ -1179,14 +1183,14 @@ void pw_node_destroy(struct pw_node *node)
|
||||||
|
|
||||||
pw_log_debug("node %p: driver node %p", impl, node->driver_node);
|
pw_log_debug("node %p: driver node %p", impl, node->driver_node);
|
||||||
|
|
||||||
if (node->driver)
|
|
||||||
spa_list_remove(&node->driver_link);
|
|
||||||
|
|
||||||
/* remove ourself as a slave from the driver node */
|
/* remove ourself as a slave from the driver node */
|
||||||
spa_list_remove(&node->slave_link);
|
spa_list_remove(&node->slave_link);
|
||||||
|
|
||||||
if (node->registered)
|
if (node->registered) {
|
||||||
spa_list_remove(&node->link);
|
spa_list_remove(&node->link);
|
||||||
|
if (node->driver)
|
||||||
|
spa_list_remove(&node->driver_link);
|
||||||
|
}
|
||||||
|
|
||||||
if (node->node) {
|
if (node->node) {
|
||||||
spa_hook_remove(&node->listener);
|
spa_hook_remove(&node->listener);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue