Fix setting initial speed (fixes #1408)

This commit is contained in:
Sam Potts 2019-04-12 20:18:17 +10:00
parent d9b7928ce6
commit e9367ee85e
2 changed files with 19 additions and 12 deletions

View File

@ -678,7 +678,9 @@ class Plyr {
this.config.speed.selected = speed; this.config.speed.selected = speed;
// Set media speed // Set media speed
this.media.playbackRate = speed; setTimeout(() => {
this.media.playbackRate = speed;
}, 0);
} }
/** /**

View File

@ -67,15 +67,15 @@ const ui = {
// Reset mute state // Reset mute state
this.muted = null; this.muted = null;
// Reset speed
this.speed = null;
// Reset loop state // Reset loop state
this.loop = null; this.loop = null;
// Reset quality setting // Reset quality setting
this.quality = null; this.quality = null;
// Reset speed
this.speed = null;
// Reset volume display // Reset volume display
controls.updateVolume.call(this); controls.updateVolume.call(this);
@ -233,13 +233,16 @@ const ui = {
clearTimeout(this.timers.loading); clearTimeout(this.timers.loading);
// Timer to prevent flicker when seeking // Timer to prevent flicker when seeking
this.timers.loading = setTimeout(() => { this.timers.loading = setTimeout(
// Update progress bar loading class state () => {
toggleClass(this.elements.container, this.config.classNames.loading, this.loading); // Update progress bar loading class state
toggleClass(this.elements.container, this.config.classNames.loading, this.loading);
// Update controls visibility // Update controls visibility
ui.toggleControls.call(this); ui.toggleControls.call(this);
}, this.loading ? 250 : 0); },
this.loading ? 250 : 0,
);
}, },
// Toggle controls based on state and `force` argument // Toggle controls based on state and `force` argument
@ -248,10 +251,12 @@ const ui = {
if (controls && this.config.hideControls) { if (controls && this.config.hideControls) {
// Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.) // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)
const recentTouchSeek = (this.touch && this.lastSeekTime + 2000 > Date.now()); const recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now();
// Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide
this.toggleControls(Boolean(force || this.loading || this.paused || controls.pressed || controls.hover || recentTouchSeek)); this.toggleControls(
Boolean(force || this.loading || this.paused || controls.pressed || controls.hover || recentTouchSeek),
);
} }
}, },
}; };