Skip to content

Commit

Permalink
Don't change volume if it is physically controlled
Browse files Browse the repository at this point in the history
  • Loading branch information
dmitrylyzo committed Jun 27, 2024
1 parent 21ced03 commit bc8b83b
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 6 deletions.
14 changes: 10 additions & 4 deletions src/components/playback/playbackmanager.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 () {
Expand Down Expand Up @@ -1157,31 +1161,33 @@ class PlaybackManager {
self.setVolume = function (val, player) {
player = player || self._currentPlayer;

if (player) {
if (player && !supportsPhysicalVolumeControl(player)) {
player.setVolume(val);
}
};

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();
}
};

self.volumeDown = function (player) {
player = player || self._currentPlayer;

if (player) {
if (player && !supportsPhysicalVolumeControl(player)) {
player.volumeDown();
}
};
Expand Down
5 changes: 4 additions & 1 deletion src/plugins/htmlAudioPlayer/plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
6 changes: 5 additions & 1 deletion src/plugins/htmlVideoPlayer/plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit bc8b83b

Please sign in to comment.