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