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); |