Index: media/audio/audio_manager_base.cc |
diff --git a/media/audio/audio_manager_base.cc b/media/audio/audio_manager_base.cc |
index 1963a615529621a6b4a3d75c8c42b9b3678b84ec..0c42cb0430c4710345144389ce131c4a6790f4ac 100644 |
--- a/media/audio/audio_manager_base.cc |
+++ b/media/audio/audio_manager_base.cc |
@@ -44,7 +44,15 @@ AudioManagerBase::AudioManagerBase() |
max_num_output_streams_(kDefaultMaxOutputStreams), |
max_num_input_streams_(kDefaultMaxInputStreams), |
num_output_streams_(0), |
- num_input_streams_(0) { |
+ num_input_streams_(0), |
+ audio_thread_(new base::Thread("AudioThread")) { |
+#if defined(OS_WIN) |
+ audio_thread_->init_com_with_mta(true); |
+#endif |
+ CHECK(audio_thread_->Start()); |
+ message_loop_ = audio_thread_->message_loop_proxy(); |
+ message_loop_->PostTask(FROM_HERE, base::Bind( |
+ &AudioManagerBase::InitializeOnAudioThread, base::Unretained(this))); |
} |
AudioManagerBase::~AudioManagerBase() { |
@@ -60,15 +68,8 @@ AudioManagerBase::~AudioManagerBase() { |
DCHECK_EQ(0, num_input_streams_); |
} |
-void AudioManagerBase::Init() { |
- base::AutoLock lock(audio_thread_lock_); |
- DCHECK(!audio_thread_.get()); |
- audio_thread_.reset(new base::Thread("AudioThread")); |
-#if defined(OS_WIN) |
- audio_thread_->init_com_with_mta(true); |
-#endif |
- CHECK(audio_thread_->Start()); |
- message_loop_ = audio_thread_->message_loop_proxy(); |
+void AudioManagerBase::InitializeOnAudioThread() { |
+ DCHECK(message_loop_->BelongsToCurrentThread()); |
} |
string16 AudioManagerBase::GetAudioInputDeviceModel() { |