From 2af0b91dad3b9e15d0a2fb37697eac6a4fe86287 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 17 Sep 2021 01:20:58 +0300 Subject: [PATCH] Reset media source --- src/components/htmlMediaHelper.js | 10 +++++++--- src/plugins/htmlAudioPlayer/plugin.js | 1 + src/plugins/htmlVideoPlayer/plugin.js | 3 +++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/components/htmlMediaHelper.js b/src/components/htmlMediaHelper.js index da53d6a063..82d6d790bc 100644 --- a/src/components/htmlMediaHelper.js +++ b/src/components/htmlMediaHelper.js @@ -185,6 +185,12 @@ import { Events } from 'jellyfin-apiclient'; return Promise.resolve(); } + export function resetSrc(elem) { + elem.src = ''; + elem.innerHTML = ''; + elem.removeAttribute('src'); + } + function onSuccessfulPlay(elem, onErrorFn) { elem.addEventListener('error', onErrorFn); } @@ -344,9 +350,7 @@ import { Events } from 'jellyfin-apiclient'; export function onEndedInternal(instance, elem, onErrorFn) { elem.removeEventListener('error', onErrorFn); - elem.src = ''; - elem.innerHTML = ''; - elem.removeAttribute('src'); + resetSrc(elem); destroyHlsPlayer(instance); destroyFlvPlayer(instance); diff --git a/src/plugins/htmlAudioPlayer/plugin.js b/src/plugins/htmlAudioPlayer/plugin.js index b5fe063b07..baa396dbb8 100644 --- a/src/plugins/htmlAudioPlayer/plugin.js +++ b/src/plugins/htmlAudioPlayer/plugin.js @@ -221,6 +221,7 @@ class HtmlAudioPlayer { self.destroy = function () { unBindEvents(self._mediaElement); + htmlMediaHelper.resetSrc(self._mediaElement); }; function createMediaElement() { diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index f3f9340189..e4692e5971 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -13,6 +13,7 @@ import { getCrossOriginValue, enableHlsJsPlayer, applySrc, + resetSrc, playWithPromise, onEndedInternal, saveVolume, @@ -710,6 +711,8 @@ function tryRemoveElement(elem) { videoElement.removeEventListener('waiting', this.onWaiting); videoElement.removeEventListener('error', this.onError); // bound in htmlMediaHelper + resetSrc(videoElement); + videoElement.parentNode.removeChild(videoElement); }