| Index: media/audio/audio_manager.h
|
| diff --git a/media/audio/audio_manager.h b/media/audio/audio_manager.h
|
| index cd91b399d6d4595ce60faf0131baa65f9cfd8bca..3f7f36200baf530c056a96f478a304c5ebee77f1 100644
|
| --- a/media/audio/audio_manager.h
|
| +++ b/media/audio/audio_manager.h
|
| @@ -14,6 +14,7 @@
|
| #include "base/memory/ref_counted.h"
|
| #include "base/sequenced_task_runner_helpers.h"
|
| #include "base/strings/string16.h"
|
| +#include "base/threading/thread_checker.h"
|
| #include "build/build_config.h"
|
| #include "media/audio/audio_device_description.h"
|
| #include "media/audio/audio_logging.h"
|
| @@ -30,13 +31,6 @@ class AudioInputStream;
|
| class AudioManager;
|
| class AudioOutputStream;
|
|
|
| -class MEDIA_EXPORT AudioManagerDeleter {
|
| - public:
|
| - void operator()(const AudioManager* instance) const;
|
| -};
|
| -using ScopedAudioManagerPtr =
|
| - std::unique_ptr<AudioManager, AudioManagerDeleter>;
|
| -
|
| // Manages all audio resources. Provides some convenience functions that avoid
|
| // the need to provide iterators over the existing streams.
|
| //
|
| @@ -44,6 +38,8 @@ using ScopedAudioManagerPtr =
|
| // thread hang is detected, it is reported to UMA.
|
| class MEDIA_EXPORT AudioManager {
|
| public:
|
| + virtual ~AudioManager();
|
| +
|
| // Construct the audio manager; only one instance is allowed.
|
| // The returned instance must be deleted on AudioManager::GetTaskRunnner().
|
| //
|
| @@ -63,7 +59,7 @@ class MEDIA_EXPORT AudioManager {
|
| //
|
| // |file_task_runner| is used for audio debug recordings and is the task
|
| // runner to do file output operations on.
|
| - static ScopedAudioManagerPtr Create(
|
| + static std::unique_ptr<AudioManager> Create(
|
| scoped_refptr<base::SingleThreadTaskRunner> task_runner,
|
| scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner,
|
| scoped_refptr<base::SingleThreadTaskRunner> file_task_runner,
|
| @@ -71,7 +67,7 @@ class MEDIA_EXPORT AudioManager {
|
|
|
| // A convenience wrapper of AudioManager::Create for testing.
|
| // The given |task_runner| is shared for both audio io and heavyweight tasks.
|
| - static ScopedAudioManagerPtr CreateForTesting(
|
| + static std::unique_ptr<AudioManager> CreateForTesting(
|
| scoped_refptr<base::SingleThreadTaskRunner> task_runner);
|
|
|
| // Starts monitoring AudioManager task runner for hangs.
|
| @@ -95,6 +91,10 @@ class MEDIA_EXPORT AudioManager {
|
| // like src/chrome.
|
| static AudioManager* Get();
|
|
|
| + // Releases all audio resources.
|
| + // Must be called on the audio thread.
|
| + virtual void Shutdown() = 0;
|
| +
|
| // Returns true if the OS reports existence of audio devices. This does not
|
| // guarantee that the existing devices support all formats and sample rates.
|
| virtual bool HasAudioOutputDevices() = 0;
|
| @@ -265,7 +265,6 @@ class MEDIA_EXPORT AudioManager {
|
|
|
| AudioManager(scoped_refptr<base::SingleThreadTaskRunner> task_runner,
|
| scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner);
|
| - virtual ~AudioManager();
|
|
|
| // Initializes output debug recording. Can be called on any thread; will post
|
| // to the audio thread if not called on it.
|
| @@ -273,11 +272,9 @@ class MEDIA_EXPORT AudioManager {
|
| scoped_refptr<base::SingleThreadTaskRunner> file_task_runner) = 0;
|
|
|
| private:
|
| - friend class base::DeleteHelper<AudioManager>;
|
| - friend class AudioManagerDeleter;
|
| -
|
| scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
|
| scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner_;
|
| + base::ThreadChecker thread_checker_;
|
| DISALLOW_COPY_AND_ASSIGN(AudioManager);
|
| };
|
|
|
|
|