Bug 1880804 [wpt PR 44645] - Implement constructor in RTCEncodedVideoFrame, a=testonly
[gecko.git] / third_party / libwebrtc / moz-patch-stack / 0063.patch
blob12bf71ee22c8a682413933ac3ef2473c0513036d
1 From: Andreas Pehrson <apehrson@mozilla.com>
2 Date: Mon, 5 Sep 2022 13:56:00 +0000
3 Subject: Bug 1786502 - Lock access to DeviceInfo devicechange callbacks.
4 r=webrtc-reviewers,jib
6 Differential Revision: https://phabricator.services.mozilla.com/D155365
7 Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/e826dfadfe1264c59d9b13e3c17d6f75a40f5c33
8 ---
9 modules/video_capture/video_capture.h | 8 +++++++-
10 1 file changed, 7 insertions(+), 1 deletion(-)
12 diff --git a/modules/video_capture/video_capture.h b/modules/video_capture/video_capture.h
13 index 7279bed476..db07580921 100644
14 --- a/modules/video_capture/video_capture.h
15 +++ b/modules/video_capture/video_capture.h
16 @@ -16,6 +16,8 @@
17 #include "modules/desktop_capture/desktop_capture_types.h"
18 #include "modules/video_capture/raw_video_sink_interface.h"
19 #include "modules/video_capture/video_capture_defines.h"
20 +#include "rtc_base/synchronization/mutex.h"
21 +#include "rtc_base/thread_annotations.h"
22 #include <set>
24 #if defined(ANDROID)
25 @@ -40,15 +42,18 @@ class VideoCaptureModule : public RefCountInterface {
26 virtual uint32_t NumberOfDevices() = 0;
27 virtual int32_t Refresh() = 0;
28 virtual void DeviceChange() {
29 + MutexLock lock(&_inputCallbacksMutex);
30 for (auto inputCallBack : _inputCallBacks) {
31 inputCallBack->OnDeviceChange();
34 virtual void RegisterVideoInputFeedBack(VideoInputFeedBack* callBack) {
35 + MutexLock lock(&_inputCallbacksMutex);
36 _inputCallBacks.insert(callBack);
39 virtual void DeRegisterVideoInputFeedBack(VideoInputFeedBack* callBack) {
40 + MutexLock lock(&_inputCallbacksMutex);
41 auto it = _inputCallBacks.find(callBack);
42 if (it != _inputCallBacks.end()) {
43 _inputCallBacks.erase(it);
44 @@ -102,7 +107,8 @@ class VideoCaptureModule : public RefCountInterface {
46 virtual ~DeviceInfo() {}
47 private:
48 - std::set<VideoInputFeedBack*> _inputCallBacks;
49 + Mutex _inputCallbacksMutex;
50 + std::set<VideoInputFeedBack*> _inputCallBacks RTC_GUARDED_BY(_inputCallbacksMutex);
53 // Register capture data callback