Loading opengl/tools/glgen/src/JniCodeEmitter.java +32 −6 Original line number Diff line number Diff line Loading @@ -939,10 +939,13 @@ public class JniCodeEmitter { // Emit a single _array or multiple _XXXArray variables if (numBufferArgs == 1) { out.println(indent + "jarray _array = (jarray) 0;"); out.println(indent + "jint _bufferOffset = (jint) 0;"); } else { for (int i = 0; i < numBufferArgs; i++) { out.println(indent + "jarray _" + bufferArgNames.get(i) + "Array = (jarray) 0;"); out.println(indent + "jint _" + bufferArgNames.get(i) + "BufferOffset = (jint) 0;"); } } if (!isVoid) { Loading Loading @@ -1075,7 +1078,6 @@ public class JniCodeEmitter { // Emit 'GetPrimitiveArrayCritical' for non-object arrays // Emit 'GetPointer' calls for Buffer pointers int bufArgIdx = 0; if (nonPrimitiveArgs.size() > 0) { for (int i = 0; i < nonPrimitiveArgs.size(); i++) { int idx = nonPrimitiveArgs.get(i).intValue(); Loading Loading @@ -1168,7 +1170,9 @@ public class JniCodeEmitter { out.println(); } else if (jfunc.getArgType(idx).isBuffer()) { String array = numBufferArgs <= 1 ? "_array" : "_" + bufferArgNames.get(bufArgIdx++) + "Array"; "_" + cfunc.getArgName(cIndex) + "Array"; String bufferOffset = numBufferArgs <= 1 ? "_bufferOffset" : "_" + cfunc.getArgName(cIndex) + "BufferOffset"; boolean nullAllowed = isNullAllowed(cfunc) || isPointerFunc; if (nullAllowed) { Loading @@ -1194,7 +1198,7 @@ public class JniCodeEmitter { cfunc.getArgType(cIndex).getDeclaration() + ")getPointer(_env, " + cname + "_buf, &" + array + ", &" + remaining + "_buf, &" + array + ", &" + remaining + ", &" + bufferOffset + ");"); } Loading @@ -1209,6 +1213,28 @@ public class JniCodeEmitter { } } // Emit 'GetPrimitiveArrayCritical' for pointers if needed if (nonPrimitiveArgs.size() > 0) { for (int i = 0; i < nonPrimitiveArgs.size(); i++) { int idx = nonPrimitiveArgs.get(i).intValue(); int cIndex = jfunc.getArgCIndex(idx); if(!jfunc.getArgType(idx).isBuffer() || isPointerFunc) continue; String cname = cfunc.getArgName(cIndex); String bufferOffset = numBufferArgs <= 1 ? "_bufferOffset" : "_" + cname + "BufferOffset"; String array = numBufferArgs <= 1 ? "_array" : "_" + cfunc.getArgName(cIndex) + "Array"; out.println(indent + "if (" + cname +" == NULL) {"); out.println(indent + indent + "char * _" + cname + "Base = (char *)_env->GetPrimitiveArrayCritical(" + array + ", (jboolean *) 0);"); out.println(indent + indent + cname + " = (" +cfunc.getArgType(cIndex).getDeclaration() +") (_" + cname + "Base + " + bufferOffset + ");"); out.println(indent + "}"); } } if (!isVoid) { out.print(indent + "_returnValue = "); } else { Loading Loading @@ -1279,7 +1305,7 @@ public class JniCodeEmitter { needsExit = false; } bufArgIdx = 0; if (nonPrimitiveArgs.size() > 0) { for (int i = nonPrimitiveArgs.size() - 1; i >= 0; i--) { int idx = nonPrimitiveArgs.get(i).intValue(); Loading Loading @@ -1307,7 +1333,7 @@ public class JniCodeEmitter { } else if (jfunc.getArgType(idx).isBuffer()) { if (! isPointerFunc) { String array = numBufferArgs <= 1 ? "_array" : "_" + bufferArgNames.get(bufArgIdx++) + "Array"; "_" + cfunc.getArgName(cIndex) + "Array"; out.println(indent + "if (" + array + ") {"); out.println(indent + indent + "releasePointer(_env, " + array + ", " + Loading opengl/tools/glgen/stubs/gles11/GLES10ExtcHeader.cpp +3 −6 Original line number Diff line number Diff line Loading @@ -62,14 +62,12 @@ nativeClassInit(JNIEnv *_env, jclass glImplClass) static void * getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { jint position; jint limit; jint elementSizeShift; jlong pointer; jint offset; void *data; position = _env->GetIntField(buffer, positionID); limit = _env->GetIntField(buffer, limitID); Loading @@ -84,11 +82,10 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); offset = _env->CallStaticIntMethod(nioAccessClass, *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0); return (void *) ((char *) data + offset); return NULL; } Loading opengl/tools/glgen/stubs/gles11/GLES10cHeader.cpp +3 −6 Original line number Diff line number Diff line Loading @@ -74,14 +74,12 @@ nativeClassInit(JNIEnv *_env, jclass glImplClass) } static void * getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { jint position; jint limit; jint elementSizeShift; jlong pointer; jint offset; void *data; position = _env->GetIntField(buffer, positionID); limit = _env->GetIntField(buffer, limitID); Loading @@ -96,11 +94,10 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); offset = _env->CallStaticIntMethod(nioAccessClass, *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0); return (void *) ((char *) data + offset); return NULL; } static void Loading opengl/tools/glgen/stubs/gles11/GLES11ExtcHeader.cpp +3 −7 Original line number Diff line number Diff line Loading @@ -71,14 +71,12 @@ nativeClassInit(JNIEnv *_env, jclass glImplClass) static void * getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { jint position; jint limit; jint elementSizeShift; jlong pointer; jint offset; void *data; position = _env->GetIntField(buffer, positionID); limit = _env->GetIntField(buffer, limitID); Loading @@ -93,11 +91,9 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); offset = _env->CallStaticIntMethod(nioAccessClass, *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0); return (void *) ((char *) data + offset); return NULL; } Loading opengl/tools/glgen/stubs/gles11/GLES11cHeader.cpp +3 −6 Original line number Diff line number Diff line Loading @@ -69,14 +69,12 @@ nativeClassInit(JNIEnv *_env, jclass glImplClass) static void * getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { jint position; jint limit; jint elementSizeShift; jlong pointer; jint offset; void *data; position = _env->GetIntField(buffer, positionID); limit = _env->GetIntField(buffer, limitID); Loading @@ -91,11 +89,10 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); offset = _env->CallStaticIntMethod(nioAccessClass, *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0); return (void *) ((char *) data + offset); return NULL; } Loading Loading
opengl/tools/glgen/src/JniCodeEmitter.java +32 −6 Original line number Diff line number Diff line Loading @@ -939,10 +939,13 @@ public class JniCodeEmitter { // Emit a single _array or multiple _XXXArray variables if (numBufferArgs == 1) { out.println(indent + "jarray _array = (jarray) 0;"); out.println(indent + "jint _bufferOffset = (jint) 0;"); } else { for (int i = 0; i < numBufferArgs; i++) { out.println(indent + "jarray _" + bufferArgNames.get(i) + "Array = (jarray) 0;"); out.println(indent + "jint _" + bufferArgNames.get(i) + "BufferOffset = (jint) 0;"); } } if (!isVoid) { Loading Loading @@ -1075,7 +1078,6 @@ public class JniCodeEmitter { // Emit 'GetPrimitiveArrayCritical' for non-object arrays // Emit 'GetPointer' calls for Buffer pointers int bufArgIdx = 0; if (nonPrimitiveArgs.size() > 0) { for (int i = 0; i < nonPrimitiveArgs.size(); i++) { int idx = nonPrimitiveArgs.get(i).intValue(); Loading Loading @@ -1168,7 +1170,9 @@ public class JniCodeEmitter { out.println(); } else if (jfunc.getArgType(idx).isBuffer()) { String array = numBufferArgs <= 1 ? "_array" : "_" + bufferArgNames.get(bufArgIdx++) + "Array"; "_" + cfunc.getArgName(cIndex) + "Array"; String bufferOffset = numBufferArgs <= 1 ? "_bufferOffset" : "_" + cfunc.getArgName(cIndex) + "BufferOffset"; boolean nullAllowed = isNullAllowed(cfunc) || isPointerFunc; if (nullAllowed) { Loading @@ -1194,7 +1198,7 @@ public class JniCodeEmitter { cfunc.getArgType(cIndex).getDeclaration() + ")getPointer(_env, " + cname + "_buf, &" + array + ", &" + remaining + "_buf, &" + array + ", &" + remaining + ", &" + bufferOffset + ");"); } Loading @@ -1209,6 +1213,28 @@ public class JniCodeEmitter { } } // Emit 'GetPrimitiveArrayCritical' for pointers if needed if (nonPrimitiveArgs.size() > 0) { for (int i = 0; i < nonPrimitiveArgs.size(); i++) { int idx = nonPrimitiveArgs.get(i).intValue(); int cIndex = jfunc.getArgCIndex(idx); if(!jfunc.getArgType(idx).isBuffer() || isPointerFunc) continue; String cname = cfunc.getArgName(cIndex); String bufferOffset = numBufferArgs <= 1 ? "_bufferOffset" : "_" + cname + "BufferOffset"; String array = numBufferArgs <= 1 ? "_array" : "_" + cfunc.getArgName(cIndex) + "Array"; out.println(indent + "if (" + cname +" == NULL) {"); out.println(indent + indent + "char * _" + cname + "Base = (char *)_env->GetPrimitiveArrayCritical(" + array + ", (jboolean *) 0);"); out.println(indent + indent + cname + " = (" +cfunc.getArgType(cIndex).getDeclaration() +") (_" + cname + "Base + " + bufferOffset + ");"); out.println(indent + "}"); } } if (!isVoid) { out.print(indent + "_returnValue = "); } else { Loading Loading @@ -1279,7 +1305,7 @@ public class JniCodeEmitter { needsExit = false; } bufArgIdx = 0; if (nonPrimitiveArgs.size() > 0) { for (int i = nonPrimitiveArgs.size() - 1; i >= 0; i--) { int idx = nonPrimitiveArgs.get(i).intValue(); Loading Loading @@ -1307,7 +1333,7 @@ public class JniCodeEmitter { } else if (jfunc.getArgType(idx).isBuffer()) { if (! isPointerFunc) { String array = numBufferArgs <= 1 ? "_array" : "_" + bufferArgNames.get(bufArgIdx++) + "Array"; "_" + cfunc.getArgName(cIndex) + "Array"; out.println(indent + "if (" + array + ") {"); out.println(indent + indent + "releasePointer(_env, " + array + ", " + Loading
opengl/tools/glgen/stubs/gles11/GLES10ExtcHeader.cpp +3 −6 Original line number Diff line number Diff line Loading @@ -62,14 +62,12 @@ nativeClassInit(JNIEnv *_env, jclass glImplClass) static void * getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { jint position; jint limit; jint elementSizeShift; jlong pointer; jint offset; void *data; position = _env->GetIntField(buffer, positionID); limit = _env->GetIntField(buffer, limitID); Loading @@ -84,11 +82,10 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); offset = _env->CallStaticIntMethod(nioAccessClass, *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0); return (void *) ((char *) data + offset); return NULL; } Loading
opengl/tools/glgen/stubs/gles11/GLES10cHeader.cpp +3 −6 Original line number Diff line number Diff line Loading @@ -74,14 +74,12 @@ nativeClassInit(JNIEnv *_env, jclass glImplClass) } static void * getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { jint position; jint limit; jint elementSizeShift; jlong pointer; jint offset; void *data; position = _env->GetIntField(buffer, positionID); limit = _env->GetIntField(buffer, limitID); Loading @@ -96,11 +94,10 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); offset = _env->CallStaticIntMethod(nioAccessClass, *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0); return (void *) ((char *) data + offset); return NULL; } static void Loading
opengl/tools/glgen/stubs/gles11/GLES11ExtcHeader.cpp +3 −7 Original line number Diff line number Diff line Loading @@ -71,14 +71,12 @@ nativeClassInit(JNIEnv *_env, jclass glImplClass) static void * getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { jint position; jint limit; jint elementSizeShift; jlong pointer; jint offset; void *data; position = _env->GetIntField(buffer, positionID); limit = _env->GetIntField(buffer, limitID); Loading @@ -93,11 +91,9 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); offset = _env->CallStaticIntMethod(nioAccessClass, *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0); return (void *) ((char *) data + offset); return NULL; } Loading
opengl/tools/glgen/stubs/gles11/GLES11cHeader.cpp +3 −6 Original line number Diff line number Diff line Loading @@ -69,14 +69,12 @@ nativeClassInit(JNIEnv *_env, jclass glImplClass) static void * getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { jint position; jint limit; jint elementSizeShift; jlong pointer; jint offset; void *data; position = _env->GetIntField(buffer, positionID); limit = _env->GetIntField(buffer, limitID); Loading @@ -91,11 +89,10 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); offset = _env->CallStaticIntMethod(nioAccessClass, *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0); return (void *) ((char *) data + offset); return NULL; } Loading