From 013b606a89c22449befe3841ab1137165dd7f835 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 25 Apr 2018 15:55:30 +0200 Subject: [PATCH] node: add driver graph field and schedule it for drivers --- src/pipewire/node.c | 7 ++++--- src/pipewire/private.h | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pipewire/node.c b/src/pipewire/node.c index ed11b5e10..9df30cb16 100644 --- a/src/pipewire/node.c +++ b/src/pipewire/node.c @@ -488,6 +488,7 @@ struct pw_node *pw_node_new(struct pw_core *core, spa_graph_set_callbacks(&impl->driver_graph, &driver_impl_default, &impl->driver_data); + this->rt.driver = &impl->driver_graph; this->rt.activation = &impl->root_activation; spa_graph_node_init(&this->rt.root, &this->rt.activation->state); spa_graph_node_add(&impl->driver_graph, &this->rt.root); @@ -587,14 +588,14 @@ static void node_process(void *data, int status) struct pw_node *node = data; struct impl *impl = SPA_CONTAINER_OF(node, struct impl, this); - pw_log_trace("node %p: process %d %d", node, node->driver, node->exported); + pw_log_trace("node %p: process driver:%d exported:%d", node, node->driver, node->exported); spa_hook_list_call(&node->listener_list, struct pw_node_events, process); if (node->driver) { if (!node->exported) { - if (impl->driver_graph.state->pending == 0 || !node->remote) - spa_graph_run(&impl->driver_graph); + if (node->rt.driver->state->pending == 0 || !node->remote) + spa_graph_run(node->rt.driver); else spa_graph_node_trigger(&node->rt.node); } diff --git a/src/pipewire/private.h b/src/pipewire/private.h index 18665250d..e1cc5157e 100644 --- a/src/pipewire/private.h +++ b/src/pipewire/private.h @@ -274,6 +274,7 @@ struct pw_node { struct pw_loop *data_loop; /**< the data loop for this node */ struct { + struct spa_graph *driver; struct spa_graph_node root; struct pw_node_activation *activation; struct spa_graph_node node;