Loading content/canvas/src/WebGLContextGL.cpp +132 −73 Original line number Diff line number Diff line Loading @@ -2407,13 +2407,11 @@ WebGLContext::name(GLint idx, nsIWebGLArray *v) \ NativeJSContext js; \ if (NS_FAILED(js.error)) \ return js.error; \ jsuint index; \ JSObject *arrayObj; \ jsuint arrayLen; \ if (js.argc != 2 || \ !::JS_ValueToECMAUint32(js.ctx, js.argv[0], &index) || \ !NativeJSContext::JSValToJSArrayAndLength(js.ctx, js.argv[1], &arrayObj, &arrayLen)) \ if (js.argc != 2) \ return NS_ERROR_INVALID_ARG; \ if (NativeJSContext::JSValToJSArrayAndLength(js.ctx, js.argv[1], &arrayObj, &arrayLen)) { \ if (arrayLen % c != 0) { \ return ErrorMessage(#name ": array length not divisible by " #c); \ } \ Loading @@ -2421,7 +2419,32 @@ WebGLContext::name(GLint idx, nsIWebGLArray *v) \ if (!sbuffer.Valid()) \ return NS_ERROR_FAILURE; \ MakeContextCurrent(); \ gl->f##glname(index, arrayLen / c, ( ptrType *)sbuffer.data); \ gl->f##glname(idx, arrayLen / c, ( ptrType *)sbuffer.data); \ } else { \ if (glTypeConst == LOCAL_GL_INT) { \ if (v->NativeType() != LOCAL_GL_INT) { \ return ErrorMessage(#name ": arg not an array"); \ } \ WebGLIntArray *wga = static_cast<WebGLIntArray*>(v); \ if (wga->NativeCount() % c != 0) { \ return ErrorMessage(#name ": array length not divisible by " #c); \ } \ MakeContextCurrent(); \ gl->f##glname(idx, wga->NativeCount() / c, ( ptrType *)wga->NativePointer()); \ } else if (glTypeConst == LOCAL_GL_FLOAT) { \ if (v->NativeType() != LOCAL_GL_FLOAT) { \ return ErrorMessage(#name ": arg not an array"); \ } \ WebGLFloatArray *wga = static_cast<WebGLFloatArray*>(v); \ if (wga->NativeCount() % c != 0) { \ return ErrorMessage(#name ": array length not divisible by " #c); \ } \ MakeContextCurrent(); \ gl->f##glname(idx, wga->NativeCount() / c, ( ptrType *)wga->NativePointer()); \ } else { \ return ErrorMessage("Unhandled glTypeConst"); /* need compiler fail */\ } \ } \ return NS_OK; \ } Loading @@ -2432,21 +2455,44 @@ WebGLContext::name(GLuint idx, nsIWebGLArray *v) \ NativeJSContext js; \ if (NS_FAILED(js.error)) \ return js.error; \ jsuint index; \ JSObject *arrayObj; \ jsuint arrayLen; \ if (js.argc != 2 || \ !::JS_ValueToECMAUint32(js.ctx, js.argv[0], &index) || \ !NativeJSContext::JSValToJSArrayAndLength(js.ctx, js.argv[1], &arrayObj, &arrayLen)) \ if (js.argc != 2) \ return NS_ERROR_INVALID_ARG; \ if (arrayLen != c) { \ if (NativeJSContext::JSValToJSArrayAndLength(js.ctx, js.argv[1], &arrayObj, &arrayLen)) { \ if (arrayLen % c != 0) { \ return ErrorMessage(#name ": array wrong size, expected " #c); \ } \ SimpleBuffer sbuffer(glTypeConst, c, js.ctx, arrayObj, arrayLen); \ if (!sbuffer.Valid()) \ return NS_ERROR_FAILURE; \ MakeContextCurrent(); \ gl->f##glname(index, ( ptrType *)sbuffer.data); \ gl->f##glname(idx, ( ptrType *)sbuffer.data); \ } else { \ if (glTypeConst == LOCAL_GL_INT) { \ if (v->NativeType() != LOCAL_GL_INT) { \ return ErrorMessage(#name ": arg not an array"); \ } \ WebGLIntArray *wga = static_cast<WebGLIntArray*>(v); \ if (wga->NativeCount() % c != 0) { \ return ErrorMessage(#name ": array wrong size %d, expected " #c, wga->NativeCount()); \ } \ MakeContextCurrent(); \ gl->f##glname(idx, ( ptrType *)wga->NativePointer()); \ } else if (glTypeConst == LOCAL_GL_FLOAT) { \ if (v->NativeType() != LOCAL_GL_FLOAT) { \ return ErrorMessage(#name ": arg not an array"); \ } \ WebGLFloatArray *wga = static_cast<WebGLFloatArray*>(v); \ if (wga->NativeCount() % c != 0) { \ return ErrorMessage(#name ": array wrong size %d, expected " #c, wga->NativeCount()); \ } \ MakeContextCurrent(); \ gl->f##glname(idx, ( ptrType *)wga->NativePointer()); \ } else { \ return ErrorMessage("Unhandled glTypeConst"); /* need compiler fail */\ } \ } \ return NS_OK; \ } Loading @@ -2457,21 +2503,34 @@ WebGLContext::name(GLint location, GLboolean transpose, nsIWebGLArray *value) NativeJSContext js; \ if (NS_FAILED(js.error)) \ return js.error; \ jsuint index; \ JSObject *arrayObj; \ jsuint arrayLen; \ if (js.argc != 3 || \ !::JS_ValueToECMAUint32(js.ctx, js.argv[0], &index) || \ !NativeJSContext::JSValToJSArrayAndLength(js.ctx, js.argv[2], &arrayObj, &arrayLen)) \ if (js.argc != 3) \ return NS_ERROR_INVALID_ARG; \ if (arrayLen != c) { \ if (NativeJSContext::JSValToJSArrayAndLength(js.ctx, js.argv[2], &arrayObj, &arrayLen)) { \ if (arrayLen % c != 0) { \ return ErrorMessage(#name ": array wrong size, expected " #c); \ } \ SimpleBuffer sbuffer(glTypeConst, c, js.ctx, arrayObj, arrayLen); \ if (!sbuffer.Valid()) \ return NS_ERROR_FAILURE; \ MakeContextCurrent(); \ gl->f##glname(index, arrayLen / c, transpose, ( ptrType *)sbuffer.data); \ gl->f##glname(location, arrayLen / c, transpose, ( ptrType *)sbuffer.data); \ } else { \ if (glTypeConst == LOCAL_GL_FLOAT) { \ if (value->NativeType() != LOCAL_GL_FLOAT) { \ return ErrorMessage(#name ": arg not an array"); \ } \ WebGLFloatArray *wga = static_cast<WebGLFloatArray*>(value); \ if (wga->NativeCount() % c != 0) { \ return ErrorMessage(#name ": array wrong size %d, expected " #c, wga->NativeCount()); \ } \ MakeContextCurrent(); \ gl->f##glname(location, wga->NativeCount() / c, transpose, ( ptrType *)wga->NativePointer()); \ } else { \ return ErrorMessage("Unhandled glTypeConst"); /* need compiler fail */\ } \ } \ return NS_OK; \ } Loading Loading
content/canvas/src/WebGLContextGL.cpp +132 −73 Original line number Diff line number Diff line Loading @@ -2407,13 +2407,11 @@ WebGLContext::name(GLint idx, nsIWebGLArray *v) \ NativeJSContext js; \ if (NS_FAILED(js.error)) \ return js.error; \ jsuint index; \ JSObject *arrayObj; \ jsuint arrayLen; \ if (js.argc != 2 || \ !::JS_ValueToECMAUint32(js.ctx, js.argv[0], &index) || \ !NativeJSContext::JSValToJSArrayAndLength(js.ctx, js.argv[1], &arrayObj, &arrayLen)) \ if (js.argc != 2) \ return NS_ERROR_INVALID_ARG; \ if (NativeJSContext::JSValToJSArrayAndLength(js.ctx, js.argv[1], &arrayObj, &arrayLen)) { \ if (arrayLen % c != 0) { \ return ErrorMessage(#name ": array length not divisible by " #c); \ } \ Loading @@ -2421,7 +2419,32 @@ WebGLContext::name(GLint idx, nsIWebGLArray *v) \ if (!sbuffer.Valid()) \ return NS_ERROR_FAILURE; \ MakeContextCurrent(); \ gl->f##glname(index, arrayLen / c, ( ptrType *)sbuffer.data); \ gl->f##glname(idx, arrayLen / c, ( ptrType *)sbuffer.data); \ } else { \ if (glTypeConst == LOCAL_GL_INT) { \ if (v->NativeType() != LOCAL_GL_INT) { \ return ErrorMessage(#name ": arg not an array"); \ } \ WebGLIntArray *wga = static_cast<WebGLIntArray*>(v); \ if (wga->NativeCount() % c != 0) { \ return ErrorMessage(#name ": array length not divisible by " #c); \ } \ MakeContextCurrent(); \ gl->f##glname(idx, wga->NativeCount() / c, ( ptrType *)wga->NativePointer()); \ } else if (glTypeConst == LOCAL_GL_FLOAT) { \ if (v->NativeType() != LOCAL_GL_FLOAT) { \ return ErrorMessage(#name ": arg not an array"); \ } \ WebGLFloatArray *wga = static_cast<WebGLFloatArray*>(v); \ if (wga->NativeCount() % c != 0) { \ return ErrorMessage(#name ": array length not divisible by " #c); \ } \ MakeContextCurrent(); \ gl->f##glname(idx, wga->NativeCount() / c, ( ptrType *)wga->NativePointer()); \ } else { \ return ErrorMessage("Unhandled glTypeConst"); /* need compiler fail */\ } \ } \ return NS_OK; \ } Loading @@ -2432,21 +2455,44 @@ WebGLContext::name(GLuint idx, nsIWebGLArray *v) \ NativeJSContext js; \ if (NS_FAILED(js.error)) \ return js.error; \ jsuint index; \ JSObject *arrayObj; \ jsuint arrayLen; \ if (js.argc != 2 || \ !::JS_ValueToECMAUint32(js.ctx, js.argv[0], &index) || \ !NativeJSContext::JSValToJSArrayAndLength(js.ctx, js.argv[1], &arrayObj, &arrayLen)) \ if (js.argc != 2) \ return NS_ERROR_INVALID_ARG; \ if (arrayLen != c) { \ if (NativeJSContext::JSValToJSArrayAndLength(js.ctx, js.argv[1], &arrayObj, &arrayLen)) { \ if (arrayLen % c != 0) { \ return ErrorMessage(#name ": array wrong size, expected " #c); \ } \ SimpleBuffer sbuffer(glTypeConst, c, js.ctx, arrayObj, arrayLen); \ if (!sbuffer.Valid()) \ return NS_ERROR_FAILURE; \ MakeContextCurrent(); \ gl->f##glname(index, ( ptrType *)sbuffer.data); \ gl->f##glname(idx, ( ptrType *)sbuffer.data); \ } else { \ if (glTypeConst == LOCAL_GL_INT) { \ if (v->NativeType() != LOCAL_GL_INT) { \ return ErrorMessage(#name ": arg not an array"); \ } \ WebGLIntArray *wga = static_cast<WebGLIntArray*>(v); \ if (wga->NativeCount() % c != 0) { \ return ErrorMessage(#name ": array wrong size %d, expected " #c, wga->NativeCount()); \ } \ MakeContextCurrent(); \ gl->f##glname(idx, ( ptrType *)wga->NativePointer()); \ } else if (glTypeConst == LOCAL_GL_FLOAT) { \ if (v->NativeType() != LOCAL_GL_FLOAT) { \ return ErrorMessage(#name ": arg not an array"); \ } \ WebGLFloatArray *wga = static_cast<WebGLFloatArray*>(v); \ if (wga->NativeCount() % c != 0) { \ return ErrorMessage(#name ": array wrong size %d, expected " #c, wga->NativeCount()); \ } \ MakeContextCurrent(); \ gl->f##glname(idx, ( ptrType *)wga->NativePointer()); \ } else { \ return ErrorMessage("Unhandled glTypeConst"); /* need compiler fail */\ } \ } \ return NS_OK; \ } Loading @@ -2457,21 +2503,34 @@ WebGLContext::name(GLint location, GLboolean transpose, nsIWebGLArray *value) NativeJSContext js; \ if (NS_FAILED(js.error)) \ return js.error; \ jsuint index; \ JSObject *arrayObj; \ jsuint arrayLen; \ if (js.argc != 3 || \ !::JS_ValueToECMAUint32(js.ctx, js.argv[0], &index) || \ !NativeJSContext::JSValToJSArrayAndLength(js.ctx, js.argv[2], &arrayObj, &arrayLen)) \ if (js.argc != 3) \ return NS_ERROR_INVALID_ARG; \ if (arrayLen != c) { \ if (NativeJSContext::JSValToJSArrayAndLength(js.ctx, js.argv[2], &arrayObj, &arrayLen)) { \ if (arrayLen % c != 0) { \ return ErrorMessage(#name ": array wrong size, expected " #c); \ } \ SimpleBuffer sbuffer(glTypeConst, c, js.ctx, arrayObj, arrayLen); \ if (!sbuffer.Valid()) \ return NS_ERROR_FAILURE; \ MakeContextCurrent(); \ gl->f##glname(index, arrayLen / c, transpose, ( ptrType *)sbuffer.data); \ gl->f##glname(location, arrayLen / c, transpose, ( ptrType *)sbuffer.data); \ } else { \ if (glTypeConst == LOCAL_GL_FLOAT) { \ if (value->NativeType() != LOCAL_GL_FLOAT) { \ return ErrorMessage(#name ": arg not an array"); \ } \ WebGLFloatArray *wga = static_cast<WebGLFloatArray*>(value); \ if (wga->NativeCount() % c != 0) { \ return ErrorMessage(#name ": array wrong size %d, expected " #c, wga->NativeCount()); \ } \ MakeContextCurrent(); \ gl->f##glname(location, wga->NativeCount() / c, transpose, ( ptrType *)wga->NativePointer()); \ } else { \ return ErrorMessage("Unhandled glTypeConst"); /* need compiler fail */\ } \ } \ return NS_OK; \ } Loading