summaryrefslogtreecommitdiff
path: root/media-video/pipewire/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-08-04 15:17:45 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-08-04 15:17:45 +0100
commit2273b13517c999048fff4aa7714d14415478de1d (patch)
treed0ff945bd67ab1efccbaa9c7bcc077c8f8032338 /media-video/pipewire/files
parent5e0e6a28799c4a5134e55d203b373f1d6811c004 (diff)
gentoo auto-resync : 04:08:2023 - 15:17:45
Diffstat (limited to 'media-video/pipewire/files')
-rw-r--r--media-video/pipewire/files/0.3.77/0001-gst-prevent-crash-stopping-device-provider.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/media-video/pipewire/files/0.3.77/0001-gst-prevent-crash-stopping-device-provider.patch b/media-video/pipewire/files/0.3.77/0001-gst-prevent-crash-stopping-device-provider.patch
new file mode 100644
index 000000000000..9b6373da1390
--- /dev/null
+++ b/media-video/pipewire/files/0.3.77/0001-gst-prevent-crash-stopping-device-provider.patch
@@ -0,0 +1,34 @@
+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