We already cherry-picked this when we vendored f30c044cf9. Upstream commit: https://webrtc.googlesource.com/src/+/995688c8e85b520d50961486abbe0cc03eae9558 Revert "more p2p cleanups" This reverts commit f30c044cf9bd06f91017c171d98690094ce6d88b. Reason for revert: breaks roll to chromium: https://ci.chromium.org/ui/p/chromium/builders/try/mac_chromium_compile_dbg_ng/2290104/overview Original change's description: > more p2p cleanups > > Move test code from p2p/base and rtc_base/ into p2p/test/ > This p2p/base much less crowded and > clarifies that the rtc_base/nat* is in fact only test code. > > BUG=webrtc:0 > > Change-Id: I4d14fae24cb0eff6783962f4b4483b560367ca5d > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/378900 > Commit-Queue: Jonas Oreland <jonaso@webrtc.org> > Reviewed-by: Harald Alvestrand <hta@webrtc.org> > Auto-Submit: Jonas Oreland <jonaso@webrtc.org> > Cr-Commit-Position: refs/heads/main@{#43995} Bug: webrtc:0 Change-Id: I6c79fa85f53fdb9a1dacbe38911771f9a4289c76 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/379040 Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> Owners-Override: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/main@{#43999} Differential Revision: https://phabricator.services.mozilla.com/D244009
54 lines
2.1 KiB
Diff
54 lines
2.1 KiB
Diff
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 7279bed476..db07580921 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 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 RefCountInterface {
|
|
|
|
virtual ~DeviceInfo() {}
|
|
private:
|
|
- std::set<VideoInputFeedBack*> _inputCallBacks;
|
|
+ Mutex _inputCallbacksMutex;
|
|
+ std::set<VideoInputFeedBack*> _inputCallBacks RTC_GUARDED_BY(_inputCallbacksMutex);
|
|
};
|
|
|
|
// Register capture data callback
|