summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/moz-patch-stack/0063.patch
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/moz-patch-stack/0063.patch')
-rw-r--r--third_party/libwebrtc/moz-patch-stack/0063.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/third_party/libwebrtc/moz-patch-stack/0063.patch b/third_party/libwebrtc/moz-patch-stack/0063.patch
new file mode 100644
index 0000000000..a61bf11937
--- /dev/null
+++ b/third_party/libwebrtc/moz-patch-stack/0063.patch
@@ -0,0 +1,53 @@
+From: Andreas Pehrson <apehrson@mozilla.com>
+Date: Mon, 5 Sep 2022 13:56:00 +0000
+Subject: Bug 1786502 - Lock access to DeviceInfo devicechange callbacks.
+ r=webrtc-reviewers,jib
+
+Differential Revision: https://phabricator.services.mozilla.com/D155365
+Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/e826dfadfe1264c59d9b13e3c17d6f75a40f5c33
+---
+ modules/video_capture/video_capture.h | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/modules/video_capture/video_capture.h b/modules/video_capture/video_capture.h
+index 58485f28e9..04203033b0 100644
+--- a/modules/video_capture/video_capture.h
++++ b/modules/video_capture/video_capture.h
+@@ -16,6 +16,8 @@
+ #include "modules/desktop_capture/desktop_capture_types.h"
+ #include "modules/video_capture/raw_video_sink_interface.h"
+ #include "modules/video_capture/video_capture_defines.h"
++#include "rtc_base/synchronization/mutex.h"
++#include "rtc_base/thread_annotations.h"
+ #include <set>
+
+ #if defined(ANDROID)
+@@ -40,15 +42,18 @@ class VideoCaptureModule : public rtc::RefCountInterface {
+ virtual uint32_t NumberOfDevices() = 0;
+ virtual int32_t Refresh() = 0;
+ virtual void DeviceChange() {
++ MutexLock lock(&_inputCallbacksMutex);
+ for (auto inputCallBack : _inputCallBacks) {
+ inputCallBack->OnDeviceChange();
+ }
+ }
+ virtual void RegisterVideoInputFeedBack(VideoInputFeedBack* callBack) {
++ MutexLock lock(&_inputCallbacksMutex);
+ _inputCallBacks.insert(callBack);
+ }
+
+ virtual void DeRegisterVideoInputFeedBack(VideoInputFeedBack* callBack) {
++ MutexLock lock(&_inputCallbacksMutex);
+ auto it = _inputCallBacks.find(callBack);
+ if (it != _inputCallBacks.end()) {
+ _inputCallBacks.erase(it);
+@@ -102,7 +107,8 @@ class VideoCaptureModule : public rtc::RefCountInterface {
+
+ virtual ~DeviceInfo() {}
+ private:
+- std::set<VideoInputFeedBack*> _inputCallBacks;
++ Mutex _inputCallbacksMutex;
++ std::set<VideoInputFeedBack*> _inputCallBacks RTC_GUARDED_BY(_inputCallbacksMutex);
+ };
+
+ // Register capture data callback