From e9367ee85e443b28b003e3ff79ac0e2445879aa4 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Fri, 12 Apr 2019 20:18:17 +1000 Subject: [PATCH] Fix setting initial speed (fixes #1408) --- src/js/plyr.js | 4 +++- src/js/ui.js | 27 ++++++++++++++++----------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/js/plyr.js b/src/js/plyr.js index 3b169321..d67fae83 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -678,7 +678,9 @@ class Plyr { this.config.speed.selected = speed; // Set media speed - this.media.playbackRate = speed; + setTimeout(() => { + this.media.playbackRate = speed; + }, 0); } /** diff --git a/src/js/ui.js b/src/js/ui.js index 8e50bb83..50de7df1 100644 --- a/src/js/ui.js +++ b/src/js/ui.js @@ -67,15 +67,15 @@ const ui = { // Reset mute state this.muted = null; - // Reset speed - this.speed = null; - // Reset loop state this.loop = null; // Reset quality setting this.quality = null; + // Reset speed + this.speed = null; + // Reset volume display controls.updateVolume.call(this); @@ -233,13 +233,16 @@ const ui = { clearTimeout(this.timers.loading); // Timer to prevent flicker when seeking - this.timers.loading = setTimeout(() => { - // Update progress bar loading class state - toggleClass(this.elements.container, this.config.classNames.loading, this.loading); + this.timers.loading = setTimeout( + () => { + // Update progress bar loading class state + toggleClass(this.elements.container, this.config.classNames.loading, this.loading); - // Update controls visibility - ui.toggleControls.call(this); - }, this.loading ? 250 : 0); + // Update controls visibility + ui.toggleControls.call(this); + }, + this.loading ? 250 : 0, + ); }, // Toggle controls based on state and `force` argument @@ -248,10 +251,12 @@ const ui = { 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.) - 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 - 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), + ); } }, };