| Index: media/audio/win/audio_manager_win.cc
|
| ===================================================================
|
| --- media/audio/win/audio_manager_win.cc (revision 57255)
|
| +++ media/audio/win/audio_manager_win.cc (working copy)
|
| @@ -7,6 +7,7 @@
|
| #include <windows.h>
|
| #include <mmsystem.h>
|
|
|
| +#include "base/at_exit.h"
|
| #include "base/basictypes.h"
|
| #include "media/audio/fake_audio_input_stream.h"
|
| #include "media/audio/fake_audio_output_stream.h"
|
| @@ -41,6 +42,8 @@
|
| // play.
|
| const int kNumInputBuffers = 3;
|
|
|
| +AudioManagerWin* g_audio_manager = NULL;
|
| +
|
| } // namespace.
|
|
|
| bool AudioManagerWin::HasAudioOutputDevices() {
|
| @@ -122,7 +125,15 @@
|
| AudioManagerWin::~AudioManagerWin() {
|
| }
|
|
|
| -// static
|
| -AudioManager* AudioManager::CreateAudioManager() {
|
| - return new AudioManagerWin();
|
| +void DestroyAudioManagerWin(void* param) {
|
| + delete g_audio_manager;
|
| + g_audio_manager = NULL;
|
| }
|
| +
|
| +AudioManager* AudioManager::GetAudioManager() {
|
| + if (!g_audio_manager) {
|
| + g_audio_manager = new AudioManagerWin();
|
| + base::AtExitManager::RegisterCallback(&DestroyAudioManagerWin, NULL);
|
| + }
|
| + return g_audio_manager;
|
| +}
|
|
|