Chromium Code Reviews| Index: content/browser/renderer_host/media/media_stream_manager.cc |
| diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc |
| index 786cb26290b147f4d84500e82518e6930ff78a4a..8b00aadd8938cf80ad8edf7245b3927633f2d213 100644 |
| --- a/content/browser/renderer_host/media/media_stream_manager.cc |
| +++ b/content/browser/renderer_host/media/media_stream_manager.cc |
| @@ -17,13 +17,9 @@ |
| namespace media_stream { |
| -// TODO(mflodman) Find out who should own MediaStreamManager. |
| -base::LazyInstance<MediaStreamManager> g_media_stream_manager( |
| - base::LINKER_INITIALIZED); |
| - |
| // Creates a random label used to identify requests. |
| static std::string RandomLabel() { |
| - // Alphbet according to WhatWG standard, i.e. containing 36 characters from |
| + // Alphabet according to WhatWG standard, i.e. containing 36 characters from |
| // range: U+0021, U+0023 to U+0027, U+002A to U+002B, U+002D to U+002E, |
| // U+0030 to U+0039, U+0041 to U+005A, U+005E to U+007E. |
| static const char alphabet[] = "!#$%&\'*+-.0123456789" |
| @@ -49,17 +45,22 @@ static bool Requested(const StreamOptions& options, |
| return false; |
| } |
| -MediaStreamManager* MediaStreamManager::Get() { |
| - return g_media_stream_manager.Pointer(); |
| -} |
| - |
| -MediaStreamManager::~MediaStreamManager() { |
| - delete device_settings_; |
| - delete video_capture_manager_; |
| +MediaStreamManager::MediaStreamManager() |
| + : video_capture_manager_(NULL), |
| + enumeration_in_progress_(kNumMediaStreamTypes, false), |
| + requests_(), |
| + device_settings_(NULL) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| + device_settings_ = new MediaStreamDeviceSettings(this); |
| + // TODO(mflodman) Add when audio input manager is available. |
| } |
| VideoCaptureManager* MediaStreamManager::video_capture_manager() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| + if (!video_capture_manager_) { |
| + video_capture_manager_ = new VideoCaptureManager(); |
| + video_capture_manager_->Register(this); |
| + } |
| return video_capture_manager_; |
| } |
| @@ -120,7 +121,7 @@ void MediaStreamManager::CancelRequests(MediaStreamRequester* requester) { |
| request->video_devices.begin(); it != request->video_devices.end(); |
| ++it) { |
| if (it->in_use == true) { |
| - video_capture_manager_->Close(it->session_id); |
| + video_capture_manager()->Close(it->session_id); |
| } |
| } |
| } |
| @@ -145,7 +146,7 @@ void MediaStreamManager::StopGeneratedStream(const std::string& label) { |
| for (StreamDeviceInfoArray::iterator video_it = |
| it->second.video_devices.begin(); |
| video_it != it->second.video_devices.end(); ++video_it) { |
| - video_capture_manager_->Close(video_it->session_id); |
| + video_capture_manager()->Close(video_it->session_id); |
| } |
| requests_.erase(it); |
| return; |
| @@ -354,11 +355,17 @@ void MediaStreamManager::SettingsError(const std::string& label) { |
| void MediaStreamManager::UseFakeDevice() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| - video_capture_manager_->UseFakeDevice(); |
| + video_capture_manager()->UseFakeDevice(); |
| device_settings_->UseFakeUI(); |
| // TODO(mflodman) Add audio manager when available. |
| } |
| +MediaStreamManager::~MediaStreamManager() { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| + delete device_settings_; |
|
willchan no longer on Chromium
2011/08/17 19:55:19
What do you think about using scoped_ptr instead?
mflodman_chromium_OOO
2011/08/19 11:07:09
Done.
I've received that comment from scherkus as
|
| + delete video_capture_manager_; |
| +} |
| + |
| bool MediaStreamManager::RequestDone(const DeviceRequest& request) const { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| // Check if all devices are opened. |
| @@ -385,9 +392,9 @@ bool MediaStreamManager::RequestDone(const DeviceRequest& request) const { |
| // Called to get media capture device manager of specified type. |
| MediaStreamProvider* MediaStreamManager::GetDeviceManager( |
| - MediaStreamType stream_type) const { |
| + MediaStreamType stream_type) { |
| if (stream_type == kVideoCapture) { |
| - return video_capture_manager_; |
| + return video_capture_manager(); |
| } else if (stream_type == kAudioCapture) { |
| // TODO(mflodman) Add support when audio input manager is available. |
| NOTREACHED(); |
| @@ -397,16 +404,6 @@ MediaStreamProvider* MediaStreamManager::GetDeviceManager( |
| return NULL; |
| } |
| -MediaStreamManager::MediaStreamManager() |
| - : video_capture_manager_(new VideoCaptureManager()), |
| - enumeration_in_progress_(kNumMediaStreamTypes, false), |
| - requests_(), |
| - device_settings_(NULL) { |
| - device_settings_ = new MediaStreamDeviceSettings(this); |
| - video_capture_manager_->Register(this); |
| - // TODO(mflodman) Add when audio input manager is available. |
| -} |
| - |
| MediaStreamManager::DeviceRequest::DeviceRequest() |
| : requester(NULL), |
| state(kNumMediaStreamTypes, kNotRequested) { |