From 318bb0b442ee89c7a7e0e9400c3d65d38b8d5cf7 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 16 May 2023 16:44:27 +0200 Subject: [PATCH] context: Don't stop at driver nodes, only driving nodes Don't stop collecting runnable nodes when we find a driver, only a driving node. Otherwise we would skip nodes between virtual sinks and the real sink when the virtual sink is not driving. Fixes #3220 --- src/pipewire/context.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pipewire/context.c b/src/pipewire/context.c index 4cffc5306..4fa44db6b 100644 --- a/src/pipewire/context.c +++ b/src/pipewire/context.c @@ -803,7 +803,7 @@ static inline int run_nodes(struct pw_context *context, struct pw_impl_node *nod pw_log_debug(" peer %p: '%s'", t, t->name); t->runnable = true; - if (!t->driver) + if (!t->driving) run_nodes(context, t, nodes); } } @@ -816,7 +816,7 @@ static inline int run_nodes(struct pw_context *context, struct pw_impl_node *nod pw_log_debug(" peer %p: '%s'", t, t->name); t->runnable = true; - if (!t->driver) + if (!t->driving) run_nodes(context, t, nodes); } } @@ -834,7 +834,7 @@ static inline int run_nodes(struct pw_context *context, struct pw_impl_node *nod pw_log_debug(" group %p: '%s'", t, t->name); t->runnable = true; - if (!t->driver) + if (!t->driving) run_nodes(context, t, nodes); } } @@ -937,7 +937,7 @@ static int collect_nodes(struct pw_context *context, struct pw_impl_node *node, pw_log_debug(" next node %p: '%s' runnable:%u", n, n->name, n->runnable); } spa_list_for_each(n, collect, sort_link) - if (!n->driver && n->runnable) + if (!n->driving && n->runnable) run_nodes(context, n, collect); return 0;