Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Side by Side Diff: content/browser/renderer_host/media/media_stream_manager.cc

Issue 154143002: Remove MediaStreamDeviceThread in favor of audio worker TaskRunner. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/media/media_stream_manager.h" 5 #include "content/browser/renderer_host/media/media_stream_manager.h"
6 6
7 #include <list> 7 #include <list>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 BrowserThread::PostTask( 339 BrowserThread::PostTask(
340 BrowserThread::IO, FROM_HERE, 340 BrowserThread::IO, FROM_HERE,
341 base::Bind(&MediaStreamManager::InitializeDeviceManagersOnIOThread, 341 base::Bind(&MediaStreamManager::InitializeDeviceManagersOnIOThread,
342 base::Unretained(this))); 342 base::Unretained(this)));
343 } 343 }
344 } 344 }
345 345
346 MediaStreamManager::~MediaStreamManager() { 346 MediaStreamManager::~MediaStreamManager() {
347 DVLOG(1) << "~MediaStreamManager"; 347 DVLOG(1) << "~MediaStreamManager";
348 DCHECK(requests_.empty()); 348 DCHECK(requests_.empty());
349 DCHECK(!device_thread_.get()); 349 DCHECK(!device_task_runner_);
350 } 350 }
351 351
352 VideoCaptureManager* MediaStreamManager::video_capture_manager() { 352 VideoCaptureManager* MediaStreamManager::video_capture_manager() {
353 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 353 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
354 DCHECK(video_capture_manager_.get()); 354 DCHECK(video_capture_manager_.get());
355 return video_capture_manager_.get(); 355 return video_capture_manager_.get();
356 } 356 }
357 357
358 AudioInputDeviceManager* MediaStreamManager::audio_input_device_manager() { 358 AudioInputDeviceManager* MediaStreamManager::audio_input_device_manager() {
359 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 359 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
(...skipping 986 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 const MediaStreamDevices& devices) { 1346 const MediaStreamDevices& devices) {
1347 if (!request->callback.is_null()) 1347 if (!request->callback.is_null())
1348 request->callback.Run(devices, request->ui_proxy.Pass()); 1348 request->callback.Run(devices, request->ui_proxy.Pass());
1349 1349
1350 // Delete the request since it is done. 1350 // Delete the request since it is done.
1351 DeleteRequest(label); 1351 DeleteRequest(label);
1352 } 1352 }
1353 1353
1354 void MediaStreamManager::InitializeDeviceManagersOnIOThread() { 1354 void MediaStreamManager::InitializeDeviceManagersOnIOThread() {
1355 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 1355 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
1356 if (device_thread_) 1356 if (device_task_runner_)
1357 return; 1357 return;
1358 1358
1359 device_thread_.reset(new base::Thread("MediaStreamDeviceThread")); 1359 device_task_runner_ = audio_manager_->GetWorkerTaskRunner();
henrika (OOO until Aug 14) 2014/02/05 08:42:03 It is actually not clear to me when to use GetWork
DaleCurtis 2014/02/05 21:47:11 See the documentation for AudioManager::GetWorkerT
henrika (OOO until Aug 14) 2014/02/05 21:52:22 Thanks. The OS X part was not clear to me before.
1360 #if defined(OS_WIN)
1361 device_thread_->init_com_with_mta(true);
1362 #endif
1363 CHECK(device_thread_->Start());
1364 1360
1365 audio_input_device_manager_ = new AudioInputDeviceManager(audio_manager_); 1361 audio_input_device_manager_ = new AudioInputDeviceManager(audio_manager_);
1366 audio_input_device_manager_->Register( 1362 audio_input_device_manager_->Register(this, device_task_runner_);
1367 this, device_thread_->message_loop_proxy().get());
1368 1363
1369 video_capture_manager_ = new VideoCaptureManager(); 1364 video_capture_manager_ = new VideoCaptureManager();
1370 video_capture_manager_->Register(this, 1365 video_capture_manager_->Register(this, device_task_runner_);
1371 device_thread_->message_loop_proxy().get());
1372 1366
1373 // We want to be notified of IO message loop destruction to delete the thread 1367 // We want to be notified of IO message loop destruction to delete the thread
1374 // and the device managers. 1368 // and the device managers.
1375 io_loop_ = base::MessageLoop::current(); 1369 io_loop_ = base::MessageLoop::current();
1376 io_loop_->AddDestructionObserver(this); 1370 io_loop_->AddDestructionObserver(this);
1377 1371
1378 if (CommandLine::ForCurrentProcess()->HasSwitch( 1372 if (CommandLine::ForCurrentProcess()->HasSwitch(
1379 switches::kUseFakeDeviceForMediaStream)) { 1373 switches::kUseFakeDeviceForMediaStream)) {
1380 DVLOG(1) << "Using fake device"; 1374 DVLOG(1) << "Using fake device";
1381 UseFakeDevice(); 1375 UseFakeDevice();
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
1728 void MediaStreamManager::UseFakeUI(scoped_ptr<FakeMediaStreamUIProxy> fake_ui) { 1722 void MediaStreamManager::UseFakeUI(scoped_ptr<FakeMediaStreamUIProxy> fake_ui) {
1729 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 1723 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
1730 use_fake_ui_ = true; 1724 use_fake_ui_ = true;
1731 fake_ui_ = fake_ui.Pass(); 1725 fake_ui_ = fake_ui.Pass();
1732 } 1726 }
1733 1727
1734 void MediaStreamManager::WillDestroyCurrentMessageLoop() { 1728 void MediaStreamManager::WillDestroyCurrentMessageLoop() {
1735 DVLOG(3) << "MediaStreamManager::WillDestroyCurrentMessageLoop()"; 1729 DVLOG(3) << "MediaStreamManager::WillDestroyCurrentMessageLoop()";
1736 DCHECK_EQ(base::MessageLoop::current(), io_loop_); 1730 DCHECK_EQ(base::MessageLoop::current(), io_loop_);
1737 DCHECK(requests_.empty()); 1731 DCHECK(requests_.empty());
1738 if (device_thread_) { 1732 if (device_task_runner_) {
1739 StopMonitoring(); 1733 StopMonitoring();
1740 1734
1741 video_capture_manager_->Unregister(); 1735 video_capture_manager_->Unregister();
1742 audio_input_device_manager_->Unregister(); 1736 audio_input_device_manager_->Unregister();
1743 device_thread_.reset(); 1737 device_task_runner_ = NULL;
1744 } 1738 }
1745 1739
1746 audio_input_device_manager_ = NULL; 1740 audio_input_device_manager_ = NULL;
1747 video_capture_manager_ = NULL; 1741 video_capture_manager_ = NULL;
1748 } 1742 }
1749 1743
1750 void MediaStreamManager::NotifyDevicesChanged( 1744 void MediaStreamManager::NotifyDevicesChanged(
1751 MediaStreamType stream_type, 1745 MediaStreamType stream_type,
1752 const StreamDeviceInfoArray& devices) { 1746 const StreamDeviceInfoArray& devices) {
1753 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 1747 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1823 } 1817 }
1824 1818
1825 // Always do enumeration even though some enumeration is in progress, 1819 // Always do enumeration even though some enumeration is in progress,
1826 // because those enumeration commands could be sent before these devices 1820 // because those enumeration commands could be sent before these devices
1827 // change. 1821 // change.
1828 ++active_enumeration_ref_count_[stream_type]; 1822 ++active_enumeration_ref_count_[stream_type];
1829 GetDeviceManager(stream_type)->EnumerateDevices(stream_type); 1823 GetDeviceManager(stream_type)->EnumerateDevices(stream_type);
1830 } 1824 }
1831 1825
1832 } // namespace content 1826 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698