Chromium Code Reviews| Index: content/renderer/media/video_capture_impl.cc |
| diff --git a/content/renderer/media/video_capture_impl.cc b/content/renderer/media/video_capture_impl.cc |
| index 9c5c53449e7b22f38445f8cc5ee2eb15a353ac34..d1a2df13827aba005cbe80ad6f430b2579f1caa5 100644 |
| --- a/content/renderer/media/video_capture_impl.cc |
| +++ b/content/renderer/media/video_capture_impl.cc |
| @@ -52,27 +52,29 @@ VideoCaptureImpl::VideoCaptureImpl( |
| state_(VIDEO_CAPTURE_STATE_STOPPED), |
| weak_factory_(this) { |
| DCHECK(filter); |
| - render_io_thread_checker_.DetachFromThread(); |
| } |
| VideoCaptureImpl::~VideoCaptureImpl() { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| } |
| void VideoCaptureImpl::Init() { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + // For creating callbacks in unittest, this class may be constructed from a |
| + // different thread than the IO thread, e.g. wherever unittest runs on. |
| + // Therefore, this function should define the thread ownership. |
| + io_message_loop_ = base::MessageLoopProxy::current(); |
|
mcasas
2015/03/16 20:34:06
My optimisation-seeker-me chills when seeing a mem
emircan
2015/03/19 00:40:44
I see there is no use for it in release builds. Th
|
| message_filter_->AddDelegate(this); |
| } |
| void VideoCaptureImpl::DeInit() { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| if (state_ == VIDEO_CAPTURE_STATE_STARTED) |
| Send(new VideoCaptureHostMsg_Stop(device_id_)); |
| message_filter_->RemoveDelegate(this); |
| } |
| void VideoCaptureImpl::SuspendCapture(bool suspend) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| Send(suspend ? |
| static_cast<IPC::Message*>(new VideoCaptureHostMsg_Pause(device_id_)) : |
| static_cast<IPC::Message*>( |
| @@ -84,7 +86,7 @@ void VideoCaptureImpl::StartCapture( |
| const media::VideoCaptureParams& params, |
| const VideoCaptureStateUpdateCB& state_update_cb, |
| const VideoCaptureDeliverFrameCB& deliver_frame_cb) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| ClientInfo client_info; |
| client_info.params = params; |
| client_info.state_update_cb = state_update_cb; |
| @@ -132,7 +134,7 @@ void VideoCaptureImpl::StartCapture( |
| } |
| void VideoCaptureImpl::StopCapture(int client_id) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| // A client ID can be in only one client list. |
| // If this ID is in any client list, we can just remove it from |
| @@ -153,7 +155,7 @@ void VideoCaptureImpl::StopCapture(int client_id) { |
| void VideoCaptureImpl::GetDeviceSupportedFormats( |
| const VideoCaptureDeviceFormatsCB& callback) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| device_formats_cb_queue_.push_back(callback); |
| if (device_formats_cb_queue_.size() == 1) |
| Send(new VideoCaptureHostMsg_GetDeviceSupportedFormats(device_id_, |
| @@ -162,7 +164,7 @@ void VideoCaptureImpl::GetDeviceSupportedFormats( |
| void VideoCaptureImpl::GetDeviceFormatsInUse( |
| const VideoCaptureDeviceFormatsCB& callback) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| device_formats_in_use_cb_queue_.push_back(callback); |
| if (device_formats_in_use_cb_queue_.size() == 1) |
| Send( |
| @@ -172,7 +174,7 @@ void VideoCaptureImpl::GetDeviceFormatsInUse( |
| void VideoCaptureImpl::OnBufferCreated( |
| base::SharedMemoryHandle handle, |
| int length, int buffer_id) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| // In case client calls StopCapture before the arrival of created buffer, |
| // just close this buffer and return. |
| @@ -196,7 +198,7 @@ void VideoCaptureImpl::OnBufferCreated( |
| } |
| void VideoCaptureImpl::OnBufferDestroyed(int buffer_id) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| const ClientBufferMap::iterator iter = client_buffers_.find(buffer_id); |
| if (iter == client_buffers_.end()) |
| @@ -212,7 +214,7 @@ void VideoCaptureImpl::OnBufferReceived(int buffer_id, |
| const gfx::Rect& visible_rect, |
| base::TimeTicks timestamp, |
| const base::DictionaryValue& metadata) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| if (state_ != VIDEO_CAPTURE_STATE_STARTED || suspended_) { |
| Send(new VideoCaptureHostMsg_BufferReady(device_id_, buffer_id, 0)); |
| @@ -261,7 +263,7 @@ void VideoCaptureImpl::OnMailboxBufferReceived( |
| const gfx::Size& packed_frame_size, |
| base::TimeTicks timestamp, |
| const base::DictionaryValue& metadata) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| if (state_ != VIDEO_CAPTURE_STATE_STARTED || suspended_) { |
| Send(new VideoCaptureHostMsg_BufferReady(device_id_, buffer_id, 0)); |
| @@ -288,13 +290,13 @@ void VideoCaptureImpl::OnClientBufferFinished( |
| int buffer_id, |
| const scoped_refptr<ClientBuffer>& /* ignored_buffer */, |
| uint32 release_sync_point) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| Send(new VideoCaptureHostMsg_BufferReady( |
| device_id_, buffer_id, release_sync_point)); |
| } |
| void VideoCaptureImpl::OnStateChanged(VideoCaptureState state) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| switch (state) { |
| case VIDEO_CAPTURE_STATE_STARTED: |
| @@ -336,7 +338,7 @@ void VideoCaptureImpl::OnStateChanged(VideoCaptureState state) { |
| void VideoCaptureImpl::OnDeviceSupportedFormatsEnumerated( |
| const media::VideoCaptureFormats& supported_formats) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| for (size_t i = 0; i < device_formats_cb_queue_.size(); ++i) |
| device_formats_cb_queue_[i].Run(supported_formats); |
| device_formats_cb_queue_.clear(); |
| @@ -344,14 +346,14 @@ void VideoCaptureImpl::OnDeviceSupportedFormatsEnumerated( |
| void VideoCaptureImpl::OnDeviceFormatsInUseReceived( |
| const media::VideoCaptureFormats& formats_in_use) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| for (size_t i = 0; i < device_formats_in_use_cb_queue_.size(); ++i) |
| device_formats_in_use_cb_queue_[i].Run(formats_in_use); |
| device_formats_in_use_cb_queue_.clear(); |
| } |
| void VideoCaptureImpl::OnDelegateAdded(int32 device_id) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| DVLOG(1) << "OnDelegateAdded: device_id " << device_id; |
| device_id_ = device_id; |
| @@ -366,7 +368,7 @@ void VideoCaptureImpl::OnDelegateAdded(int32 device_id) { |
| } |
| void VideoCaptureImpl::StopDevice() { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| if (state_ == VIDEO_CAPTURE_STATE_STARTED) { |
| state_ = VIDEO_CAPTURE_STATE_STOPPING; |
| @@ -376,7 +378,7 @@ void VideoCaptureImpl::StopDevice() { |
| } |
| void VideoCaptureImpl::RestartCapture() { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| DCHECK_EQ(state_, VIDEO_CAPTURE_STATE_STOPPED); |
| int width = 0; |
| @@ -397,7 +399,7 @@ void VideoCaptureImpl::RestartCapture() { |
| } |
| void VideoCaptureImpl::StartCaptureInternal() { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| DCHECK(device_id_); |
| Send(new VideoCaptureHostMsg_Start(device_id_, session_id_, params_)); |
| @@ -405,12 +407,12 @@ void VideoCaptureImpl::StartCaptureInternal() { |
| } |
| void VideoCaptureImpl::Send(IPC::Message* message) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| message_filter_->Send(message); |
| } |
| bool VideoCaptureImpl::RemoveClient(int client_id, ClientInfoMap* clients) { |
| - DCHECK(render_io_thread_checker_.CalledOnValidThread()); |
| + DCHECK(io_message_loop_->BelongsToCurrentThread()); |
| bool found = false; |
| const ClientInfoMap::iterator it = clients->find(client_id); |