mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-01 22:58:50 -04:00
pulse: fix crash when cleaning up signals
Also make sure the main pulseaudio binary can't be started.
This commit is contained in:
parent
f3c06372ef
commit
4370675d2b
3 changed files with 12 additions and 8 deletions
|
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
|
|
||||||
static pa_mainloop_api *api = NULL;
|
static pa_mainloop_api *api = NULL;
|
||||||
|
static bool have_signals = false;
|
||||||
static struct spa_list signals;
|
static struct spa_list signals;
|
||||||
static struct pw_loop *loop = NULL;
|
static struct pw_loop *loop = NULL;
|
||||||
|
|
||||||
|
|
@ -58,14 +59,12 @@ int pa_signal_init(pa_mainloop_api *a)
|
||||||
SPA_EXPORT
|
SPA_EXPORT
|
||||||
void pa_signal_done(void)
|
void pa_signal_done(void)
|
||||||
{
|
{
|
||||||
pa_signal_event *ev, *t;
|
pa_signal_event *ev;
|
||||||
|
|
||||||
pa_assert(api);
|
|
||||||
|
|
||||||
spa_list_for_each_safe(ev, t, &signals, link)
|
|
||||||
pa_signal_free(ev);
|
|
||||||
spa_list_init(&signals);
|
|
||||||
|
|
||||||
|
if (have_signals) {
|
||||||
|
spa_list_consume(ev, &signals, link)
|
||||||
|
pa_signal_free(ev);
|
||||||
|
}
|
||||||
api = NULL;
|
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->callback = callback;
|
||||||
ev->userdata = userdata;
|
ev->userdata = userdata;
|
||||||
|
|
||||||
|
if (!have_signals)
|
||||||
|
spa_list_init(&signals);
|
||||||
|
have_signals = true;
|
||||||
spa_list_append(&signals, &ev->link);
|
spa_list_append(&signals, &ev->link);
|
||||||
|
|
||||||
return ev;
|
return ev;
|
||||||
|
|
|
||||||
|
|
@ -254,6 +254,9 @@ pa_mainloop *pa_mainloop_new(void)
|
||||||
{
|
{
|
||||||
pa_mainloop *loop;
|
pa_mainloop *loop;
|
||||||
|
|
||||||
|
if (getenv("PULSE_INTERNAL"))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
loop = calloc(1, sizeof(pa_mainloop));
|
loop = calloc(1, sizeof(pa_mainloop));
|
||||||
if (loop == NULL)
|
if (loop == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
||||||
|
|
@ -32,4 +32,3 @@ bool pa_is_pipewire(void)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue