Index: media/audio/audio_output_controller.cc |
diff --git a/media/audio/audio_output_controller.cc b/media/audio/audio_output_controller.cc |
index 9f6d7da6cc4d8859b939f2eccb667ac9b6c59fb3..d087a70208a03623dbcd2a8783f51b461c1356c2 100644 |
--- a/media/audio/audio_output_controller.cc |
+++ b/media/audio/audio_output_controller.cc |
@@ -42,10 +42,11 @@ AudioOutputController::AudioOutputController(AudioManager* audio_manager, |
AudioOutputController::~AudioOutputController() { |
DCHECK_EQ(kClosed, state_); |
- if (message_loop_ == MessageLoop::current()) { |
+ DCHECK(message_loop_); |
+ |
+ if (!message_loop_.get() || message_loop_->BelongsToCurrentThread()) { |
DoStopCloseAndClearStream(NULL); |
} else { |
- DCHECK(message_loop_); |
WaitableEvent completion(true /* manual reset */, |
false /* initial state */); |
message_loop_->PostTask(FROM_HERE, |
@@ -145,7 +146,7 @@ void AudioOutputController::EnqueueData(const uint8* data, uint32 size) { |
} |
void AudioOutputController::DoCreate(const AudioParameters& params) { |
- DCHECK_EQ(message_loop_, MessageLoop::current()); |
+ DCHECK(message_loop_->BelongsToCurrentThread()); |
// Close() can be called before DoCreate() is executed. |
if (state_ == kClosed) |
@@ -185,7 +186,7 @@ void AudioOutputController::DoCreate(const AudioParameters& params) { |
} |
void AudioOutputController::DoPlay() { |
- DCHECK_EQ(message_loop_, MessageLoop::current()); |
+ DCHECK(message_loop_->BelongsToCurrentThread()); |
// We can start from created or paused state. |
if (state_ != kCreated && state_ != kPaused) |
@@ -204,14 +205,14 @@ void AudioOutputController::DoPlay() { |
FROM_HERE, |
base::Bind(&AudioOutputController::PollAndStartIfDataReady, |
weak_this_.GetWeakPtr()), |
- base::TimeDelta::FromMilliseconds(kPollPauseInMilliseconds)); |
+ kPollPauseInMilliseconds); |
} else { |
StartStream(); |
} |
} |
void AudioOutputController::PollAndStartIfDataReady() { |
- DCHECK_EQ(message_loop_, MessageLoop::current()); |
+ DCHECK(message_loop_->BelongsToCurrentThread()); |
// Being paranoid: do nothing if state unexpectedly changed. |
if ((state_ != kStarting) && (state_ != kPausedWhenStarting)) |
@@ -232,12 +233,12 @@ void AudioOutputController::PollAndStartIfDataReady() { |
FROM_HERE, |
base::Bind(&AudioOutputController::PollAndStartIfDataReady, |
weak_this_.GetWeakPtr()), |
- base::TimeDelta::FromMilliseconds(kPollPauseInMilliseconds)); |
+ kPollPauseInMilliseconds); |
} |
} |
void AudioOutputController::StartStream() { |
- DCHECK_EQ(message_loop_, MessageLoop::current()); |
+ DCHECK(message_loop_->BelongsToCurrentThread()); |
state_ = kPlaying; |
// We start the AudioOutputStream lazily. |
@@ -248,7 +249,7 @@ void AudioOutputController::StartStream() { |
} |
void AudioOutputController::DoPause() { |
- DCHECK_EQ(message_loop_, MessageLoop::current()); |
+ DCHECK(message_loop_->BelongsToCurrentThread()); |
if (stream_) |
stream_->Stop(); |
@@ -282,7 +283,7 @@ void AudioOutputController::DoPause() { |
} |
void AudioOutputController::DoFlush() { |
- DCHECK_EQ(message_loop_, MessageLoop::current()); |
+ DCHECK(message_loop_->BelongsToCurrentThread()); |
// TODO(hclam): Actually flush the audio device. |
@@ -296,7 +297,7 @@ void AudioOutputController::DoFlush() { |
} |
void AudioOutputController::DoClose(const base::Closure& closed_task) { |
- DCHECK_EQ(message_loop_, MessageLoop::current()); |
+ DCHECK(message_loop_->BelongsToCurrentThread()); |
if (state_ != kClosed) { |
DoStopCloseAndClearStream(NULL); |
@@ -312,7 +313,7 @@ void AudioOutputController::DoClose(const base::Closure& closed_task) { |
} |
void AudioOutputController::DoSetVolume(double volume) { |
- DCHECK_EQ(message_loop_, MessageLoop::current()); |
+ DCHECK(message_loop_->BelongsToCurrentThread()); |
// Saves the volume to a member first. We may not be able to set the volume |
// right away but when the stream is created we'll set the volume. |
@@ -332,7 +333,7 @@ void AudioOutputController::DoSetVolume(double volume) { |
} |
void AudioOutputController::DoReportError(int code) { |
- DCHECK_EQ(message_loop_, MessageLoop::current()); |
+ DCHECK(message_loop_->BelongsToCurrentThread()); |
if (state_ != kClosed) |
handler_->OnError(this, code); |
} |
@@ -415,7 +416,7 @@ void AudioOutputController::SubmitOnMoreData_Locked() { |
} |
void AudioOutputController::DoStopCloseAndClearStream(WaitableEvent *done) { |
- DCHECK_EQ(message_loop_, MessageLoop::current()); |
+ DCHECK(message_loop_->BelongsToCurrentThread()); |
// Allow calling unconditionally and bail if we don't have a stream_ to close. |
if (stream_ != NULL) { |