diff options
author | Alon Zakai <alonzakai@gmail.com> | 2014-06-09 17:35:53 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2014-06-09 17:35:53 -0700 |
commit | 7720b61e331117571ca806a8deaa12a616831335 (patch) | |
tree | 838555eedae644a9fa2ea6e51aa87467a3f27703 /src/webGLClient.js | |
parent | b44981ad9e2e792b31acb5d18ec17685bb8b156b (diff) |
fix fixArgs return value
Diffstat (limited to 'src/webGLClient.js')
-rw-r--r-- | src/webGLClient.js | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/webGLClient.js b/src/webGLClient.js index 2028d1dc..535e8102 100644 --- a/src/webGLClient.js +++ b/src/webGLClient.js @@ -1,5 +1,9 @@ // WebGLWorker client code +function assert(x) { + if (!x) throw 'failed assert'; +} + function WebGLClient() { var objects = {}; @@ -15,20 +19,26 @@ function WebGLClient() { case 'attachShader': args[0] = objects[args[0]]; args[1] = objects[args[1]]; break; case 'bindBuffer': args[1] = objects[args[1]]; break; } + return args; } function renderCommands(buffer) { var ctx = Module.ctx; var i = 0; var len = buffer.length; + //dump('issuing commands, buffer len: ' + len + '\n'); while (i < len) { var command = buffer[i++]; + assert(typeof command === 'string') var numArgs = buffer[i++]; + //dump('issue ' + [command, numArgs, 'peek:' + buffer.slice(i, i+5)] + '\n'); if (numArgs === 0) { + //dump('issue: ' + command + '\n'); ctx[command](); } else if (numArgs > 0) { var args = fixArgs(command, buffer.slice(i, i+numArgs)); i += numArgs; + //dump('issue+: ' + command + '(' + args + '), ' + numArgs + '\n'); ctx[command].apply(ctx, args); } else { // negative means a constructor, last argument is the id to save as @@ -36,8 +46,10 @@ function WebGLClient() { var args = fixArgs(command, buffer.slice(i, i+numArgs)); i += numArgs; var id = buffer[i++]; + //dump('issue-: ' + command + '(' + args + '), ' + numArgs + '\n'); objects[id] = ctx[command].apply(ctx, args); } + assert(i <= len); } } |