Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Unified Diff: content/browser/renderer_host/media/media_stream_manager.cc

Issue 7649016: Removing singleton property of MediaStreamManager and creating thread first when needed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698