| Index: media/audio/win/audio_manager_win.cc
|
| diff --git a/media/audio/win/audio_manager_win.cc b/media/audio/win/audio_manager_win.cc
|
| index 119ac3a2f4a2f078ce44135e499de67498f46a57..6b96668c5d3a9d05dc9089a3f74935177c84309e 100644
|
| --- a/media/audio/win/audio_manager_win.cc
|
| +++ b/media/audio/win/audio_manager_win.cc
|
| @@ -131,13 +131,9 @@ static int NumberOfWaveOutBuffers() {
|
| return (base::win::GetVersion() == base::win::VERSION_VISTA) ? 4 : 3;
|
| }
|
|
|
| -AudioManagerWin::AudioManagerWin(
|
| - scoped_refptr<base::SingleThreadTaskRunner> task_runner,
|
| - scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner,
|
| - AudioLogFactory* audio_log_factory)
|
| - : AudioManagerBase(std::move(task_runner),
|
| - std::move(worker_task_runner),
|
| - audio_log_factory) {
|
| +AudioManagerWin::AudioManagerWin(std::unique_ptr<AudioThread> audio_thread,
|
| + AudioLogFactory* audio_log_factory)
|
| + : AudioManagerBase(std::move(audio_thread), audio_log_factory) {
|
| // |CoreAudioUtil::IsSupported()| uses static variables to avoid doing
|
| // multiple initializations. This is however not thread safe.
|
| // So, here we call it explicitly before we kick off the audio thread
|
| @@ -157,8 +153,14 @@ AudioManagerWin::AudioManagerWin(
|
| base::Unretained(this)));
|
| }
|
|
|
| -AudioManagerWin::~AudioManagerWin() {
|
| - Shutdown();
|
| +AudioManagerWin::~AudioManagerWin() = default;
|
| +
|
| +void AudioManagerWin::ShutdownOnAudioThread() {
|
| + AudioManagerBase::ShutdownOnAudioThread();
|
| +
|
| + // Destroy AudioDeviceListenerWin instance on the audio thread because it
|
| + // expects to be constructed and destroyed on the same thread.
|
| + output_device_listener_.reset();
|
| }
|
|
|
| bool AudioManagerWin::HasAudioOutputDevices() {
|
| @@ -464,13 +466,11 @@ AudioParameters AudioManagerWin::GetPreferredOutputStreamParameters(
|
| }
|
|
|
| // static
|
| -ScopedAudioManagerPtr CreateAudioManager(
|
| - scoped_refptr<base::SingleThreadTaskRunner> task_runner,
|
| - scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner,
|
| +std::unique_ptr<AudioManager> CreateAudioManager(
|
| + std::unique_ptr<AudioThread> audio_thread,
|
| AudioLogFactory* audio_log_factory) {
|
| - return ScopedAudioManagerPtr(
|
| - new AudioManagerWin(std::move(task_runner), std::move(worker_task_runner),
|
| - audio_log_factory));
|
| + return base::MakeUnique<AudioManagerWin>(std::move(audio_thread),
|
| + audio_log_factory);
|
| }
|
|
|
| } // namespace media
|
|
|