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 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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -32,4 +32,3 @@ bool pa_is_pipewire(void)
|
|||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue