From bc8b83be5e1bac64fd3f1720ba45a4d34188de8a Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 25 Jun 2024 22:56:50 +0300 Subject: [PATCH] Don't change volume if it is physically controlled --- src/components/playback/playbackmanager.js | 14 ++++++++++---- src/plugins/htmlAudioPlayer/plugin.js | 5 ++++- src/plugins/htmlVideoPlayer/plugin.js | 6 +++++- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 676d1df1c3f..a848416b52a 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -33,6 +33,10 @@ function enableLocalPlaylistManagement(player) { return player.isLocalPlayer; } +function supportsPhysicalVolumeControl(player) { + return player.isLocalPlayer && appHost.supports('physicalvolumecontrol'); +} + function bindToFullscreenChange(player) { if (Screenfull.isEnabled) { Screenfull.on('change', function () { @@ -1157,7 +1161,7 @@ class PlaybackManager { self.setVolume = function (val, player) { player = player || self._currentPlayer; - if (player) { + if (player && !supportsPhysicalVolumeControl(player)) { player.setVolume(val); } }; @@ -1165,15 +1169,17 @@ class PlaybackManager { self.getVolume = function (player) { player = player || self._currentPlayer; - if (player) { + if (player && !supportsPhysicalVolumeControl(player)) { return player.getVolume(); } + + return 1; }; self.volumeUp = function (player) { player = player || self._currentPlayer; - if (player) { + if (player && !supportsPhysicalVolumeControl(player)) { player.volumeUp(); } }; @@ -1181,7 +1187,7 @@ class PlaybackManager { self.volumeDown = function (player) { player = player || self._currentPlayer; - if (player) { + if (player && !supportsPhysicalVolumeControl(player)) { player.volumeDown(); } }; diff --git a/src/plugins/htmlAudioPlayer/plugin.js b/src/plugins/htmlAudioPlayer/plugin.js index ee226ebcc2b..34b573317d4 100644 --- a/src/plugins/htmlAudioPlayer/plugin.js +++ b/src/plugins/htmlAudioPlayer/plugin.js @@ -263,7 +263,10 @@ class HtmlAudioPlayer { document.body.appendChild(elem); } - elem.volume = htmlMediaHelper.getSavedVolume(); + // TODO: Move volume control to PlaybackManager. Player should just be a wrapper that translates commands into API calls. + if (!appHost.supports('physicalvolumecontrol')) { + elem.volume = htmlMediaHelper.getSavedVolume(); + } self._mediaElement = elem; diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 5885147cb03..5c536e7e11a 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1584,7 +1584,11 @@ export class HtmlVideoPlayer { playerDlg.innerHTML = html; const videoElement = playerDlg.querySelector('video'); - videoElement.volume = getSavedVolume(); + // TODO: Move volume control to PlaybackManager. Player should just be a wrapper that translates commands into API calls. + if (!appHost.supports('physicalvolumecontrol')) { + videoElement.volume = getSavedVolume(); + } + videoElement.addEventListener('timeupdate', this.onTimeUpdate); videoElement.addEventListener('ended', this.onEnded); videoElement.addEventListener('volumechange', this.onVolumeChange);