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

Unified Diff: media/filters/audio_renderer_impl.cc

Issue 407583002: Fold AudioRenderer::Stop() into the dtor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments addressed Created 6 years, 5 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/filters/audio_renderer_impl.h ('k') | media/filters/audio_renderer_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/audio_renderer_impl.cc
diff --git a/media/filters/audio_renderer_impl.cc b/media/filters/audio_renderer_impl.cc
index bbe0d786b98472e2492063e8c35907432d6a9ca4..4198a48dd016d4627e48d40149d34db892da81a5 100644
--- a/media/filters/audio_renderer_impl.cc
+++ b/media/filters/audio_renderer_impl.cc
@@ -67,9 +67,18 @@ AudioRendererImpl::AudioRendererImpl(
}
AudioRendererImpl::~AudioRendererImpl() {
- // Stop() should have been called and |algorithm_| should have been destroyed.
- DCHECK(state_ == kUninitialized || state_ == kStopped);
- DCHECK(!algorithm_.get());
+ DVLOG(1) << __FUNCTION__;
+ DCHECK(task_runner_->BelongsToCurrentThread());
+
+ if (sink_) {
+ // If Render() is in process, this call will wait for Render() to finish.
scherkus (not reviewing) 2014/07/21 23:38:20 s/process/progress/?
xhwang 2014/07/21 23:56:33 Done.
+ // After this call, the |sink_| will not call back into |this| anymore.
+ sink_->Stop();
+ sink_ = NULL;
scherkus (not reviewing) 2014/07/21 23:38:20 is this required to force the ref-count to zero? i
xhwang 2014/07/21 23:56:33 Probably not needed. The ref-count will be dropped
+ }
+
+ if (!init_cb_.is_null())
+ base::ResetAndReturn(&init_cb_).Run(PIPELINE_ERROR_ABORT);
}
void AudioRendererImpl::StartRendering() {
@@ -163,8 +172,6 @@ void AudioRendererImpl::ResetDecoderDone() {
DCHECK(task_runner_->BelongsToCurrentThread());
{
base::AutoLock auto_lock(lock_);
- if (state_ == kStopped)
- return;
DCHECK_EQ(state_, kFlushed);
DCHECK(!flush_cb_.is_null());
@@ -188,37 +195,6 @@ void AudioRendererImpl::ResetDecoderDone() {
task_runner_->PostTask(FROM_HERE, base::ResetAndReturn(&flush_cb_));
}
-void AudioRendererImpl::Stop(const base::Closure& callback) {
- DVLOG(1) << __FUNCTION__;
- DCHECK(task_runner_->BelongsToCurrentThread());
- DCHECK(!callback.is_null());
-
- // TODO(scherkus): Consider invalidating |weak_factory_| and replacing
- // task-running guards that check |state_| with DCHECK().
-
- {
- base::AutoLock auto_lock(lock_);
-
- if (state_ == kStopped) {
- task_runner_->PostTask(FROM_HERE, callback);
- return;
- }
-
- ChangeState_Locked(kStopped);
- algorithm_.reset();
- time_cb_.Reset();
- flush_cb_.Reset();
- }
-
- if (sink_) {
- sink_->Stop();
- sink_ = NULL;
- }
-
- audio_buffer_stream_.reset();
- task_runner_->PostTask(FROM_HERE, callback);
-}
-
void AudioRendererImpl::StartPlayingFrom(base::TimeDelta timestamp) {
DVLOG(1) << __FUNCTION__ << "(" << timestamp.InMicroseconds() << ")";
DCHECK(task_runner_->BelongsToCurrentThread());
@@ -310,11 +286,6 @@ void AudioRendererImpl::OnAudioBufferStreamInitialized(bool success) {
base::AutoLock auto_lock(lock_);
- if (state_ == kStopped) {
- base::ResetAndReturn(&init_cb_).Run(PIPELINE_ERROR_ABORT);
- return;
- }
-
if (!success) {
state_ = kUninitialized;
base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED);
@@ -445,7 +416,7 @@ bool AudioRendererImpl::HandleSplicerBuffer_Locked(
return true;
}
- if (state_ != kUninitialized && state_ != kStopped)
+ if (state_ != kUninitialized)
algorithm_->EnqueueBuffer(buffer);
}
@@ -467,9 +438,6 @@ bool AudioRendererImpl::HandleSplicerBuffer_Locked(
return false;
}
return true;
-
- case kStopped:
- return false;
}
return false;
}
@@ -499,7 +467,6 @@ bool AudioRendererImpl::CanRead_Locked() {
case kInitializing:
case kFlushing:
case kFlushed:
- case kStopped:
return false;
case kPlaying:
@@ -666,7 +633,6 @@ void AudioRendererImpl::HandleAbortedReadOrDecodeError(bool is_decode_error) {
case kFlushed:
case kPlaying:
- case kStopped:
if (status != PIPELINE_OK)
error_cb_.Run(status);
return;
« no previous file with comments | « media/filters/audio_renderer_impl.h ('k') | media/filters/audio_renderer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698