| Index: media/audio/virtual_audio_output_stream.cc
|
| diff --git a/media/audio/virtual_audio_output_stream.cc b/media/audio/virtual_audio_output_stream.cc
|
| index 43c449bc74b3d140c1431411d20adad681e1b949..43b83cf2be888ba6414667e599a11badea38f06d 100644
|
| --- a/media/audio/virtual_audio_output_stream.cc
|
| +++ b/media/audio/virtual_audio_output_stream.cc
|
| @@ -4,20 +4,22 @@
|
|
|
| #include "media/audio/virtual_audio_output_stream.h"
|
|
|
| -#include "base/message_loop/message_loop_proxy.h"
|
| +#include "base/logging.h"
|
| #include "media/audio/virtual_audio_input_stream.h"
|
|
|
| namespace media {
|
|
|
| VirtualAudioOutputStream::VirtualAudioOutputStream(
|
| - const AudioParameters& params, base::MessageLoopProxy* message_loop,
|
| - VirtualAudioInputStream* target, const AfterCloseCallback& after_close_cb)
|
| - : params_(params), message_loop_(message_loop),
|
| - target_input_stream_(target), after_close_cb_(after_close_cb),
|
| - callback_(NULL), volume_(1.0f) {
|
| + const AudioParameters& params, VirtualAudioInputStream* target,
|
| + const AfterCloseCallback& after_close_cb)
|
| + : params_(params), target_input_stream_(target),
|
| + after_close_cb_(after_close_cb), callback_(NULL), volume_(1.0f) {
|
| DCHECK(params_.IsValid());
|
| - DCHECK(message_loop_);
|
| DCHECK(target);
|
| +
|
| + // VAOS can be constructed on any thread, but will DCHECK that all
|
| + // AudioOutputStream methods are called from the same thread.
|
| + thread_checker_.DetachFromThread();
|
| }
|
|
|
| VirtualAudioOutputStream::~VirtualAudioOutputStream() {
|
| @@ -25,27 +27,27 @@ VirtualAudioOutputStream::~VirtualAudioOutputStream() {
|
| }
|
|
|
| bool VirtualAudioOutputStream::Open() {
|
| - DCHECK(message_loop_->BelongsToCurrentThread());
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| return true;
|
| }
|
|
|
| void VirtualAudioOutputStream::Start(AudioSourceCallback* callback) {
|
| - DCHECK(message_loop_->BelongsToCurrentThread());
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| DCHECK(!callback_);
|
| callback_ = callback;
|
| target_input_stream_->AddOutputStream(this, params_);
|
| }
|
|
|
| void VirtualAudioOutputStream::Stop() {
|
| - DCHECK(message_loop_->BelongsToCurrentThread());
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| if (callback_) {
|
| - callback_ = NULL;
|
| target_input_stream_->RemoveOutputStream(this, params_);
|
| + callback_ = NULL;
|
| }
|
| }
|
|
|
| void VirtualAudioOutputStream::Close() {
|
| - DCHECK(message_loop_->BelongsToCurrentThread());
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| Stop();
|
|
|
| @@ -60,18 +62,19 @@ void VirtualAudioOutputStream::Close() {
|
| }
|
|
|
| void VirtualAudioOutputStream::SetVolume(double volume) {
|
| - DCHECK(message_loop_->BelongsToCurrentThread());
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| volume_ = volume;
|
| }
|
|
|
| void VirtualAudioOutputStream::GetVolume(double* volume) {
|
| - DCHECK(message_loop_->BelongsToCurrentThread());
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| *volume = volume_;
|
| }
|
|
|
| double VirtualAudioOutputStream::ProvideInput(AudioBus* audio_bus,
|
| base::TimeDelta buffer_delay) {
|
| - DCHECK(message_loop_->BelongsToCurrentThread());
|
| + // Note: This method may be invoked on any one thread, depending on the
|
| + // platform.
|
| DCHECK(callback_);
|
|
|
| const int frames = callback_->OnMoreData(audio_bus, AudioBuffersState());
|
|
|