diff --git a/airsonic-main/src/main/webapp/WEB-INF/jsp/playQueue.jsp b/airsonic-main/src/main/webapp/WEB-INF/jsp/playQueue.jsp
index 63f61f7c3..859e8c445 100644
--- a/airsonic-main/src/main/webapp/WEB-INF/jsp/playQueue.jsp
+++ b/airsonic-main/src/main/webapp/WEB-INF/jsp/playQueue.jsp
@@ -62,6 +62,9 @@
// Initialize the Cast player (ChromeCast support)
var CastPlayer = new CastPlayer();
+ // silent and empty sound, set when audio media player is stopped
+ const silentSound = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';
+
function init() {
initAutoHide();
@@ -253,6 +256,7 @@
ok = confirm("");
if (ok) {
+ onStopMediaElementPlayer();
playQueueService.clear(playQueueCallback);
}
}
@@ -288,6 +292,29 @@
}
}
+ /**
+ * Stop HTML audio player and set silet audio as src attribute
+ */
+ function onStopMediaElementPlayer() {
+ var mediaElementPlayer = getMediaElementPlayer();
+ if (mediaElementPlayer) {
+ mediaElementPlayer.pause();
+ mediaElementPlayer.currentTime = 0;
+ setTimeout(function() {
+ mediaElementPlayer.src = silentSound;
+ playQueueService.stop(playQueueCallback);
+ }, 100);
+
+ }
+ }
+
+ function isMediaElementPlayerStopped() {
+ var mediaElementPlayer = getMediaElementPlayer();
+ if (mediaElementPlayer) {
+ return mediaElementPlayer.src == silentSound;
+ }
+ }
+
/**
* Toggle play/pause
*
@@ -427,6 +454,9 @@
onStar(getCurrentSongIndex());
}
function onRemove(index) {
+ if (index == getCurrentSongIndex()) {
+ onStopMediaElementPlayer();
+ }
playQueueService.remove(index, playQueueCallback);
}
function onRemoveSelected() {
@@ -436,6 +466,9 @@
var index = i + 1;
if ($("#songIndex" + index).is(":checked")) {
indexes[counter++] = i;
+ if (i == getCurrentSongIndex()) {
+ onStopMediaElementPlayer();
+ }
}
}
playQueueService.removeMany(indexes, playQueueCallback);
@@ -509,7 +542,11 @@
function playQueueCallback(playQueue) {
songs = playQueue.entries;
- currentSongIndex = playQueue.index;
+ if (isMediaElementPlayerStopped()) {
+ currentSongIndex = -1;
+ } else {
+ currentSongIndex = playQueue.index;
+ }
repeatEnabled = playQueue.repeatEnabled;
shuffleRadioEnabled = playQueue.shuffleRadioEnabled;
internetRadioEnabled = playQueue.internetRadioEnabled;