Index: media/audio/mac/audio_manager_mac.cc |
diff --git a/media/audio/mac/audio_manager_mac.cc b/media/audio/mac/audio_manager_mac.cc |
index 3671317ba67ab2b8a1fa3a10611b062170fd145c..c8e4fb573426d9b9905def4e16d841aebd827dea 100644 |
--- a/media/audio/mac/audio_manager_mac.cc |
+++ b/media/audio/mac/audio_manager_mac.cc |
@@ -242,10 +242,14 @@ AudioManagerMac::AudioManagerMac() |
} |
AudioManagerMac::~AudioManagerMac() { |
- // It's safe to post a task here since Shutdown() will wait for all tasks to |
- // complete before returning. |
- GetMessageLoop()->PostTask(FROM_HERE, base::Bind( |
- &AudioManagerMac::DestroyDeviceListener, base::Unretained(this))); |
+ if (GetMessageLoop()->BelongsToCurrentThread()) { |
+ DestroyDeviceListener(); |
+ } else { |
+ // It's safe to post a task here since Shutdown() will wait for all tasks to |
+ // complete before returning. |
+ GetMessageLoop()->PostTask(FROM_HERE, base::Bind( |
+ &AudioManagerMac::DestroyDeviceListener, base::Unretained(this))); |
+ } |
Shutdown(); |
} |
@@ -545,10 +549,8 @@ void AudioManagerMac::CreateDeviceListener() { |
if (!GetDefaultOutputDevice(¤t_output_device_)) |
current_output_device_ = kAudioDeviceUnknown; |
- output_device_listener_.reset(new AudioDeviceListenerMac(BindToLoop( |
- GetMessageLoop(), base::Bind( |
- &AudioManagerMac::HandleDeviceChanges, |
- base::Unretained(this))))); |
+ output_device_listener_.reset(new AudioDeviceListenerMac(base::Bind( |
+ &AudioManagerMac::HandleDeviceChanges, base::Unretained(this)))); |
} |
void AudioManagerMac::DestroyDeviceListener() { |