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

Unified Diff: content/browser/renderer_host/media/video_capture_manager.cc

Issue 10662049: Move the device enumerate/open/close work to device thread from IO thread (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: small changes to fix the trybots' failure Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698