Chromium Code Reviews| Index: media/audio/audio_manager_base.cc |
| diff --git a/media/audio/audio_manager_base.cc b/media/audio/audio_manager_base.cc |
| index 458e53b214f371a955c89ca1c42be0b5ae114dda..892fda1411de8551f6c7fac1ad6f8ba4ad5bf294 100644 |
| --- a/media/audio/audio_manager_base.cc |
| +++ b/media/audio/audio_manager_base.cc |
| @@ -5,6 +5,7 @@ |
| #include "media/audio/audio_manager_base.h" |
| #include "base/bind.h" |
| +#include "base/bind_helpers.h" |
| #include "base/command_line.h" |
| #include "base/message_loop_proxy.h" |
| #include "base/threading/thread.h" |
| @@ -115,8 +116,12 @@ AudioOutputStream* AudioManagerBase::MakeAudioOutputStream( |
| NOTIMPLEMENTED(); |
| return NULL; |
| #else |
| - stream = VirtualAudioOutputStream::MakeStream(this, params, message_loop_, |
| - virtual_audio_input_stream_); |
| + VirtualAudioOutputStream* const vaos = |
| + new VirtualAudioOutputStream( |
| + params, message_loop_, virtual_audio_input_stream_); |
| + vaos->RunOnceClosed(base::Bind( |
|
DaleCurtis
2013/01/15 22:02:18
Why not make this callback required for constructi
miu
2013/01/16 03:22:18
Done.
|
| + &AudioManagerBase::ReleaseOutputStream, base::Unretained(this), vaos)); |
| + stream = vaos; |
| #endif |
| } else if (audio_output_disabled) { |
| stream = FakeAudioOutputStream::MakeFakeStream(this, params); |
| @@ -162,7 +167,10 @@ AudioInputStream* AudioManagerBase::MakeAudioInputStream( |
| // request. Subsequent requests will not get audio. |
| if (!virtual_audio_input_stream_) { |
| virtual_audio_input_stream_ = |
| - VirtualAudioInputStream::MakeStream(this, params, message_loop_); |
| + new VirtualAudioInputStream(params, message_loop_); |
| + virtual_audio_input_stream_->RunOnceClosed(base::Bind( |
| + &AudioManagerBase::ReleaseInputStream, base::Unretained(this), |
| + virtual_audio_input_stream_)); |
| stream = virtual_audio_input_stream_; |
| DVLOG(1) << "Virtual audio input stream created."; |