mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
node: make destroyed nodes as inactive
To make sure they are skipped in the graph calculation. Always update the slave_list and slave_link
This commit is contained in:
parent
1612ed793e
commit
1379d45e97
1 changed files with 5 additions and 2 deletions
|
|
@ -614,15 +614,16 @@ int pw_node_set_driver(struct pw_node *node, struct pw_node *driver)
|
||||||
if (driver == NULL)
|
if (driver == NULL)
|
||||||
driver = node;
|
driver = node;
|
||||||
|
|
||||||
|
spa_list_remove(&node->slave_link);
|
||||||
|
spa_list_append(&driver->slave_list, &node->slave_link);
|
||||||
|
|
||||||
if (old == driver)
|
if (old == driver)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
node->master = node->driver && driver == node;
|
node->master = node->driver && driver == node;
|
||||||
pw_log_info("node %p: driver %p master:%u", node, driver, node->master);
|
pw_log_info("node %p: driver %p master:%u", node, driver, node->master);
|
||||||
|
|
||||||
spa_list_remove(&node->slave_link);
|
|
||||||
node->driver_node = driver;
|
node->driver_node = driver;
|
||||||
spa_list_append(&driver->slave_list, &node->slave_link);
|
|
||||||
|
|
||||||
pw_node_emit_driver_changed(node, old, driver);
|
pw_node_emit_driver_changed(node, old, driver);
|
||||||
|
|
||||||
|
|
@ -1210,6 +1211,8 @@ void pw_node_destroy(struct pw_node *node)
|
||||||
struct impl *impl = SPA_CONTAINER_OF(node, struct impl, this);
|
struct impl *impl = SPA_CONTAINER_OF(node, struct impl, this);
|
||||||
struct pw_port *port;
|
struct pw_port *port;
|
||||||
|
|
||||||
|
node->active = false;
|
||||||
|
|
||||||
pw_log_debug("node %p: destroy", impl);
|
pw_log_debug("node %p: destroy", impl);
|
||||||
pw_node_emit_destroy(node);
|
pw_node_emit_destroy(node);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue