| Index: media/audio/mac/audio_manager_mac.cc
|
| ===================================================================
|
| --- media/audio/mac/audio_manager_mac.cc (revision 57255)
|
| +++ media/audio/mac/audio_manager_mac.cc (working copy)
|
| @@ -4,6 +4,7 @@
|
|
|
| #include <CoreAudio/AudioHardware.h>
|
|
|
| +#include "base/at_exit.h"
|
| #include "media/audio/fake_audio_input_stream.h"
|
| #include "media/audio/fake_audio_output_stream.h"
|
| #include "media/audio/mac/audio_manager_mac.h"
|
| @@ -74,7 +75,22 @@
|
| delete stream;
|
| }
|
|
|
| -// static
|
| -AudioManager* AudioManager::CreateAudioManager() {
|
| - return new AudioManagerMac();
|
| +namespace {
|
| +
|
| +AudioManagerMac* g_audio_manager = NULL;
|
| +
|
| +} // namespace.
|
| +
|
| +void DestroyAudioManagerMac(void* param) {
|
| + delete g_audio_manager;
|
| + g_audio_manager = NULL;
|
| }
|
| +
|
| +// By convention, the AudioManager is not thread safe.
|
| +AudioManager* AudioManager::GetAudioManager() {
|
| + if (!g_audio_manager) {
|
| + g_audio_manager = new AudioManagerMac();
|
| + base::AtExitManager::RegisterCallback(&DestroyAudioManagerMac, NULL);
|
| + }
|
| + return g_audio_manager;
|
| +}
|
|
|