node: set master flag

Set the master flag when a node is selected as master.
Recalc graph when a node is destroyed
This commit is contained in:
Wim Taymans 2019-04-11 16:38:11 +02:00
parent 092a0c660d
commit affc641c71

View file

@ -561,6 +561,8 @@ int pw_node_set_driver(struct pw_node *node, struct pw_node *driver)
if (old == driver)
return 0;
node->master = node->driver && driver == node;
node->driver_node = driver;
pw_node_emit_driver_changed(node, old, driver);
@ -834,6 +836,7 @@ struct pw_node *pw_node_new(struct pw_core *core,
this->driver_node = this;
spa_list_append(&this->driver_list, &this->driver_link);
this->master = true;
return this;
@ -1035,6 +1038,9 @@ static int node_ready(void *data, int status)
}
node->rt.activation->running = true;
}
if (node->driver && !node->master)
return 0;
return resume_node(node, status);
}
@ -1161,6 +1167,8 @@ void pw_node_destroy(struct pw_node *node)
pw_global_destroy(node->global);
}
pw_core_recalc_graph(node->core);
pw_log_debug("node %p: free", node);
pw_node_emit_free(node);