diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-08-04 15:17:45 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-08-04 15:17:45 +0100 |
commit | 2273b13517c999048fff4aa7714d14415478de1d (patch) | |
tree | d0ff945bd67ab1efccbaa9c7bcc077c8f8032338 /media-video/pipewire/files | |
parent | 5e0e6a28799c4a5134e55d203b373f1d6811c004 (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.patch | 34 |
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 |