Chromium Code Reviews| Index: content/browser/renderer_host/media/video_capture_manager.h |
| diff --git a/content/browser/renderer_host/media/video_capture_manager.h b/content/browser/renderer_host/media/video_capture_manager.h |
| index fb0a574a3e7ff4a49e77a8262b1c2f110491428d..64208afcb0241a373bcebb203bc2578dbc49c453 100644 |
| --- a/content/browser/renderer_host/media/video_capture_manager.h |
| +++ b/content/browser/renderer_host/media/video_capture_manager.h |
| @@ -17,6 +17,7 @@ |
| #include <string> |
| #include "base/memory/ref_counted.h" |
| +#include "base/memory/weak_ptr.h" |
| #include "base/process/process_handle.h" |
| #include "content/browser/renderer_host/media/media_stream_provider.h" |
| #include "content/browser/renderer_host/media/video_capture_controller_event_handler.h" |
| @@ -74,7 +75,7 @@ class CONTENT_EXPORT VideoCaptureManager : public MediaStreamProvider { |
| base::ProcessHandle client_render_process, |
| VideoCaptureControllerID client_id, |
| VideoCaptureControllerEventHandler* client_handler, |
| - base::Callback<void(VideoCaptureController*)> done_cb); |
| + base::Callback<void(base::WeakPtr<VideoCaptureController>)> done_cb); |
| // Called by VideoCaptureHost to remove |client_handler|. If this is the last |
| // client of the device, the |controller| and its VideoCaptureDevice may be |
| @@ -94,7 +95,7 @@ class CONTENT_EXPORT VideoCaptureManager : public MediaStreamProvider { |
| base::ProcessHandle client_render_process, |
| VideoCaptureControllerID client_id, |
| VideoCaptureControllerEventHandler* client_handler, |
| - base::Callback<void(VideoCaptureController*)> done_cb, |
| + base::Callback<void(base::WeakPtr<VideoCaptureController>)> done_cb, |
| const media::VideoCaptureDevice::Names& device_names); |
| // Helper routine implementing StartCaptureForClient(). |
| @@ -103,7 +104,7 @@ class CONTENT_EXPORT VideoCaptureManager : public MediaStreamProvider { |
| base::ProcessHandle client_render_process, |
| VideoCaptureControllerID client_id, |
| VideoCaptureControllerEventHandler* client_handler, |
| - base::Callback<void(VideoCaptureController*)> done_cb); |
| + base::Callback<void(base::WeakPtr<VideoCaptureController>)> done_cb); |
| // Check to see if |entry| has no clients left on its controller. If so, |
| // remove it from the list of devices, and delete it asynchronously. |entry| |
| @@ -135,22 +136,17 @@ class CONTENT_EXPORT VideoCaptureManager : public MediaStreamProvider { |
| MediaStreamType stream_type); |
| // Create and Start a new VideoCaptureDevice, storing the result in |
| - // |entry->video_capture_device|. |
| + // |entry->video_capture_device|. Ownership of |handler| passes to |
| + // the device. |
|
Ami GONE FROM CHROMIUM
2013/09/13 21:17:59
s/device/device pointed to by |entry|/ ?
ncarter (slow)
2013/09/14 00:07:24
I meant the device mentioned in the previous sente
|
| void DoStartDeviceOnDeviceThread( |
| DeviceEntry* entry, |
| const media::VideoCaptureCapability& capture_params, |
| - media::VideoCaptureDevice::EventHandler* controller_as_handler); |
|
Ami GONE FROM CHROMIUM
2013/09/13 21:17:59
Amen.
ncarter (slow)
2013/09/14 00:07:24
Done.
|
| + scoped_ptr<media::VideoCaptureDevice::EventHandler> handler); |
| // Stop and destroy the VideoCaptureDevice held in |
| // |entry->video_capture_device|. |
| void DoStopDeviceOnDeviceThread(DeviceEntry* entry); |
| - // Helper to clean up the DeviceEntry* instance, and the |
| - // VideoCaptureController, on the IO thread. Must happen after |
| - // DoStopDeviceOnDeviceThread() destroys the VideoCaptureDevice. It is assumed |
| - // that |dead_device| has already been removed from the |devices_| map. |
| - void FreeDeviceEntryOnIOThread(scoped_ptr<DeviceEntry> dead_device); |
| - |
| // The message loop of media stream device thread, where VCD's live. |
| scoped_refptr<base::MessageLoopProxy> device_loop_; |
| @@ -176,14 +172,14 @@ class CONTENT_EXPORT VideoCaptureManager : public MediaStreamProvider { |
| struct DeviceEntry { |
| DeviceEntry(MediaStreamType stream_type, |
| const std::string& id, |
| - scoped_refptr<VideoCaptureController> controller); |
| + scoped_ptr<VideoCaptureController> controller); |
| ~DeviceEntry(); |
| const MediaStreamType stream_type; |
| const std::string id; |
| // The controller. Only used from the IO thread. |
| - scoped_refptr<VideoCaptureController> video_capture_controller; |
| + scoped_ptr<VideoCaptureController> video_capture_controller; |
| // The capture device. Only used from the device thread. |
| scoped_ptr<media::VideoCaptureDevice> video_capture_device; |