diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 611240be3e..eeef1d5181 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -675,14 +675,14 @@ function tryRemoveElement(elem) { } onEndedInternal(this, elem, this.onError); - - if (destroyPlayer) { - this.destroy(); - } } this.destroyCustomTrack(elem); + if (destroyPlayer) { + this.destroy(); + } + return Promise.resolve(); } @@ -1062,7 +1062,13 @@ function tryRemoveElement(elem) { workerUrl: `${appRouter.baseUrl()}/libraries/subtitles-octopus-worker.js`, legacyWorkerUrl: `${appRouter.baseUrl()}/libraries/subtitles-octopus-worker-legacy.js`, onError() { - onErrorInternal(htmlVideoPlayer, 'mediadecodeerror'); + // HACK: Clear JavascriptSubtitlesOctopus: it gets disposed when an error occurs + htmlVideoPlayer.#currentSubtitlesOctopus = null; + + // HACK: Give JavascriptSubtitlesOctopus time to dispose itself + setTimeout(() => { + onErrorInternal(htmlVideoPlayer, 'mediadecodeerror'); + }, 0); }, timeOffset: (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000,