| Index: Source/core/html/HTMLMediaElement.cpp
|
| diff --git a/Source/core/html/HTMLMediaElement.cpp b/Source/core/html/HTMLMediaElement.cpp
|
| index 28f0ad2d547ce1bf96e7bd594cf91a3a6a0c77c1..dcdbf517b0d7bd8ae559b1a7f1d2124475fa159e 100644
|
| --- a/Source/core/html/HTMLMediaElement.cpp
|
| +++ b/Source/core/html/HTMLMediaElement.cpp
|
| @@ -2115,8 +2115,12 @@ void HTMLMediaElement::setPlaybackRate(double rate)
|
| scheduleEvent(EventTypeNames::ratechange);
|
| }
|
|
|
| - if (m_player && potentiallyPlaying() && m_player->rate() != rate && !m_mediaController)
|
| - m_player->setRate(rate);
|
| + updatePlaybackRate();
|
| +}
|
| +
|
| +double HTMLMediaElement::effectivePlaybackRate() const
|
| +{
|
| + return m_mediaController ? m_mediaController->playbackRate() : m_playbackRate;
|
| }
|
|
|
| HTMLMediaElement::DirectionOfPlayback HTMLMediaElement::directionOfPlayback() const
|
| @@ -2126,7 +2130,7 @@ HTMLMediaElement::DirectionOfPlayback HTMLMediaElement::directionOfPlayback() co
|
|
|
| void HTMLMediaElement::updatePlaybackRate()
|
| {
|
| - double effectiveRate = m_mediaController ? m_mediaController->playbackRate() : m_playbackRate;
|
| + double effectiveRate = effectivePlaybackRate();
|
| if (m_player && potentiallyPlaying() && m_player->rate() != effectiveRate)
|
| m_player->setRate(effectiveRate);
|
| }
|
| @@ -2339,7 +2343,7 @@ void HTMLMediaElement::playbackProgressTimerFired(Timer<HTMLMediaElement>*)
|
| if (!m_seeking)
|
| scheduleTimeupdateEvent(true);
|
|
|
| - if (!m_playbackRate)
|
| + if (!effectivePlaybackRate())
|
| return;
|
|
|
| if (!m_paused && hasMediaControls())
|
| @@ -3274,7 +3278,7 @@ void HTMLMediaElement::updatePlayState()
|
| if (playerPaused) {
|
| // Set rate, muted before calling play in case they were set before the media engine was setup.
|
| // The media engine should just stash the rate and muted values since it isn't already playing.
|
| - m_player->setRate(m_playbackRate);
|
| + m_player->setRate(effectivePlaybackRate());
|
| updateVolume();
|
|
|
| m_player->play();
|
|
|