summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Onikienko <michael.onikienko@gmail.com>2015-05-07 14:46:44 +0300
committerMichael Onikienko <michael.onikienko@gmail.com>2015-05-07 14:46:44 +0300
commitb3e5bb8286daf453006004b519f4fd027733d5fc (patch)
treed61ee4a26e6286d91a1b60e27547e7a5fd0b7aaa
parent6f6ac891aad8bcce79fb803005b28c809a8359cc (diff)
downloadchiptune2.js-b3e5bb8286daf453006004b519f4fd027733d5fc.zip
chiptune2.js-b3e5bb8286daf453006004b519f4fd027733d5fc.tar.gz
chiptune2.js-b3e5bb8286daf453006004b519f4fd027733d5fc.tar.bz2
handle openmpt error
-rw-r--r--js/chiptune2.js5
1 files changed, 4 insertions, 1 deletions
diff --git a/js/chiptune2.js b/js/chiptune2.js
index 6204e28..e929d8b 100644
--- a/js/chiptune2.js
+++ b/js/chiptune2.js
@@ -173,11 +173,14 @@ ChiptuneJsPlayer.prototype.createLibopenmptNode = function(buffer, config) {
}
var framesRendered = 0;
var ended = false;
+ var error = false;
while (framesToRender > 0) {
var framesPerChunk = Math.min(framesToRender, maxFramesPerChunk);
var actualFramesPerChunk = Module._openmpt_module_read_float_stereo(this.modulePtr, this.context.sampleRate, framesPerChunk, this.leftBufferPtr, this.rightBufferPtr);
if (actualFramesPerChunk == 0) {
ended = true;
+ // modulePtr will be 0 on openmpt: error: openmpt_module_read_float_stereo: ERROR: module * not valid or other openmpt error
+ error = !this.modulePtr;
}
var rawAudioLeft = Module.HEAPF32.subarray(this.leftBufferPtr / 4, this.leftBufferPtr / 4 + actualFramesPerChunk);
var rawAudioRight = Module.HEAPF32.subarray(this.rightBufferPtr / 4, this.rightBufferPtr / 4 + actualFramesPerChunk);
@@ -195,7 +198,7 @@ ChiptuneJsPlayer.prototype.createLibopenmptNode = function(buffer, config) {
if (ended) {
this.disconnect();
this.cleanup();
- processNode.player.fireEvent('onEnded');
+ error ? processNode.player.fireEvent('onError', {type: 'openmpt'}) : processNode.player.fireEvent('onEnded');
}
}
return processNode;