Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Unified Diff: media/audio/virtual_audio_output_stream.cc

Issue 17334005: Re-land r207105 (Mac audio capture threading fix) with unit test memory leak issue resolved. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Using ref-counting (Patch Set 2 from Issue 17122006). Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/audio/virtual_audio_output_stream.h ('k') | media/audio/virtual_audio_output_stream_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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());
« no previous file with comments | « media/audio/virtual_audio_output_stream.h ('k') | media/audio/virtual_audio_output_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698