diff --git a/pipewire-pulseaudio/src/mainloop-signal.c b/pipewire-pulseaudio/src/mainloop-signal.c index 5caf59200..19fe31225 100644 --- a/pipewire-pulseaudio/src/mainloop-signal.c +++ b/pipewire-pulseaudio/src/mainloop-signal.c @@ -31,6 +31,7 @@ static pa_mainloop_api *api = NULL; +static bool have_signals = false; static struct spa_list signals; static struct pw_loop *loop = NULL; @@ -58,14 +59,12 @@ int pa_signal_init(pa_mainloop_api *a) SPA_EXPORT void pa_signal_done(void) { - pa_signal_event *ev, *t; - - pa_assert(api); - - spa_list_for_each_safe(ev, t, &signals, link) - pa_signal_free(ev); - spa_list_init(&signals); + pa_signal_event *ev; + if (have_signals) { + spa_list_consume(ev, &signals, link) + pa_signal_free(ev); + } api = NULL; } @@ -89,6 +88,9 @@ pa_signal_event* pa_signal_new(int sig, pa_signal_cb_t callback, void *userdata) ev->callback = callback; ev->userdata = userdata; + if (!have_signals) + spa_list_init(&signals); + have_signals = true; spa_list_append(&signals, &ev->link); return ev; diff --git a/pipewire-pulseaudio/src/mainloop.c b/pipewire-pulseaudio/src/mainloop.c index 9170b49e7..2ff97f740 100644 --- a/pipewire-pulseaudio/src/mainloop.c +++ b/pipewire-pulseaudio/src/mainloop.c @@ -254,6 +254,9 @@ pa_mainloop *pa_mainloop_new(void) { pa_mainloop *loop; + if (getenv("PULSE_INTERNAL")) + return NULL; + loop = calloc(1, sizeof(pa_mainloop)); if (loop == NULL) return NULL; diff --git a/pipewire-pulseaudio/src/version.c b/pipewire-pulseaudio/src/version.c index 06c63c37a..69e269c2a 100644 --- a/pipewire-pulseaudio/src/version.c +++ b/pipewire-pulseaudio/src/version.c @@ -32,4 +32,3 @@ bool pa_is_pipewire(void) { return true; } -