Skip to content

Commit 409636b

Browse files
committed
v2.5.04 - Stop retrying after destroy() has been called.
1 parent cf28b2a commit 409636b

File tree

4 files changed

+53
-6
lines changed

4 files changed

+53
-6
lines changed

src/odd.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
odd = function () {
22
return {
3-
version: '2.5.03',
3+
version: '2.5.04',
44
};
55
};
66

src/player/player.controller.js

+46
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,49 @@
8989
_this.play(_file, _option);
9090
};
9191

92+
_this.destroy = function () {
93+
_model.config.maxRetries = 0;
94+
95+
if (_view) {
96+
_view.destroy();
97+
_view.removeEventListener(Event.READY, _onReady);
98+
_view.removeEventListener(Event.PLAY, _onStateChange);
99+
_view.removeEventListener(Event.WAITING, _onStateChange);
100+
_view.removeEventListener(IOEvent.LOADSTART, _onLoadStart);
101+
_view.removeEventListener(IOEvent.OPEN, _this.forward);
102+
_view.removeEventListener(IOEvent.PROGRESS, _this.forward);
103+
_view.removeEventListener(IOEvent.SUSPEND, _this.forward);
104+
_view.removeEventListener(IOEvent.STALLED, _this.forward);
105+
_view.removeEventListener(IOEvent.ABORT, _this.forward);
106+
_view.removeEventListener(IOEvent.TIMEOUT, _this.forward);
107+
_view.removeEventListener(Event.DURATIONCHANGE, _onDurationChange);
108+
_view.removeEventListener(Event.LOADEDMETADATA, _this.forward);
109+
_view.removeEventListener(Event.LOADEDDATA, _this.forward);
110+
_view.removeEventListener(Event.CANPLAY, _this.forward);
111+
_view.removeEventListener(Event.PLAYING, _onStateChange);
112+
_view.removeEventListener(Event.CANPLAYTHROUGH, _this.forward);
113+
_view.removeEventListener(Event.PAUSE, _onStateChange);
114+
_view.removeEventListener(Event.SEEKING, _onStateChange);
115+
_view.removeEventListener(Event.SEEKED, _this.forward);
116+
_view.removeEventListener(Event.SWITCHING, _onSwitching);
117+
_view.removeEventListener(Event.SWITCHED, _this.forward);
118+
_view.removeEventListener(Event.RATECHANGE, _onRateChange);
119+
_view.removeEventListener(Event.TIMEUPDATE, _onTimeUpdate);
120+
_view.removeEventListener(Event.VOLUMECHANGE, _this.forward);
121+
_view.removeEventListener(IOEvent.LOAD, _this.forward);
122+
_view.removeEventListener(IOEvent.LOADEND, _this.forward);
123+
_view.removeEventListener(MediaEvent.INFOCHANGE, _onInfoChange);
124+
_view.removeEventListener(MediaEvent.STATSUPDATE, _onStatsUpdate);
125+
_view.removeEventListener(MediaEvent.SEI, _this.forward);
126+
_view.removeEventListener(MediaEvent.SCREENSHOT, _this.forward);
127+
_view.removeEventListener(SaverEvent.WRITERSTART, _this.forward);
128+
_view.removeEventListener(SaverEvent.WRITEREND, _this.forward);
129+
_view.removeEventListener(Event.ENDED, _onStateChange);
130+
_view.removeEventListener(Event.ERROR, _onError);
131+
_view = undefined;
132+
}
133+
};
134+
92135
function _onReady(e) {
93136
_logger.log(e.data.kind + ' module is ready.');
94137
_onStateChange(e);
@@ -177,12 +220,15 @@
177220

178221
function _onStateChange(e) {
179222
var state = _model.state();
223+
180224
// Don't switch from error state to ended.
181225
if (state === e.type || e.type === Event.ENDED && (state === Event.ERROR || _retrying)) {
182226
return;
183227
}
228+
184229
_retrying = false;
185230
_model.state(e.type);
231+
186232
switch (e.type) {
187233
case Event.WAITING:
188234
_stalled++;

src/player/player.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@
8989
}
9090

9191
_this.destroy = function () {
92-
if (_view) {
93-
_view.destroy();
92+
if (_controller) {
93+
_controller.destroy();
9494
_controller.removeGlobalListener(_this.forward);
9595
}
9696
delete _instances[_this.id];

src/player/ui/ui.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -646,15 +646,16 @@
646646
}
647647

648648
function _onError(e) {
649-
if (!(function () {
649+
// Ignore these specific errors.
650+
if ((function () {
650651
switch (e.data.name) {
651652
case 'SecurityError':
652653
if (e.data.message.indexOf('toDataURL') !== -1) {
653-
return false;
654+
return true;
654655
}
655656
break;
656657
}
657-
return true;
658+
return false;
658659
})()) {
659660
_this.forward(e);
660661
return;

0 commit comments

Comments
 (0)