| Index: content/renderer/media/video_capture_impl.cc
|
| ===================================================================
|
| --- content/renderer/media/video_capture_impl.cc (revision 109978)
|
| +++ content/renderer/media/video_capture_impl.cc (working copy)
|
| @@ -79,20 +79,21 @@
|
| }
|
|
|
| void VideoCaptureImpl::DeInit(base::Closure task) {
|
| + ml_proxy_->PostTask(FROM_HERE,
|
| + base::Bind(&VideoCaptureImpl::DoDeInit,
|
| + base::Unretained(this), task));
|
| +}
|
| +
|
| +void VideoCaptureImpl::DoDeInit(base::Closure task) {
|
| if (state_ == kStarted)
|
| Send(new VideoCaptureHostMsg_Stop(device_id_));
|
|
|
| base::MessageLoopProxy* io_message_loop_proxy =
|
| ChildProcess::current()->io_message_loop_proxy();
|
|
|
| - if (!io_message_loop_proxy->BelongsToCurrentThread()) {
|
| - io_message_loop_proxy->PostTask(FROM_HERE,
|
| - base::Bind(&VideoCaptureImpl::RemoveDelegateOnIOThread,
|
| - base::Unretained(this), task));
|
| - return;
|
| - }
|
| -
|
| - RemoveDelegateOnIOThread(task);
|
| + io_message_loop_proxy->PostTask(FROM_HERE,
|
| + base::Bind(&VideoCaptureImpl::RemoveDelegateOnIOThread,
|
| + base::Unretained(this), task));
|
| }
|
|
|
| void VideoCaptureImpl::StartCapture(
|
| @@ -237,14 +238,14 @@
|
| if (clients_.find(handler) == clients_.end())
|
| return;
|
|
|
| - handler->OnStopped(this);
|
| - handler->OnRemoved(this);
|
| clients_.erase(handler);
|
|
|
| if (clients_.empty()) {
|
| DVLOG(1) << "StopCapture: No more client, stopping ...";
|
| StopDevice();
|
| }
|
| + handler->OnStopped(this);
|
| + handler->OnRemoved(this);
|
| }
|
|
|
| void VideoCaptureImpl::DoFeedBuffer(scoped_refptr<VideoFrameBuffer> buffer) {
|
| @@ -420,8 +421,8 @@
|
| }
|
|
|
| void VideoCaptureImpl::RemoveDelegateOnIOThread(base::Closure task) {
|
| - base::ScopedClosureRunner task_runner(task);
|
| message_filter_->RemoveDelegate(this);
|
| + ml_proxy_->PostTask(FROM_HERE, task);
|
| }
|
|
|
| void VideoCaptureImpl::Send(IPC::Message* message) {
|
|
|