aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2014-06-23 13:49:20 -0700
committerAlon Zakai <alonzakai@gmail.com>2014-06-23 13:49:20 -0700
commitdae6f04e8fe90f2ca8dbf2f426ac14e4dc86f519 (patch)
tree8a0970a71cbf98fadc3efbcc6d7fcf46a66b15c4
parent704fbb93cb402a3255bfbfa8e8f41c6618cfe637 (diff)
simplify delete proxying logic
-rw-r--r--src/webGLClient.js31
1 files changed, 14 insertions, 17 deletions
diff --git a/src/webGLClient.js b/src/webGLClient.js
index 2d077969..25938398 100644
--- a/src/webGLClient.js
+++ b/src/webGLClient.js
@@ -64,6 +64,14 @@ function WebGLClient() {
objects[id] = object;
}
+ // destructors, stop holding on to the object in the cache
+ function funcD0(name) {
+ var id = buffer[i++];
+ var object = objects[id];
+ objects[id] = null;
+ ctx[name](object);
+ }
+
var calls = {
0: { name: 'NULL', func: func0 },
1: { name: 'getExtension', func: func1 },
@@ -72,11 +80,11 @@ function WebGLClient() {
4: { name: 'clear', func: func1 },
5: { name: 'clearColor', func: func4 },
6: { name: 'createShader', func: funcC1 },
- 7: { name: 'deleteShader', func: func1 },
+ 7: { name: 'deleteShader', func: funcD0 },
8: { name: 'shaderSource', func: func2 },
9: { name: 'compileShader', func: func1 },
10: { name: 'createProgram', func: funcC0 },
- 11: { name: 'deleteProgram', func: func1 },
+ 11: { name: 'deleteProgram', func: funcD0 },
12: { name: 'attachShader', func: func2 },
13: { name: 'bindAttribLocation', func: func3 },
14: { name: 'linkProgram', func: func1 },
@@ -90,7 +98,7 @@ function WebGLClient() {
22: { name: 'uniformMatrix4fv', func: func3 },
23: { name: 'vertexAttrib4fv', func: func2 },
24: { name: 'createBuffer', func: funcC0 },
- 25: { name: 'deleteBuffer', func: func1 },
+ 25: { name: 'deleteBuffer', func: funcD0 },
26: { name: 'bindBuffer', func: func2 },
27: { name: 'bufferData', func: func3 },
28: { name: 'bufferSubData', func: func3 },
@@ -102,7 +110,7 @@ function WebGLClient() {
34: { name: 'drawElements', func: func4 },
35: { name: 'getError', func: function() { assert(ctx.getError() === ctx.NO_ERROR, 'we cannot handle errors, we are async proxied WebGL') } },
36: { name: 'createTexture', func: funcC0 },
- 37: { name: 'deleteTexture', func: func1 },
+ 37: { name: 'deleteTexture', func: funcD0 },
38: { name: 'bindTexture', func: func2 },
39: { name: 'texParameteri', func: func3 },
40: { name: 'texImage2D', func: func9 },
@@ -121,11 +129,11 @@ function WebGLClient() {
53: { name: 'colorMask', func: func4 },
54: { name: 'lineWidth', func: func1 },
55: { name: 'createFramebuffer', func: funcC0 },
- 56: { name: 'deleteFramebuffer', func: func1 },
+ 56: { name: 'deleteFramebuffer', func: funcD0 },
57: { name: 'bindFramebuffer', func: func2 },
58: { name: 'framebufferTexture2D', func: func5 },
59: { name: 'createRenderbuffer', func: funcC0 },
- 60: { name: 'deleteRenderbuffer', func: func1 },
+ 60: { name: 'deleteRenderbuffer', func: funcD0 },
61: { name: 'bindRenderbuffer', func: func2 },
62: { name: 'renderbufferStorage', func: func4 },
63: { name: 'framebufferRenderbuffer', func: func4 },
@@ -134,17 +142,6 @@ function WebGLClient() {
function fixArgs(name, args) {
switch (name) {
- case 'deleteFramebuffer':
- case 'deleteRenderbuffer':
- case 'deleteBuffer':
- case 'deleteShader':
- case 'deleteProgram':
- case 'deleteTexture': {
- var id = buffer[i];
- buffer[i] = objects[id];
- objects[id] = null; // stop holding on to the object globally
- break;
- }
case 'getProgramParameter':
case 'getShaderParameter':
case 'uniform1i':