diff options
Diffstat (limited to 'content/browser/renderer_host/media/video_capture_manager.cc')
-rw-r--r-- | content/browser/renderer_host/media/video_capture_manager.cc | 70 |
1 files changed, 31 insertions, 39 deletions
diff --git a/content/browser/renderer_host/media/video_capture_manager.cc b/content/browser/renderer_host/media/video_capture_manager.cc index be5738d..3786efa 100644 --- a/content/browser/renderer_host/media/video_capture_manager.cc +++ b/content/browser/renderer_host/media/video_capture_manager.cc @@ -39,23 +39,23 @@ struct VideoCaptureManager::Controller { }; VideoCaptureManager::VideoCaptureManager() - : vc_device_thread_("VideoCaptureManagerThread"), - listener_(NULL), - new_capture_session_id_(kFirstSessionId), - use_fake_device_(false) { - vc_device_thread_.Start(); + : listener_(NULL), + new_capture_session_id_(kFirstSessionId), + use_fake_device_(false) { } VideoCaptureManager::~VideoCaptureManager() { - vc_device_thread_.Stop(); DCHECK(devices_.empty()); DCHECK(controllers_.empty()); } -void VideoCaptureManager::Register(MediaStreamProviderListener* listener) { +void VideoCaptureManager::Register(MediaStreamProviderListener* listener, + base::MessageLoopProxy* device_thread_loop) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); DCHECK(!listener_); + DCHECK(!device_loop_); listener_ = listener; + device_loop_ = device_thread_loop; } void VideoCaptureManager::Unregister() { @@ -67,8 +67,7 @@ void VideoCaptureManager::Unregister() { void VideoCaptureManager::EnumerateDevices() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); DCHECK(listener_); - - vc_device_thread_.message_loop()->PostTask( + device_loop_->PostTask( FROM_HERE, base::Bind(&VideoCaptureManager::OnEnumerateDevices, this)); } @@ -80,7 +79,7 @@ int VideoCaptureManager::Open(const StreamDeviceInfo& device) { // Generate a new id for this device. int video_capture_session_id = new_capture_session_id_++; - vc_device_thread_.message_loop()->PostTask( + device_loop_->PostTask( FROM_HERE, base::Bind(&VideoCaptureManager::OnOpen, this, video_capture_session_id, device)); @@ -91,8 +90,7 @@ int VideoCaptureManager::Open(const StreamDeviceInfo& device) { void VideoCaptureManager::Close(int capture_session_id) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); DCHECK(listener_); - - vc_device_thread_.message_loop()->PostTask( + device_loop_->PostTask( FROM_HERE, base::Bind(&VideoCaptureManager::OnClose, this, capture_session_id)); } @@ -101,8 +99,7 @@ void VideoCaptureManager::Start( const media::VideoCaptureParams& capture_params, media::VideoCaptureDevice::EventHandler* video_capture_receiver) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - - vc_device_thread_.message_loop()->PostTask( + device_loop_->PostTask( FROM_HERE, base::Bind(&VideoCaptureManager::OnStart, this, capture_params, video_capture_receiver)); @@ -112,8 +109,7 @@ void VideoCaptureManager::Stop( const media::VideoCaptureSessionId& capture_session_id, base::Closure stopped_cb) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - - vc_device_thread_.message_loop()->PostTask( + device_loop_->PostTask( FROM_HERE, base::Bind(&VideoCaptureManager::OnStop, this, capture_session_id, stopped_cb)); @@ -128,12 +124,8 @@ void VideoCaptureManager::UseFakeDevice() { use_fake_device_ = true; } -MessageLoop* VideoCaptureManager::GetMessageLoop() { - return vc_device_thread_.message_loop(); -} - void VideoCaptureManager::OnEnumerateDevices() { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); media::VideoCaptureDevice::Names device_names; GetAvailableDevices(&device_names); @@ -152,7 +144,7 @@ void VideoCaptureManager::OnEnumerateDevices() { void VideoCaptureManager::OnOpen(int capture_session_id, const StreamDeviceInfo& device) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); DCHECK(devices_.find(capture_session_id) == devices_.end()); DVLOG(1) << "VideoCaptureManager::OnOpen, id " << capture_session_id; @@ -186,7 +178,7 @@ void VideoCaptureManager::OnOpen(int capture_session_id, } void VideoCaptureManager::OnClose(int capture_session_id) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); DVLOG(1) << "VideoCaptureManager::OnClose, id " << capture_session_id; media::VideoCaptureDevice* video_capture_device = NULL; @@ -222,7 +214,7 @@ void VideoCaptureManager::OnClose(int capture_session_id) { void VideoCaptureManager::OnStart( const media::VideoCaptureParams capture_params, media::VideoCaptureDevice::EventHandler* video_capture_receiver) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); DCHECK(video_capture_receiver != NULL); DVLOG(1) << "VideoCaptureManager::OnStart, (" << capture_params.width << ", " << capture_params.height @@ -253,7 +245,7 @@ void VideoCaptureManager::OnStart( void VideoCaptureManager::OnStop( const media::VideoCaptureSessionId capture_session_id, base::Closure stopped_cb) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); DVLOG(1) << "VideoCaptureManager::OnStop, id " << capture_session_id; VideoCaptureDevices::iterator it = devices_.find(capture_session_id); @@ -325,7 +317,7 @@ void VideoCaptureManager::OnError(int capture_session_id, } void VideoCaptureManager::PostOnOpened(int capture_session_id) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind(&VideoCaptureManager::OnOpened, this, @@ -333,7 +325,7 @@ void VideoCaptureManager::PostOnOpened(int capture_session_id) { } void VideoCaptureManager::PostOnClosed(int capture_session_id) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind(&VideoCaptureManager::OnClosed, this, @@ -342,7 +334,7 @@ void VideoCaptureManager::PostOnClosed(int capture_session_id) { void VideoCaptureManager::PostOnDevicesEnumerated( const StreamDeviceInfoArray& devices) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind(&VideoCaptureManager::OnDevicesEnumerated, @@ -359,13 +351,13 @@ void VideoCaptureManager::PostOnError(int capture_session_id, capture_session_id, error)); } -bool VideoCaptureManager::IsOnCaptureDeviceThread() const { - return MessageLoop::current() == vc_device_thread_.message_loop(); +bool VideoCaptureManager::IsOnDeviceThread() const { + return device_loop_->BelongsToCurrentThread(); } void VideoCaptureManager::GetAvailableDevices( media::VideoCaptureDevice::Names* device_names) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); if (!use_fake_device_) { media::VideoCaptureDevice::GetDeviceNames(device_names); @@ -376,7 +368,7 @@ void VideoCaptureManager::GetAvailableDevices( bool VideoCaptureManager::DeviceOpened( const media::VideoCaptureDevice::Name& device_name) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); for (VideoCaptureDevices::iterator it = devices_.begin(); it != devices_.end(); ++it) { @@ -390,7 +382,7 @@ bool VideoCaptureManager::DeviceOpened( media::VideoCaptureDevice* VideoCaptureManager::GetOpenedDevice( const StreamDeviceInfo& device_info) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); for (VideoCaptureDevices::iterator it = devices_.begin(); it != devices_.end(); it++) { @@ -403,7 +395,7 @@ media::VideoCaptureDevice* VideoCaptureManager::GetOpenedDevice( bool VideoCaptureManager::DeviceInUse( const media::VideoCaptureDevice* video_capture_device) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); for (VideoCaptureDevices::iterator it = devices_.begin(); it != devices_.end(); ++it) { @@ -420,7 +412,7 @@ void VideoCaptureManager::AddController( VideoCaptureControllerEventHandler* handler, base::Callback<void(VideoCaptureController*)> added_cb) { DCHECK(handler); - vc_device_thread_.message_loop()->PostTask( + device_loop_->PostTask( FROM_HERE, base::Bind(&VideoCaptureManager::DoAddControllerOnDeviceThread, this, capture_params, handler, added_cb)); @@ -430,7 +422,7 @@ void VideoCaptureManager::DoAddControllerOnDeviceThread( const media::VideoCaptureParams capture_params, VideoCaptureControllerEventHandler* handler, base::Callback<void(VideoCaptureController*)> added_cb) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); media::VideoCaptureDevice* video_capture_device = GetDeviceInternal(capture_params.session_id); @@ -452,7 +444,7 @@ void VideoCaptureManager::RemoveController( VideoCaptureController* controller, VideoCaptureControllerEventHandler* handler) { DCHECK(handler); - vc_device_thread_.message_loop()->PostTask( + device_loop_->PostTask( FROM_HERE, base::Bind(&VideoCaptureManager::DoRemoveControllerOnDeviceThread, this, make_scoped_refptr(controller), handler)); @@ -461,7 +453,7 @@ void VideoCaptureManager::RemoveController( void VideoCaptureManager::DoRemoveControllerOnDeviceThread( VideoCaptureController* controller, VideoCaptureControllerEventHandler* handler) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); for (Controllers::iterator cit = controllers_.begin(); cit != controllers_.end(); ++cit) { @@ -485,7 +477,7 @@ void VideoCaptureManager::DoRemoveControllerOnDeviceThread( media::VideoCaptureDevice* VideoCaptureManager::GetDeviceInternal( int capture_session_id) { - DCHECK(IsOnCaptureDeviceThread()); + DCHECK(IsOnDeviceThread()); VideoCaptureDevices::iterator dit = devices_.find(capture_session_id); if (dit != devices_.end()) { return dit->second; |