diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:13:27 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:13:27 +0000 |
commit | 40a355a42d4a9444dc753c04c6608dade2f06a23 (patch) | |
tree | 871fc667d2de662f171103ce5ec067014ef85e61 /third_party/libwebrtc/modules/video_capture/linux/camera_portal.cc | |
parent | Adding upstream version 124.0.1. (diff) | |
download | firefox-40a355a42d4a9444dc753c04c6608dade2f06a23.tar.xz firefox-40a355a42d4a9444dc753c04c6608dade2f06a23.zip |
Adding upstream version 125.0.1.upstream/125.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/modules/video_capture/linux/camera_portal.cc')
-rw-r--r-- | third_party/libwebrtc/modules/video_capture/linux/camera_portal.cc | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/third_party/libwebrtc/modules/video_capture/linux/camera_portal.cc b/third_party/libwebrtc/modules/video_capture/linux/camera_portal.cc index 85b9f20228..106ca1682c 100644 --- a/third_party/libwebrtc/modules/video_capture/linux/camera_portal.cc +++ b/third_party/libwebrtc/modules/video_capture/linux/camera_portal.cc @@ -15,6 +15,7 @@ #include "modules/portal/pipewire_utils.h" #include "modules/portal/xdg_desktop_portal_utils.h" +#include "rtc_base/synchronization/mutex.h" namespace webrtc { @@ -54,7 +55,9 @@ class CameraPortalPrivate { GAsyncResult* result, gpointer user_data); - CameraPortal::PortalNotifier* notifier_ = nullptr; + webrtc::Mutex notifier_lock_; + CameraPortal::PortalNotifier* notifier_ RTC_GUARDED_BY(¬ifier_lock_) = + nullptr; GDBusConnection* connection_ = nullptr; GDBusProxy* proxy_ = nullptr; @@ -66,6 +69,11 @@ CameraPortalPrivate::CameraPortalPrivate(CameraPortal::PortalNotifier* notifier) : notifier_(notifier) {} CameraPortalPrivate::~CameraPortalPrivate() { + { + webrtc::MutexLock lock(¬ifier_lock_); + notifier_ = nullptr; + } + if (access_request_signal_id_) { g_dbus_connection_signal_unsubscribe(connection_, access_request_signal_id_); @@ -229,7 +237,11 @@ void CameraPortalPrivate::OnOpenResponse(GDBusProxy* proxy, } void CameraPortalPrivate::OnPortalDone(RequestResponse result, int fd) { - notifier_->OnCameraRequestResult(result, fd); + webrtc::MutexLock lock(¬ifier_lock_); + if (notifier_) { + notifier_->OnCameraRequestResult(result, fd); + notifier_ = nullptr; + } } CameraPortal::CameraPortal(PortalNotifier* notifier) |