| Index: media/blink/webmediaplayer_impl.cc
|
| diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
|
| index 0c5f8598c32d8c892b3410e819555cf87271c980..4d3af9c60ec9bb8c364552d8aa2cddf58139d70e 100644
|
| --- a/media/blink/webmediaplayer_impl.cc
|
| +++ b/media/blink/webmediaplayer_impl.cc
|
| @@ -197,7 +197,7 @@ WebMediaPlayerImpl::~WebMediaPlayerImpl() {
|
| media_log_->AddEvent(
|
| media_log_->CreateEvent(MediaLogEvent::WEBMEDIAPLAYER_DESTROYED));
|
|
|
| - if (delegate_.get())
|
| + if (delegate_)
|
| delegate_->PlayerGone(this);
|
|
|
| // Abort any pending IO so stopping the pipeline doesn't get blocked.
|
| @@ -281,7 +281,7 @@ void WebMediaPlayerImpl::play() {
|
|
|
| media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::PLAY));
|
|
|
| - if (delegate_.get())
|
| + if (delegate_ && playback_rate_ > 0)
|
| delegate_->DidPlay(this);
|
| }
|
|
|
| @@ -289,6 +289,7 @@ void WebMediaPlayerImpl::pause() {
|
| DVLOG(1) << __FUNCTION__;
|
| DCHECK(main_task_runner_->BelongsToCurrentThread());
|
|
|
| + const bool was_already_paused = paused_ || playback_rate_ == 0;
|
| paused_ = true;
|
| pipeline_.SetPlaybackRate(0.0f);
|
| if (data_source_)
|
| @@ -297,7 +298,7 @@ void WebMediaPlayerImpl::pause() {
|
|
|
| media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::PAUSE));
|
|
|
| - if (delegate_.get())
|
| + if (!was_already_paused && delegate_)
|
| delegate_->DidPause(this);
|
| }
|
|
|
| @@ -357,6 +358,10 @@ void WebMediaPlayerImpl::setRate(double rate) {
|
| rate = kMinRate;
|
| else if (rate > kMaxRate)
|
| rate = kMaxRate;
|
| + if (playback_rate_ == 0 && delegate_)
|
| + delegate_->DidPlay(this);
|
| + } else if (playback_rate_ != 0 && delegate_) {
|
| + delegate_->DidPause(this);
|
| }
|
|
|
| playback_rate_ = rate;
|
|
|