From d25bb0e20f82413bf80f25f1eb4d5c16472eeacb Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 2 Aug 2021 18:03:26 +0200 Subject: [PATCH] impl-link: reset state in INIT When the link state goes back to init, clear any pending operations and reset our state. --- src/pipewire/impl-link.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pipewire/impl-link.c b/src/pipewire/impl-link.c index 37b802373..c10940b48 100644 --- a/src/pipewire/impl-link.c +++ b/src/pipewire/impl-link.c @@ -89,6 +89,7 @@ static void info_changed(struct pw_impl_link *link) static void link_update_state(struct pw_impl_link *link, enum pw_link_state state, int res, char *error) { + struct impl *impl = SPA_CONTAINER_OF(link, struct impl, this); enum pw_link_state old = link->info.state; link->info.state = state; @@ -133,6 +134,11 @@ static void link_update_state(struct pw_impl_link *link, enum pw_link_state stat link->prepared = false; link->preparing = false; pw_context_recalc_graph(link->context, "link unprepared"); + } else if (state == PW_LINK_STATE_INIT) { + link->prepared = false; + link->preparing = false; + pw_work_queue_cancel(impl->work, link->output, SPA_ID_INVALID); + pw_work_queue_cancel(impl->work, link->input, SPA_ID_INVALID); } }