Bug 1308792 - protect the critical section accessing device_info_cs_; r=jesup
MozReview-Commit-ID: GGxtHUPAk6N
--- a/media/webrtc/trunk/webrtc/video_engine/vie_input_manager.cc
+++ b/media/webrtc/trunk/webrtc/video_engine/vie_input_manager.cc
@@ -376,31 +376,36 @@ int32_t ViEInputManager::RegisterObserve
CriticalSectionScoped cs(observer_cs_.get());
if (observer_) {
LOG_F(LS_ERROR) << "Observer already registered.";
return -1;
}
observer_ = observer;
}
+ CriticalSectionScoped cs(device_info_cs_.get());
if (!GetDeviceInfo())
return -1;
if (capture_device_info_ != NULL)
capture_device_info_->RegisterVideoInputFeedBack(*this);
return 0;
}
int32_t ViEInputManager::DeRegisterObserver() {
- if (capture_device_info_ != NULL)
- capture_device_info_->DeRegisterVideoInputFeedBack();
+ {
+ CriticalSectionScoped cs(observer_cs_.get());
+ observer_ = NULL;
+ }
- CriticalSectionScoped cs(observer_cs_.get());
- observer_ = NULL;
+ CriticalSectionScoped cs(device_info_cs_.get());
+ if (capture_device_info_ != NULL) {
+ capture_device_info_->DeRegisterVideoInputFeedBack();
+ }
return 0;
}
ViEInputManagerScoped::ViEInputManagerScoped(
const ViEInputManager& vie_input_manager)
: ViEManagerScopedBase(vie_input_manager) {
}