Chromium Code Reviews| Index: content/browser/renderer_host/media/media_stream_manager.h |
| diff --git a/content/browser/renderer_host/media/media_stream_manager.h b/content/browser/renderer_host/media/media_stream_manager.h |
| index 17f863e90fda9b5140ee47983298bb4f17ac1026..19d991156ce487fd4d424997eaf1a4a3b74ec8ef 100644 |
| --- a/content/browser/renderer_host/media/media_stream_manager.h |
| +++ b/content/browser/renderer_host/media/media_stream_manager.h |
| @@ -29,19 +29,15 @@ |
| #include "base/basictypes.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/memory/ref_counted.h" |
| -#include "base/supports_user_data.h" |
| +#include "base/threading/thread.h" |
| +#include "base/win/scoped_com_initializer.h" |
| #include "content/browser/renderer_host/media/media_stream_provider.h" |
| #include "content/browser/renderer_host/media/media_stream_settings_requester.h" |
| #include "content/common/media/media_stream_options.h" |
| #include "content/common/content_export.h" |
| +#include "content/public/browser/browser_thread.h" |
| -namespace content { |
| -class ResourceContext; |
| -} |
| - |
| -namespace media { |
| -class AudioManager; |
| -} |
| +using base::win::ScopedCOMInitializer; |
| namespace media_stream { |
| @@ -50,22 +46,31 @@ class MediaStreamDeviceSettings; |
| class MediaStreamRequester; |
| class VideoCaptureManager; |
| +// Thread that enters STA on windows, and is base::thread on linux and mac. |
|
tommi (sloooow) - chröme
2012/07/04 13:46:48
update comment s/STA/MTA and base::thread -> base:
no longer working on chromium
2012/07/04 14:31:39
Done.
|
| +class DeviceThread : public base::Thread { |
| + public: |
| + explicit DeviceThread(const char* name) |
| + : base::Thread(name), |
| + com_init_(ScopedCOMInitializer::kMTA) {} |
| + |
| + private: |
| + ScopedCOMInitializer com_init_; |
| + DISALLOW_COPY_AND_ASSIGN(DeviceThread); |
| +}; |
| + |
| // MediaStreamManager is used to generate and close new media devices, not to |
| // start the media flow. |
| // The classes requesting new media streams are answered using |
| // MediaStreamManager::Listener. |
| class CONTENT_EXPORT MediaStreamManager |
| : public MediaStreamProviderListener, |
| - public SettingsRequester, |
| - public base::SupportsUserData::Data { |
| + public SettingsRequester { |
| public: |
| - // Returns the MediaStreamManager for the given ResourceContext. If it hasn't |
| - // been created yet, it will be constructed with the given AudioManager. |
| - static MediaStreamManager* GetForResourceContext( |
| - content::ResourceContext* resource_context, |
| - media::AudioManager* audio_manager); |
| + // This class takes the ownerships of the |audio_input_device_manager| |
| + // and |video_capture_manager|. |
| + MediaStreamManager(AudioInputDeviceManager* audio_input_device_manager, |
| + VideoCaptureManager* video_capture_manager); |
| - explicit MediaStreamManager(media::AudioManager* audio_manager); |
| virtual ~MediaStreamManager(); |
| // Used to access VideoCaptureManager. |
| @@ -149,9 +154,16 @@ class CONTENT_EXPORT MediaStreamManager |
| void StartEnumeration(DeviceRequest* new_request, |
| std::string* label); |
| + // Helper to ensure the device thread and pass the message loop to device |
| + // managers, it also register itself as the listener to the device managers. |
| + void EnsureDeviceThreadAndListener(); |
| + |
| + // Device thread shared by VideoCaptureManager and AudioInputDeviceManager. |
| + scoped_ptr<base::Thread> device_thread_; |
| + |
| scoped_ptr<MediaStreamDeviceSettings> device_settings_; |
| - scoped_refptr<VideoCaptureManager> video_capture_manager_; |
| scoped_refptr<AudioInputDeviceManager> audio_input_device_manager_; |
| + scoped_refptr<VideoCaptureManager> video_capture_manager_; |
| // Keeps track of device types currently being enumerated to not enumerate |
| // when not necessary. |
| @@ -160,7 +172,6 @@ class CONTENT_EXPORT MediaStreamManager |
| // All non-closed request. |
| typedef std::map<std::string, DeviceRequest> DeviceRequests; |
| DeviceRequests requests_; |
| - media::AudioManager* audio_manager_; |
| DISALLOW_COPY_AND_ASSIGN(MediaStreamManager); |
| }; |