1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "media/audio/audio_manager.h"
8 #include "base/bind_helpers.h"
9 #include "base/lazy_instance.h"
10 #include "base/logging.h"
11 #include "base/message_loop/message_loop.h"
12 #include "media/audio/fake_audio_log_factory.h"
16 AudioManager
* g_last_created
= NULL
;
17 static base::LazyInstance
<FakeAudioLogFactory
>::Leaky g_fake_log_factory
=
18 LAZY_INSTANCE_INITIALIZER
;
21 // Forward declaration of the platform specific AudioManager factory function.
22 AudioManager
* CreateAudioManager(AudioLogFactory
* audio_log_factory
);
24 AudioManager::AudioManager() {}
26 AudioManager::~AudioManager() {
27 CHECK(!g_last_created
|| g_last_created
== this);
28 g_last_created
= NULL
;
32 AudioManager
* AudioManager::Create(AudioLogFactory
* audio_log_factory
) {
33 CHECK(!g_last_created
);
34 g_last_created
= CreateAudioManager(audio_log_factory
);
35 return g_last_created
;
39 AudioManager
* AudioManager::CreateForTesting() {
40 return Create(g_fake_log_factory
.Pointer());
44 AudioManager
* AudioManager::Get() {
45 return g_last_created
;