diff options
author | Michael Onikienko <michael.onikienko@gmail.com> | 2015-05-07 14:46:44 +0300 |
---|---|---|
committer | Michael Onikienko <michael.onikienko@gmail.com> | 2015-05-07 14:46:44 +0300 |
commit | b3e5bb8286daf453006004b519f4fd027733d5fc (patch) | |
tree | d61ee4a26e6286d91a1b60e27547e7a5fd0b7aaa | |
parent | 6f6ac891aad8bcce79fb803005b28c809a8359cc (diff) | |
download | chiptune2.js-b3e5bb8286daf453006004b519f4fd027733d5fc.zip chiptune2.js-b3e5bb8286daf453006004b519f4fd027733d5fc.tar.gz chiptune2.js-b3e5bb8286daf453006004b519f4fd027733d5fc.tar.bz2 |
handle openmpt error
-rw-r--r-- | js/chiptune2.js | 5 |
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; |