Chromium Code Reviews| Index: content/browser/renderer_host/media/video_capture_host.cc |
| diff --git a/content/browser/renderer_host/media/video_capture_host.cc b/content/browser/renderer_host/media/video_capture_host.cc |
| index 9d3c6344746433dce87b0abcb4e5da022cd4fd0f..f85925d2df56a23cf928314b38064bdb54e9f642 100644 |
| --- a/content/browser/renderer_host/media/video_capture_host.cc |
| +++ b/content/browser/renderer_host/media/video_capture_host.cc |
| @@ -15,12 +15,7 @@ |
| namespace content { |
| struct VideoCaptureHost::Entry { |
|
Ami GONE FROM CHROMIUM
2013/09/13 21:17:59
What's the point of this struct now?
(feels like
ncarter (slow)
2013/09/14 00:07:24
What was the point of it before?
The point of thi
|
| - Entry(VideoCaptureController* controller) |
| - : controller(controller) {} |
| - |
| - ~Entry() {} |
| - |
| - scoped_refptr<VideoCaptureController> controller; |
| + base::WeakPtr<VideoCaptureController> controller; |
| }; |
| VideoCaptureHost::VideoCaptureHost(MediaStreamManager* media_stream_manager) |
| @@ -222,7 +217,7 @@ void VideoCaptureHost::OnStartCapture(int device_id, |
| VideoCaptureControllerID controller_id(device_id); |
| DCHECK(entries_.find(controller_id) == entries_.end()); |
| - entries_[controller_id] = new Entry(NULL); |
| + entries_[controller_id] = new Entry(); |
| media_stream_manager_->video_capture_manager()->StartCaptureForClient( |
| params, PeerHandle(), controller_id, this, base::Bind( |
| &VideoCaptureHost::OnControllerAdded, this, device_id, params)); |
| @@ -230,28 +225,28 @@ void VideoCaptureHost::OnStartCapture(int device_id, |
| void VideoCaptureHost::OnControllerAdded( |
| int device_id, const media::VideoCaptureParams& params, |
| - VideoCaptureController* controller) { |
| + base::WeakPtr<VideoCaptureController> controller) { |
| BrowserThread::PostTask( |
| BrowserThread::IO, FROM_HERE, |
| base::Bind(&VideoCaptureHost::DoControllerAddedOnIOThread, |
| - this, device_id, params, make_scoped_refptr(controller))); |
| + this, device_id, params, controller)); |
| } |
| void VideoCaptureHost::DoControllerAddedOnIOThread( |
| int device_id, const media::VideoCaptureParams params, |
| - VideoCaptureController* controller) { |
| + base::WeakPtr<VideoCaptureController> controller) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| VideoCaptureControllerID controller_id(device_id); |
| EntryMap::iterator it = entries_.find(controller_id); |
| if (it == entries_.end()) { |
| if (controller) { |
| media_stream_manager_->video_capture_manager()->StopCaptureForClient( |
| - controller, controller_id, this); |
| + controller.get(), controller_id, this); |
| } |
| return; |
| } |
| - if (controller == NULL) { |
| + if (!controller) { |
| Send(new VideoCaptureMsg_StateChanged(device_id, |
| VIDEO_CAPTURE_STATE_ERROR)); |
| delete it->second; |
| @@ -286,8 +281,8 @@ void VideoCaptureHost::OnReceiveEmptyBuffer(int device_id, int buffer_id) { |
| VideoCaptureControllerID controller_id(device_id); |
| EntryMap::iterator it = entries_.find(controller_id); |
| if (it != entries_.end()) { |
| - scoped_refptr<VideoCaptureController> controller = it->second->controller; |
| - if (controller.get()) |
| + base::WeakPtr<VideoCaptureController> controller = it->second->controller; |
| + if (controller) |
| controller->ReturnBuffer(controller_id, this, buffer_id); |
| } |
| } |
| @@ -300,10 +295,9 @@ void VideoCaptureHost::DeleteVideoCaptureControllerOnIOThread( |
| if (it == entries_.end()) |
| return; |
| - VideoCaptureController* controller = it->second->controller.get(); |
| - if (controller) { |
| + if (it->second->controller) { |
| media_stream_manager_->video_capture_manager()->StopCaptureForClient( |
| - controller, controller_id, this); |
| + it->second->controller.get(), controller_id, this); |
| } |
| delete it->second; |
| entries_.erase(controller_id); |