| Index: media/filters/video_renderer_base.cc
|
| ===================================================================
|
| --- media/filters/video_renderer_base.cc (revision 184723)
|
| +++ media/filters/video_renderer_base.cc (working copy)
|
| @@ -116,7 +116,12 @@
|
| return;
|
| }
|
|
|
| - decoder_->Stop(callback);
|
| + if (decoder_) {
|
| + decoder_->Stop(callback);
|
| + return;
|
| + }
|
| +
|
| + callback.Run();
|
| }
|
|
|
| void VideoRendererBase::StopDecoder(const base::Closure& callback) {
|
| @@ -178,6 +183,7 @@
|
| error_cb_ = error_cb;
|
| get_time_cb_ = get_time_cb;
|
| get_duration_cb_ = get_duration_cb;
|
| + state_ = kInitializing;
|
|
|
| scoped_ptr<VideoDecoderSelector> decoder_selector(
|
| new VideoDecoderSelector(base::MessageLoopProxy::current(),
|
| @@ -205,6 +211,8 @@
|
| if (state_ == kStopped)
|
| return;
|
|
|
| + DCHECK_EQ(state_, kInitializing);
|
| +
|
| if (!selected_decoder) {
|
| state_ = kUninitialized;
|
| base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED);
|
| @@ -610,6 +618,7 @@
|
| return;
|
|
|
| case kUninitialized:
|
| + case kInitializing:
|
| case kPrerolled:
|
| case kFlushingDecoder:
|
| case kFlushed:
|
| @@ -622,6 +631,9 @@
|
|
|
| void VideoRendererBase::OnDecoderResetDone() {
|
| base::AutoLock auto_lock(lock_);
|
| + if (state_ == kStopped)
|
| + return;
|
| +
|
| DCHECK_EQ(kFlushingDecoder, state_);
|
| DCHECK(!pending_read_);
|
|
|
|
|