From 4ab84e369b0485dba519ca752e98cb98239c7aab Mon Sep 17 00:00:00 2001 From: redSpoutnik <15638041+redSpoutnik@users.noreply.github.com> Date: Thu, 19 Sep 2019 23:11:32 +0200 Subject: [PATCH 1/2] add 700ms timer for 'mousemove' and 'touchmove' volume listeners --- src/controllers/videoosd.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/controllers/videoosd.js b/src/controllers/videoosd.js index 5a31c4ed25..59ec83e9aa 100644 --- a/src/controllers/videoosd.js +++ b/src/controllers/videoosd.js @@ -1209,6 +1209,7 @@ define(["playbackManager", "dom", "inputmanager", "datetime", "itemHelper", "med var programEndDateMs = 0; var playbackStartTimeTicks = 0; var subtitleSyncOverlay; + var volumeSliderTimer = 0; var nowPlayingVolumeSlider = view.querySelector(".osdVolumeSlider"); var nowPlayingVolumeSliderContainer = view.querySelector(".osdVolumeSliderContainer"); var nowPlayingPositionSlider = view.querySelector(".osdPositionSlider"); @@ -1334,10 +1335,18 @@ define(["playbackManager", "dom", "inputmanager", "datetime", "itemHelper", "med playbackManager.setVolume(this.value, currentPlayer); }); nowPlayingVolumeSlider.addEventListener("mousemove", function () { - playbackManager.setVolume(this.value, currentPlayer); + var now = new Date().getTime(); + if ((now - volumeSliderTimer) > 700) { + volumeSliderTimer = now; + playbackManager.setVolume(this.value, currentPlayer); + } }); nowPlayingVolumeSlider.addEventListener("touchmove", function () { - playbackManager.setVolume(this.value, currentPlayer); + var now = new Date().getTime(); + if ((now - volumeSliderTimer) > 700) { + volumeSliderTimer = now; + playbackManager.setVolume(this.value, currentPlayer); + } }); nowPlayingPositionSlider.addEventListener("change", function () { From 5974c511f91919eafab07c086dbe6525e236f3cf Mon Sep 17 00:00:00 2001 From: redSpoutnik <15638041+redSpoutnik@users.noreply.github.com> Date: Sun, 22 Sep 2019 11:38:18 +0200 Subject: [PATCH 2/2] change timer using setTimeout/clearTimeout --- src/controllers/videoosd.js | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/controllers/videoosd.js b/src/controllers/videoosd.js index 59ec83e9aa..78bfbc5a00 100644 --- a/src/controllers/videoosd.js +++ b/src/controllers/videoosd.js @@ -1209,7 +1209,7 @@ define(["playbackManager", "dom", "inputmanager", "datetime", "itemHelper", "med var programEndDateMs = 0; var playbackStartTimeTicks = 0; var subtitleSyncOverlay; - var volumeSliderTimer = 0; + var volumeSliderTimer; var nowPlayingVolumeSlider = view.querySelector(".osdVolumeSlider"); var nowPlayingVolumeSliderContainer = view.querySelector(".osdVolumeSliderContainer"); var nowPlayingPositionSlider = view.querySelector(".osdPositionSlider"); @@ -1332,20 +1332,33 @@ define(["playbackManager", "dom", "inputmanager", "datetime", "itemHelper", "med playbackManager.toggleMute(currentPlayer); }); nowPlayingVolumeSlider.addEventListener("change", function () { + if(volumeSliderTimer){ + // interupt and remove existing timer + clearTimeout(volumeSliderTimer); + volumeSliderTimer = null; + } playbackManager.setVolume(this.value, currentPlayer); }); nowPlayingVolumeSlider.addEventListener("mousemove", function () { - var now = new Date().getTime(); - if ((now - volumeSliderTimer) > 700) { - volumeSliderTimer = now; - playbackManager.setVolume(this.value, currentPlayer); + if(!volumeSliderTimer){ + var that = this; + // register new timer + volumeSliderTimer = setTimeout(function(){ + playbackManager.setVolume(that.value, currentPlayer); + // delete timer after completion + volumeSliderTimer = null; + }, 700); } }); nowPlayingVolumeSlider.addEventListener("touchmove", function () { - var now = new Date().getTime(); - if ((now - volumeSliderTimer) > 700) { - volumeSliderTimer = now; - playbackManager.setVolume(this.value, currentPlayer); + if(!volumeSliderTimer){ + var that = this; + // register new timer + volumeSliderTimer = setTimeout(function(){ + playbackManager.setVolume(that.value, currentPlayer); + // delete timer after completion + volumeSliderTimer = null; + }, 700); } });