From 85db7f209976c12d0dafac7c9889c5d3f7fc04e6 Mon Sep 17 00:00:00 2001 From: odedhutzler Date: Wed, 25 Oct 2017 16:21:19 +0300 Subject: [PATCH 1/4] bug fix --- src/player.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/player.js b/src/player.js index a3694a297..903200fa7 100644 --- a/src/player.js +++ b/src/player.js @@ -997,6 +997,12 @@ export default class Player extends FakeEventTarget { return this.dispatchEvent(event); }); }); + this._eventManager.listen(this._engine, Html5Events.SEEKED, () => { + const browser = this._env.browser.name; + if ( browser === 'Edge' || browser === 'IE'){ + this._removeCueTextPatch(); + } + }); this._eventManager.listen(this._engine, CustomEvents.VIDEO_TRACK_CHANGED, (event: FakeEvent) => { this._markActiveTrack(event.payload.selectedVideoTrack); return this.dispatchEvent(event); @@ -1016,6 +1022,25 @@ export default class Player extends FakeEventTarget { } } + /** + * Handles the cue text removal issue, when seeking to a time without captions in IE \ edge the previous captions + * are not removed + * @returns {void} + * @private + */ +_removeCueTextPatch(): void { + const textCue = this._activeTextCues; + if (textCue.length > 0) { + const cueEndTime = textCue[0]._endTime; + const cueStartTime = textCue[0]._startTime; + const currTime = this.currentTime; + if (currTime > cueEndTime || currTime < cueStartTime) { + processCues(window, [], this._textDisplayEl); + } + } + +} + /** * Handles the playback config. * @returns {void} From eb45993502ad7ea13b0a4d95de91bd0481210026 Mon Sep 17 00:00:00 2001 From: odedhutzler Date: Wed, 25 Oct 2017 17:02:10 +0300 Subject: [PATCH 2/4] changing to public vars --- src/player.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/player.js b/src/player.js index 413f60d4d..ed3cf7577 100644 --- a/src/player.js +++ b/src/player.js @@ -1059,8 +1059,8 @@ export default class Player extends FakeEventTarget { _removeCueTextPatch(): void { const textCue = this._activeTextCues; if (textCue.length > 0) { - const cueEndTime = textCue[0]._endTime; - const cueStartTime = textCue[0]._startTime; + const cueEndTime = textCue[0].endTime; + const cueStartTime = textCue[0].startTime; const currTime = this.currentTime; if (currTime > cueEndTime || currTime < cueStartTime) { processCues(window, [], this._textDisplayEl); From ad6bf4d807fb2c6ec25ff25b467d525971269c26 Mon Sep 17 00:00:00 2001 From: odedhutzler Date: Wed, 25 Oct 2017 17:37:25 +0300 Subject: [PATCH 3/4] changing back to private vars & iterating through the cue array --- src/player.js | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/player.js b/src/player.js index ed3cf7577..bc396a30b 100644 --- a/src/player.js +++ b/src/player.js @@ -1016,8 +1016,8 @@ export default class Player extends FakeEventTarget { }); this._eventManager.listen(this._engine, Html5Events.SEEKED, () => { const browser = this._env.browser.name; - if ( browser === 'Edge' || browser === 'IE'){ - this._removeCueTextPatch(); + if (browser === 'Edge' || browser === 'IE') { + this._removeTextCuePatch(); } }); this._eventManager.listen(this._engine, CustomEvents.VIDEO_TRACK_CHANGED, (event: FakeEvent) => { @@ -1056,19 +1056,17 @@ export default class Player extends FakeEventTarget { * @returns {void} * @private */ -_removeCueTextPatch(): void { - const textCue = this._activeTextCues; - if (textCue.length > 0) { - const cueEndTime = textCue[0].endTime; - const cueStartTime = textCue[0].startTime; - const currTime = this.currentTime; - if (currTime > cueEndTime || currTime < cueStartTime) { - processCues(window, [], this._textDisplayEl); - } + _removeTextCuePatch(): void { + this._activeTextCues.forEach((textCue) => { + const cueEndTime = textCue._endTime; + const cueStartTime = textCue._startTime; + const currTime = this.currentTime; + if (currTime > cueEndTime || currTime < cueStartTime) { + processCues(window, [], this._textDisplayEl); + } + }) } -} - /** * Handles the playback options, from current state or config. * @returns {void} From 3cca3da30653f199152cf08d3f1dd556f4dfefb1 Mon Sep 17 00:00:00 2001 From: odedhutzler Date: Wed, 25 Oct 2017 18:32:25 +0300 Subject: [PATCH 4/4] filtering instead of iterating --- src/player.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/player.js b/src/player.js index 2bbd5bbcc..9842ade6a 100644 --- a/src/player.js +++ b/src/player.js @@ -1109,14 +1109,15 @@ export default class Player extends FakeEventTarget { * @private */ _removeTextCuePatch(): void { - this._activeTextCues.forEach((textCue) => { + let filteredActiveTextCues = this._activeTextCues.filter((textCue) => { const cueEndTime = textCue._endTime; const cueStartTime = textCue._startTime; const currTime = this.currentTime; - if (currTime > cueEndTime || currTime < cueStartTime) { - processCues(window, [], this._textDisplayEl); + if (currTime < cueEndTime && currTime > cueStartTime) { + return textCue; } - }) + }); + this._updateTextDisplay(filteredActiveTextCues); } /**