From 132dd760eed74744d829b1a5d28de3bb834171fc Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 14 Mar 2019 12:28:01 +0100 Subject: [PATCH] client-stream: only add link once --- src/modules/module-client-node/client-stream.c | 3 +++ src/pipewire/control.c | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/modules/module-client-node/client-stream.c b/src/modules/module-client-node/client-stream.c index 87062ad95..7e46b34f1 100644 --- a/src/modules/module-client-node/client-stream.c +++ b/src/modules/module-client-node/client-stream.c @@ -181,6 +181,9 @@ static void try_link_controls(struct impl *impl) if (!impl->use_converter) return; + if (impl->control.valid || impl->notify.valid) + return; + target = pw_node_find_port(impl->this.node, impl->direction, 0); if (target == NULL) { diff --git a/src/pipewire/control.c b/src/pipewire/control.c index 688a7a4f8..6235ca399 100644 --- a/src/pipewire/control.c +++ b/src/pipewire/control.c @@ -92,18 +92,18 @@ pw_control_new(struct pw_core *core, void pw_control_destroy(struct pw_control *control) { struct impl *impl = SPA_CONTAINER_OF(control, struct impl, this); - struct pw_control_link *link, *tmp; + struct pw_control_link *link; pw_log_debug("control %p: destroy", control); pw_control_emit_destroy(control); if (control->direction == SPA_DIRECTION_OUTPUT) { - spa_list_for_each_safe(link, tmp, &control->links, out_link) + spa_list_consume(link, &control->links, out_link) pw_control_remove_link(link); } else { - spa_list_for_each_safe(link, tmp, &control->links, in_link) + spa_list_consume(link, &control->links, in_link) pw_control_remove_link(link); }