35 lines
1.3 KiB
Diff
35 lines
1.3 KiB
Diff
https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/140374d2071e6204fded4ca65645d4e9a3dd053e
|
|
https://bugs.webkit.org/show_bug.cgi?id=259735
|
|
|
|
From 140374d2071e6204fded4ca65645d4e9a3dd053e Mon Sep 17 00:00:00 2001
|
|
From: Philippe Normand <philn@igalia.com>
|
|
Date: Fri, 4 Aug 2023 10:01:07 +0100
|
|
Subject: [PATCH] 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.
|
|
--- a/src/gst/gstpipewiredeviceprovider.c
|
|
+++ b/src/gst/gstpipewiredeviceprovider.c
|
|
@@ -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);
|
|
}
|
|
|
|
--
|
|
GitLab
|