1
Fork 0

gst: Prevent a crash when stopping device provider

The provider might fail to connect to the PipeWire core when starting up, so
when stopping we need to check the core is valid before attempting to acquire a
mutex on its loop.
This commit is contained in:
Philippe Normand 2023-08-04 10:01:07 +01:00
parent 31cd694602
commit 140374d207
1 changed files with 7 additions and 2 deletions

View File

@ -665,11 +665,16 @@ gst_pipewire_device_provider_stop (GstDeviceProvider * provider)
{
GstPipeWireDeviceProvider *self = GST_PIPEWIRE_DEVICE_PROVIDER (provider);
pw_thread_loop_lock (self->core->loop);
/* core might be NULL if we failed to connect in _start. */
if (self->core != NULL) {
pw_thread_loop_lock (self->core->loop);
}
GST_DEBUG_OBJECT (self, "stopping provider");
g_clear_pointer ((struct pw_proxy**)&self->registry, pw_proxy_destroy);
pw_thread_loop_unlock (self->core->loop);
if (self->core != NULL) {
pw_thread_loop_unlock (self->core->loop);
}
g_clear_pointer (&self->core, gst_pipewire_core_release);
}