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..97596eff6d19d93fa187d689e25cb905b601738b 100644 | 
| --- a/content/browser/renderer_host/media/media_stream_manager.h | 
| +++ b/content/browser/renderer_host/media/media_stream_manager.h | 
| @@ -30,19 +30,21 @@ | 
| #include "base/memory/scoped_ptr.h" | 
| #include "base/memory/ref_counted.h" | 
| #include "base/supports_user_data.h" | 
| +#include "base/threading/thread.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" | 
| + | 
| +#if defined(OS_WIN) | 
| +#include <objbase.h> // For CoInitialize/CoUninitialize. | 
| +#endif | 
| namespace content { | 
| class ResourceContext; | 
| } | 
| -namespace media { | 
| -class AudioManager; | 
| -} | 
| - | 
| namespace media_stream { | 
| class AudioInputDeviceManager; | 
| @@ -50,6 +52,26 @@ class MediaStreamDeviceSettings; | 
| class MediaStreamRequester; | 
| class VideoCaptureManager; | 
| +// Thread that enters STA on windows, and is base::thread on linux and mac. | 
| +class DeviceThread : public base::Thread { | 
| + public: | 
| + explicit DeviceThread(const char *name) : base::Thread(name) {} | 
| 
 
tommi (sloooow) - chröme
2012/07/02 13:36:36
const char* name
 
no longer working on chromium
2012/07/04 12:35:25
Done.
 
 | 
| + | 
| + protected: | 
| +#if defined(OS_WIN) | 
| + // Called just prior to starting the message loop. | 
| + virtual void Init() { | 
| + CoInitialize(NULL); | 
| 
 
tommi (sloooow) - chröme
2012/07/02 13:36:36
use the ScopedCOMInitializer class and remove the
 
no longer working on chromium
2012/07/04 12:35:25
Done.
 
 | 
| + } | 
| + | 
| + // Called just after the message loop ends. | 
| + virtual void CleanUp() { | 
| + CoUninitialize(); | 
| + } | 
| +#endif | 
| + 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 | 
| @@ -62,10 +84,10 @@ class CONTENT_EXPORT MediaStreamManager | 
| // 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); | 
| + content::ResourceContext* resource_context); | 
| + | 
| + MediaStreamManager(); | 
| - explicit MediaStreamManager(media::AudioManager* audio_manager); | 
| virtual ~MediaStreamManager(); | 
| // Used to access VideoCaptureManager. | 
| @@ -149,6 +171,12 @@ class CONTENT_EXPORT MediaStreamManager | 
| void StartEnumeration(DeviceRequest* new_request, | 
| std::string* label); | 
| + // Helper to ensure the device thread before passing to device managers. | 
| + void EnsureDeviceThread(); | 
| + | 
| + // 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_; | 
| @@ -160,7 +188,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); | 
| }; |