From 820e0fccb1d2b3d0001371451196e8e3370dbb2e Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 30 May 2025 12:07:47 +0200 Subject: [PATCH] loop: we can't actually use locked to stop the loop We need to signal the event and wake up the loop to actually make it stop and joinable. --- src/pipewire/data-loop.c | 2 +- src/pipewire/main-loop.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pipewire/data-loop.c b/src/pipewire/data-loop.c index 92c1bdf55..3cee8a2e7 100644 --- a/src/pipewire/data-loop.c +++ b/src/pipewire/data-loop.c @@ -280,7 +280,7 @@ int pw_data_loop_stop(struct pw_data_loop *loop) pthread_cancel(loop->thread); } else { pw_log_debug("%p signal", loop); - pw_loop_locked(loop->loop, do_stop, 1, NULL, 0, loop); + pw_loop_invoke(loop->loop, do_stop, 1, NULL, 0, false, loop); } pw_log_debug("%p join", loop); if ((utils = loop->thread_utils) == NULL) diff --git a/src/pipewire/main-loop.c b/src/pipewire/main-loop.c index 41ac5bf28..6e73a13cb 100644 --- a/src/pipewire/main-loop.c +++ b/src/pipewire/main-loop.c @@ -107,7 +107,7 @@ SPA_EXPORT int pw_main_loop_quit(struct pw_main_loop *loop) { pw_log_debug("%p: quit", loop); - return pw_loop_locked(loop->loop, do_stop, 1, NULL, 0, loop); + return pw_loop_invoke(loop->loop, do_stop, 1, NULL, 0, false, loop); } /** Start a main loop