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_); |