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