From 1225800e7eb15f7e9221259dc5f1195df2953861 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Sun, 9 Feb 2020 16:26:55 +0100 Subject: [PATCH 1/5] Add delay on play/pause to prevent hiccup when entering fullscreen Resolves: #589 --- src/controllers/playback/videoosd.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index fd42f68498..d07cc1da8c 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1230,6 +1230,9 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med shell.disableFullscreen(); }); + if(playerPauseClickTimeout) { + clearTimeout(playerPauseClickTimeout); + } var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback); releaseCurrentPlayer(); @@ -1369,6 +1372,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med destroySubtitleSync(); }); var lastPointerDown = 0; + let playerPauseClickTimeout; dom.addEventListener(view, window.PointerEvent ? "pointerdown" : "click", function (e) { if (dom.parentWithClass(e.target, ["videoOsdBottom", "upNextContainer"])) { return void showOsd(); @@ -1388,8 +1392,16 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med case "mouse": if (!e.button) { - playbackManager.playPause(currentPlayer); - showOsd(); + if(playerPauseClickTimeout){ + clearTimeout(playerPauseClickTimeout); + playerPauseClickTimeout = 0; + } else { + playerPauseClickTimeout = setTimeout(() => { + playbackManager.playPause(currentPlayer); + showOsd(); + playerPauseClickTimeout = 0; + }, 300); + } } break; From 637480230959217fade1c90542357bf0939f5b61 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 12 Feb 2020 13:37:40 +0100 Subject: [PATCH 2/5] Fix linting errors in videoosd --- src/controllers/playback/videoosd.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index d07cc1da8c..eccf065487 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1230,7 +1230,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med shell.disableFullscreen(); }); - if(playerPauseClickTimeout) { + if (playerPauseClickTimeout) { clearTimeout(playerPauseClickTimeout); } var player = currentPlayer; @@ -1392,9 +1392,9 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med case "mouse": if (!e.button) { - if(playerPauseClickTimeout){ + if (playerPauseClickTimeout) { clearTimeout(playerPauseClickTimeout); - playerPauseClickTimeout = 0; + playerPauseClickTimeout = 0; } else { playerPauseClickTimeout = setTimeout(() => { playbackManager.playPause(currentPlayer); From 41ea428237a36b4b351aa8387f932d363fcfe6dd Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 19 Feb 2020 16:07:06 +0100 Subject: [PATCH 3/5] Rename and move declaration of playerPauseClickTimeout --- src/controllers/playback/videoosd.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index eccf065487..754a214149 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1223,15 +1223,16 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med return null; } - + + let playPauseClickTimeout; function onViewHideStopPlayback() { if (playbackManager.isPlayingVideo()) { require(['shell'], function (shell) { shell.disableFullscreen(); }); - - if (playerPauseClickTimeout) { - clearTimeout(playerPauseClickTimeout); + + if (playPauseClickTimeout) { + clearTimeout(playPauseClickTimeout); } var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback); @@ -1372,7 +1373,6 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med destroySubtitleSync(); }); var lastPointerDown = 0; - let playerPauseClickTimeout; dom.addEventListener(view, window.PointerEvent ? "pointerdown" : "click", function (e) { if (dom.parentWithClass(e.target, ["videoOsdBottom", "upNextContainer"])) { return void showOsd(); @@ -1392,14 +1392,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med case "mouse": if (!e.button) { - if (playerPauseClickTimeout) { - clearTimeout(playerPauseClickTimeout); - playerPauseClickTimeout = 0; + if (playPauseClickTimeout) { + clearTimeout(playPauseClickTimeout); + playPauseClickTimeout = 0; } else { - playerPauseClickTimeout = setTimeout(() => { + playPauseClickTimeout = setTimeout(() => { playbackManager.playPause(currentPlayer); showOsd(); - playerPauseClickTimeout = 0; + playPauseClickTimeout = 0; }, 300); } } From f52075eb261d542b3c81022d6eecfb98b7b93757 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 19 Feb 2020 16:09:00 +0100 Subject: [PATCH 4/5] Remove unnecessary check when clearing playPauseClickTimeout --- src/controllers/playback/videoosd.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 754a214149..7624724fba 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1231,9 +1231,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med shell.disableFullscreen(); }); - if (playPauseClickTimeout) { - clearTimeout(playPauseClickTimeout); - } + clearTimeout(playPauseClickTimeout); var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback); releaseCurrentPlayer(); From 6b2faaed8df0c1d127f1895354bf91776f103287 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 19 Feb 2020 16:54:55 +0100 Subject: [PATCH 5/5] fix linting errors --- src/controllers/playback/videoosd.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 7624724fba..daab8cc9ae 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1223,14 +1223,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med return null; } - + let playPauseClickTimeout; function onViewHideStopPlayback() { if (playbackManager.isPlayingVideo()) { require(['shell'], function (shell) { shell.disableFullscreen(); }); - + clearTimeout(playPauseClickTimeout); var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback);