Chromium Code Reviews| Index: media/filters/video_renderer_base.cc |
| diff --git a/media/filters/video_renderer_base.cc b/media/filters/video_renderer_base.cc |
| index 37a24edd7b1fb6890baa7eeb8119f64c6faafb21..2078751e3081d538d2cb58c0a3091d8969cf5408 100644 |
| --- a/media/filters/video_renderer_base.cc |
| +++ b/media/filters/video_renderer_base.cc |
| @@ -45,7 +45,7 @@ VideoRendererBase::VideoRendererBase( |
| VideoRendererBase::~VideoRendererBase() { |
| base::AutoLock auto_lock(lock_); |
| - CHECK(state_ == kUninitialized || state_ == kStopped) << state_; |
| + CHECK_EQ(state_, kStopped); |
|
acolwell GONE FROM CHROMIUM
2013/02/20 17:01:14
Won't this crash if an error is encountered before
scherkus (not reviewing)
2013/02/21 20:43:54
Indeed it will!
|
| CHECK_EQ(thread_, base::kNullThreadHandle); |
| } |
| @@ -92,7 +92,7 @@ void VideoRendererBase::ResetDecoder() { |
| void VideoRendererBase::Stop(const base::Closure& callback) { |
| DCHECK(message_loop_->BelongsToCurrentThread()); |
| base::AutoLock auto_lock(lock_); |
| - if (state_ == kUninitialized || state_ == kStopped) { |
| + if (state_ == kStopped) { |
|
scherkus (not reviewing)
2013/02/20 08:26:11
note: state == kUninitialized actually runs the St
acolwell GONE FROM CHROMIUM
2013/02/20 17:01:14
This seems a little weird. Shouldn't we transition
scherkus (not reviewing)
2013/02/21 20:43:54
Yeah that was on my mind. I fully admit that I was
|
| callback.Run(); |
| return; |
| } |
| @@ -126,7 +126,12 @@ void VideoRendererBase::Stop(const base::Closure& callback) { |
| return; |
| } |
| - decoder_->Stop(callback); |
| + if (decoder_) { |
| + decoder_->Stop(callback); |
| + return; |
| + } |
| + |
| + callback.Run(); |
| } |
| void VideoRendererBase::StopDecoder(const base::Closure& callback) { |
| @@ -527,6 +532,9 @@ void VideoRendererBase::AttemptRead_Locked() { |
| void VideoRendererBase::OnDecoderResetDone() { |
| base::AutoLock auto_lock(lock_); |
| + if (state_ == kStopped) |
| + return; |
| + |
| DCHECK_EQ(kFlushingDecoder, state_); |
| DCHECK(!pending_read_); |