From 23d7d41e9f0d67d2178abdb31a7dc26ff3156966 Mon Sep 17 00:00:00 2001 From: Karl Chen Date: Mon, 1 Jul 2019 19:24:10 +0800 Subject: [PATCH] fix destroy logic --- src/js/player.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/js/player.js b/src/js/player.js index 312c710..ffafa40 100644 --- a/src/js/player.js +++ b/src/js/player.js @@ -346,6 +346,9 @@ class DPlayer { const hls = new Hls(); hls.loadSource(video.src); hls.attachMedia(video); + this.events.on('destroy', () => { + hls.destroy(); + }); } else { this.notice('Error: Hls is not supported.'); @@ -358,7 +361,7 @@ class DPlayer { // https://github.com/Bilibili/flv.js case 'flv': - if (flvjs && flvjs.isSupported()) { + if (flvjs) { if (flvjs.isSupported()) { const flvPlayer = flvjs.createPlayer({ type: 'flv', @@ -366,6 +369,11 @@ class DPlayer { }); flvPlayer.attachMediaElement(video); flvPlayer.load(); + this.events.on('destroy', () => { + flvPlayer.unload(); + flvPlayer.detachMediaElement(); + flvPlayer.destroy(); + }); } else { this.notice('Error: flvjs is not supported.'); @@ -380,6 +388,9 @@ class DPlayer { case 'dash': if (dashjs) { dashjs.MediaPlayer().create().initialize(video, video.src, false); + this.events.on('destroy', () => { + dashjs.MediaPlayer().reset(); + }); } else { this.notice('Error: Can\'t find dashjs.'); @@ -401,6 +412,10 @@ class DPlayer { this.container.classList.remove('dplayer-loading'); }); }); + this.events.on('destroy', () => { + client.remove(torrentId); + client.destroy(); + }); } else { this.notice('Error: Webtorrent is not supported.');