| Index: content/browser/renderer_host/media/video_capture_manager.cc
|
| diff --git a/content/browser/renderer_host/media/video_capture_manager.cc b/content/browser/renderer_host/media/video_capture_manager.cc
|
| index be5738de38e27da91802d8e2a04467529ce4710b..3786efa8c064a82abdc88567c847e8ce40b7aa7c 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;
|
|
|