From d5ae0275cf589d631cfc366e19fd5e6792f6145c Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Mon, 13 Apr 2020 12:49:40 +0300 Subject: [PATCH 1/2] Move delayed volume update to playbackManager --- src/components/nowplayingbar/nowplayingbar.js | 18 ++---------------- src/components/playback/playbackmanager.js | 17 ++++++++++++++++- src/components/remotecontrol/remotecontrol.js | 18 ++---------------- src/controllers/playback/videoosd.js | 17 ++--------------- 4 files changed, 22 insertions(+), 48 deletions(-) diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 8205211b4..346250104 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -187,29 +187,15 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', volumeSliderContainer.classList.remove('hide'); } - var volumeSliderTimer; - function setVolume() { - clearTimeout(volumeSliderTimer); - volumeSliderTimer = null; - if (currentPlayer) { currentPlayer.setVolume(this.value); } } - function setVolumeDelayed() { - if (!volumeSliderTimer) { - var that = this; - volumeSliderTimer = setTimeout(function () { - setVolume.call(that); - }, 700); - } - } - volumeSlider.addEventListener('change', setVolume); - volumeSlider.addEventListener('mousemove', setVolumeDelayed); - volumeSlider.addEventListener('touchmove', setVolumeDelayed); + volumeSlider.addEventListener('mousemove', setVolume); + volumeSlider.addEventListener('touchmove', setVolume); positionSlider = elem.querySelector('.nowPlayingBarPositionSlider'); positionSlider.addEventListener('change', function () { diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 2ea4c67cf..b004c00a5 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -3282,7 +3282,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla function onPlaybackVolumeChange(e) { var player = this; - sendProgressUpdate(player, 'volumechange'); + sendProgressUpdateDelayed(player, 'volumechange'); } function onRepeatModeChange(e) { @@ -3377,7 +3377,14 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla pluginManager.ofType('mediaplayer').map(initMediaPlayer); + /** Delay timer for sendProgressUpdate */ + var sendProgressUpdateTimer; + /** Delay time in ms for sendProgressUpdate */ + var sendProgressUpdateDelay = 700; + function sendProgressUpdate(player, progressEventName, reportPlaylist) { + clearTimeout(sendProgressUpdateTimer); + sendProgressUpdateTimer = null; if (!player) { throw new Error('player cannot be null'); @@ -3403,6 +3410,14 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } } + function sendProgressUpdateDelayed(player, progressEventName, reportPlaylist) { + if (!sendProgressUpdateTimer) { + sendProgressUpdateTimer = setTimeout(function () { + sendProgressUpdate(player, progressEventName, reportPlaylist); + }, sendProgressUpdateDelay); + } + } + function getLiveStreamMediaInfo(player, streamInfo, mediaSource, liveStreamId, serverId) { console.debug('getLiveStreamMediaInfo'); diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 7b620d536..149fc7738 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -614,27 +614,13 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL return datetime.getDisplayRunningTime(ticks); }; - var volumeSliderTimer; - function setVolume() { - clearTimeout(volumeSliderTimer); - volumeSliderTimer = null; - playbackManager.setVolume(this.value, currentPlayer); } - function setVolumeDelayed() { - if (!volumeSliderTimer) { - var that = this; - volumeSliderTimer = setTimeout(function () { - setVolume.call(that); - }, 700); - } - } - context.querySelector(".nowPlayingVolumeSlider").addEventListener("change", setVolume); - context.querySelector(".nowPlayingVolumeSlider").addEventListener("mousemove", setVolumeDelayed); - context.querySelector(".nowPlayingVolumeSlider").addEventListener("touchmove", setVolumeDelayed); + context.querySelector(".nowPlayingVolumeSlider").addEventListener("mousemove", setVolume); + context.querySelector(".nowPlayingVolumeSlider").addEventListener("touchmove", setVolume); context.querySelector(".buttonMute").addEventListener("click", function () { playbackManager.toggleMute(currentPlayer); }); diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index f71eb0e09..555e34c5b 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1272,7 +1272,6 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var programEndDateMs = 0; var playbackStartTimeTicks = 0; var subtitleSyncOverlay; - var volumeSliderTimer; var nowPlayingVolumeSlider = view.querySelector(".osdVolumeSlider"); var nowPlayingVolumeSliderContainer = view.querySelector(".osdVolumeSliderContainer"); var nowPlayingPositionSlider = view.querySelector(".osdPositionSlider"); @@ -1423,27 +1422,15 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function setVolume() { - clearTimeout(volumeSliderTimer); - volumeSliderTimer = null; - playbackManager.setVolume(this.value, currentPlayer); } - function setVolumeDelayed() { - if (!volumeSliderTimer) { - var that = this; - volumeSliderTimer = setTimeout(function () { - setVolume.call(that); - }, 700); - } - } - view.querySelector(".buttonMute").addEventListener("click", function () { playbackManager.toggleMute(currentPlayer); }); nowPlayingVolumeSlider.addEventListener("change", setVolume); - nowPlayingVolumeSlider.addEventListener("mousemove", setVolumeDelayed); - nowPlayingVolumeSlider.addEventListener("touchmove", setVolumeDelayed); + nowPlayingVolumeSlider.addEventListener("mousemove", setVolume); + nowPlayingVolumeSlider.addEventListener("touchmove", setVolume); nowPlayingPositionSlider.addEventListener("change", function () { var player = currentPlayer; From 1519ee48d7a388648d7c6a0bfd72560fe1059b9b Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> Date: Wed, 15 Apr 2020 09:57:19 +0300 Subject: [PATCH 2/2] Apply suggestions from code review Co-Authored-By: dkanada --- src/components/playback/playbackmanager.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index b004c00a5..46fed9182 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -3379,6 +3379,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla /** Delay timer for sendProgressUpdate */ var sendProgressUpdateTimer; + /** Delay time in ms for sendProgressUpdate */ var sendProgressUpdateDelay = 700;