Skip to content

Commit

Permalink
v2.5.04 - Stop retrying after destroy() has been called.
Browse files Browse the repository at this point in the history
  • Loading branch information
oddengine committed May 1, 2023
1 parent cf28b2a commit 409636b
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/odd.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
odd = function () {
return {
version: '2.5.03',
version: '2.5.04',
};
};

46 changes: 46 additions & 0 deletions src/player/player.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,49 @@
_this.play(_file, _option);
};

_this.destroy = function () {
_model.config.maxRetries = 0;

if (_view) {
_view.destroy();
_view.removeEventListener(Event.READY, _onReady);
_view.removeEventListener(Event.PLAY, _onStateChange);
_view.removeEventListener(Event.WAITING, _onStateChange);
_view.removeEventListener(IOEvent.LOADSTART, _onLoadStart);
_view.removeEventListener(IOEvent.OPEN, _this.forward);
_view.removeEventListener(IOEvent.PROGRESS, _this.forward);
_view.removeEventListener(IOEvent.SUSPEND, _this.forward);
_view.removeEventListener(IOEvent.STALLED, _this.forward);
_view.removeEventListener(IOEvent.ABORT, _this.forward);
_view.removeEventListener(IOEvent.TIMEOUT, _this.forward);
_view.removeEventListener(Event.DURATIONCHANGE, _onDurationChange);
_view.removeEventListener(Event.LOADEDMETADATA, _this.forward);
_view.removeEventListener(Event.LOADEDDATA, _this.forward);
_view.removeEventListener(Event.CANPLAY, _this.forward);
_view.removeEventListener(Event.PLAYING, _onStateChange);
_view.removeEventListener(Event.CANPLAYTHROUGH, _this.forward);
_view.removeEventListener(Event.PAUSE, _onStateChange);
_view.removeEventListener(Event.SEEKING, _onStateChange);
_view.removeEventListener(Event.SEEKED, _this.forward);
_view.removeEventListener(Event.SWITCHING, _onSwitching);
_view.removeEventListener(Event.SWITCHED, _this.forward);
_view.removeEventListener(Event.RATECHANGE, _onRateChange);
_view.removeEventListener(Event.TIMEUPDATE, _onTimeUpdate);
_view.removeEventListener(Event.VOLUMECHANGE, _this.forward);
_view.removeEventListener(IOEvent.LOAD, _this.forward);
_view.removeEventListener(IOEvent.LOADEND, _this.forward);
_view.removeEventListener(MediaEvent.INFOCHANGE, _onInfoChange);
_view.removeEventListener(MediaEvent.STATSUPDATE, _onStatsUpdate);
_view.removeEventListener(MediaEvent.SEI, _this.forward);
_view.removeEventListener(MediaEvent.SCREENSHOT, _this.forward);
_view.removeEventListener(SaverEvent.WRITERSTART, _this.forward);
_view.removeEventListener(SaverEvent.WRITEREND, _this.forward);
_view.removeEventListener(Event.ENDED, _onStateChange);
_view.removeEventListener(Event.ERROR, _onError);
_view = undefined;
}
};

function _onReady(e) {
_logger.log(e.data.kind + ' module is ready.');
_onStateChange(e);
Expand Down Expand Up @@ -177,12 +220,15 @@

function _onStateChange(e) {
var state = _model.state();

// Don't switch from error state to ended.
if (state === e.type || e.type === Event.ENDED && (state === Event.ERROR || _retrying)) {
return;
}

_retrying = false;
_model.state(e.type);

switch (e.type) {
case Event.WAITING:
_stalled++;
Expand Down
4 changes: 2 additions & 2 deletions src/player/player.js
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@
}

_this.destroy = function () {
if (_view) {
_view.destroy();
if (_controller) {
_controller.destroy();
_controller.removeGlobalListener(_this.forward);
}
delete _instances[_this.id];
Expand Down
7 changes: 4 additions & 3 deletions src/player/ui/ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -646,15 +646,16 @@
}

function _onError(e) {
if (!(function () {
// Ignore these specific errors.
if ((function () {
switch (e.data.name) {
case 'SecurityError':
if (e.data.message.indexOf('toDataURL') !== -1) {
return false;
return true;
}
break;
}
return true;
return false;
})()) {
_this.forward(e);
return;
Expand Down

0 comments on commit 409636b

Please sign in to comment.