Skip to content
Snippets Groups Projects
Commit 3ac0ccd3 authored by Andreas Pehrson's avatar Andreas Pehrson
Browse files

Bug 1786502 - Lock access to DeviceInfo devicechange callbacks. r=webrtc-reviewers,jib a=RyanVM

parent 8c34c3a8
No related branches found
No related tags found
No related merge requests found
......@@ -56,7 +56,7 @@ class InputObserver : public webrtc::VideoInputFeedBack {
private:
~InputObserver() = default;
RefPtr<CamerasParent> mParent;
const RefPtr<CamerasParent> mParent;
};
class DeliverFrameRunnable;
......
......@@ -16,6 +16,8 @@
#include "modules/include/module.h"
#include "modules/desktop_capture/desktop_capture_types.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)
......@@ -44,15 +46,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);
......@@ -106,7 +111,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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment