diff options
| -rw-r--r-- | core/jni/android_opengl_GLES10.cpp | 174 | ||||
| -rw-r--r-- | core/jni/android_opengl_GLES10Ext.cpp | 31 | ||||
| -rw-r--r-- | core/jni/android_opengl_GLES11.cpp | 206 | ||||
| -rw-r--r-- | core/jni/android_opengl_GLES11Ext.cpp | 264 | ||||
| -rw-r--r-- | core/jni/android_opengl_GLES20.cpp | 477 | ||||
| -rw-r--r-- | core/jni/com_google_android_gles_jni_GLImpl.cpp | 497 |
6 files changed, 1366 insertions, 283 deletions
diff --git a/core/jni/android_opengl_GLES10.cpp b/core/jni/android_opengl_GLES10.cpp index 73696ec4b9eb..d8a15df5c89c 100644 --- a/core/jni/android_opengl_GLES10.cpp +++ b/core/jni/android_opengl_GLES10.cpp @@ -75,14 +75,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); @@ -97,11 +95,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 @@ -292,6 +289,7 @@ static void android_glColorPointerBounds__IIILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -315,10 +313,15 @@ static void android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *data = (GLvoid *) 0; - data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); + data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); + if (data == NULL) { + char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + data = (GLvoid *) (_dataBase + _bufferOffset); + } glCompressedTexImage2D( (GLenum)target, (GLint)level, @@ -339,10 +342,15 @@ static void android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *data = (GLvoid *) 0; - data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); + data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); + if (data == NULL) { + char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + data = (GLvoid *) (_dataBase + _bufferOffset); + } glCompressedTexSubImage2D( (GLenum)target, (GLint)level, @@ -457,16 +465,21 @@ android_glDeleteTextures__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *textures = (GLuint *) 0; - textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining); + textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (textures == NULL) { + char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + textures = (GLuint *) (_texturesBase + _bufferOffset); + } glDeleteTextures( (GLsizei)n, (GLuint *)textures @@ -556,16 +569,21 @@ android_glDrawElements__IIILjava_nio_Buffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *indices = (GLvoid *) 0; - indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining); + indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < count) { _exception = 1; _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; _exceptionMessage = "remaining() < count < needed"; goto exit; } + if (indices == NULL) { + char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + indices = (GLvoid *) (_indicesBase + _bufferOffset); + } glDrawElements( (GLenum)mode, (GLsizei)count, @@ -706,10 +724,11 @@ android_glFogfv__ILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_FOG_MODE) @@ -741,6 +760,10 @@ android_glFogfv__ILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glFogfv( (GLenum)pname, (GLfloat *)params @@ -847,10 +870,11 @@ android_glFogxv__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_FOG_MODE) @@ -882,6 +906,10 @@ android_glFogxv__ILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glFogxv( (GLenum)pname, (GLfixed *)params @@ -990,16 +1018,21 @@ android_glGenTextures__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *textures = (GLuint *) 0; - textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining); + textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (textures == NULL) { + char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + textures = (GLuint *) (_texturesBase + _bufferOffset); + } glGenTextures( (GLsizei)n, (GLuint *)textures @@ -1411,10 +1444,11 @@ android_glGetIntegerv__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_ALPHA_BITS) @@ -1752,6 +1786,10 @@ android_glGetIntegerv__ILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetIntegerv( (GLenum)pname, (GLint *)params @@ -1864,10 +1902,11 @@ android_glLightModelfv__ILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_LIGHT_MODEL_TWO_SIDE) @@ -1890,6 +1929,10 @@ android_glLightModelfv__ILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glLightModelfv( (GLenum)pname, (GLfloat *)params @@ -1987,10 +2030,11 @@ android_glLightModelxv__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_LIGHT_MODEL_TWO_SIDE) @@ -2013,6 +2057,10 @@ android_glLightModelxv__ILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glLightModelxv( (GLenum)pname, (GLfixed *)params @@ -2138,10 +2186,11 @@ android_glLightfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SPOT_EXPONENT) @@ -2190,6 +2239,10 @@ android_glLightfv__IILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glLightfv( (GLenum)light, (GLenum)pname, @@ -2316,10 +2369,11 @@ android_glLightxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SPOT_EXPONENT) @@ -2368,6 +2422,10 @@ android_glLightxv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glLightxv( (GLenum)light, (GLenum)pname, @@ -2455,10 +2513,15 @@ static void android_glLoadMatrixf__Ljava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jobject m_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *m = (GLfloat *) 0; - m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining); + m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset); + if (m == NULL) { + char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + m = (GLfloat *) (_mBase + _bufferOffset); + } glLoadMatrixf( (GLfloat *)m ); @@ -2514,10 +2577,15 @@ static void android_glLoadMatrixx__Ljava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jobject m_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *m = (GLfixed *) 0; - m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining); + m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset); + if (m == NULL) { + char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + m = (GLfixed *) (_mBase + _bufferOffset); + } glLoadMatrixx( (GLfixed *)m ); @@ -2632,10 +2700,11 @@ android_glMaterialfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SHININESS) @@ -2670,6 +2739,10 @@ android_glMaterialfv__IILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glMaterialfv( (GLenum)face, (GLenum)pname, @@ -2782,10 +2855,11 @@ android_glMaterialxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SHININESS) @@ -2820,6 +2894,10 @@ android_glMaterialxv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glMaterialxv( (GLenum)face, (GLenum)pname, @@ -2891,10 +2969,15 @@ static void android_glMultMatrixf__Ljava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jobject m_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *m = (GLfloat *) 0; - m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining); + m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset); + if (m == NULL) { + char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + m = (GLfloat *) (_mBase + _bufferOffset); + } glMultMatrixf( (GLfloat *)m ); @@ -2950,10 +3033,15 @@ static void android_glMultMatrixx__Ljava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jobject m_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *m = (GLfixed *) 0; - m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining); + m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset); + if (m == NULL) { + char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + m = (GLfixed *) (_mBase + _bufferOffset); + } glMultMatrixx( (GLfixed *)m ); @@ -3015,6 +3103,7 @@ static void android_glNormalPointerBounds__IILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -3127,10 +3216,15 @@ static void android_glReadPixels__IIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pixels = (GLvoid *) 0; - pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining); + pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); + if (pixels == NULL) { + char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + pixels = (GLvoid *) (_pixelsBase + _bufferOffset); + } glReadPixels( (GLint)x, (GLint)y, @@ -3268,6 +3362,7 @@ static void android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -3377,10 +3472,11 @@ android_glTexEnvfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_TEXTURE_ENV_MODE) @@ -3409,6 +3505,10 @@ android_glTexEnvfv__IILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glTexEnvfv( (GLenum)target, (GLenum)pname, @@ -3515,10 +3615,11 @@ android_glTexEnvxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_TEXTURE_ENV_MODE) @@ -3547,6 +3648,10 @@ android_glTexEnvxv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glTexEnvxv( (GLenum)target, (GLenum)pname, @@ -3567,11 +3672,16 @@ static void android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pixels = (GLvoid *) 0; if (pixels_buf) { - pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining); + pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); + } + if (pixels == NULL) { + char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + pixels = (GLvoid *) (_pixelsBase + _bufferOffset); } glTexImage2D( (GLenum)target, @@ -3616,11 +3726,16 @@ static void android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pixels = (GLvoid *) 0; if (pixels_buf) { - pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining); + pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); + } + if (pixels == NULL) { + char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + pixels = (GLvoid *) (_pixelsBase + _bufferOffset); } glTexSubImage2D( (GLenum)target, @@ -3665,6 +3780,7 @@ static void android_glVertexPointerBounds__IIILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; diff --git a/core/jni/android_opengl_GLES10Ext.cpp b/core/jni/android_opengl_GLES10Ext.cpp index 16a884a239ca..1cd8e44a1a8f 100644 --- a/core/jni/android_opengl_GLES10Ext.cpp +++ b/core/jni/android_opengl_GLES10Ext.cpp @@ -63,14 +63,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); @@ -85,11 +83,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; } @@ -190,38 +187,48 @@ android_glQueryMatrixxOES__Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _mantissaArray = (jarray) 0; + jint _mantissaBufferOffset = (jint) 0; jarray _exponentArray = (jarray) 0; + jint _exponentBufferOffset = (jint) 0; GLbitfield _returnValue = -1; jint _mantissaRemaining; GLfixed *mantissa = (GLfixed *) 0; jint _exponentRemaining; GLint *exponent = (GLint *) 0; - mantissa = (GLfixed *)getPointer(_env, mantissa_buf, &_mantissaArray, &_mantissaRemaining); + mantissa = (GLfixed *)getPointer(_env, mantissa_buf, &_mantissaArray, &_mantissaRemaining, &_mantissaBufferOffset); if (_mantissaRemaining < 16) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 16 < needed"; goto exit; } - exponent = (GLint *)getPointer(_env, exponent_buf, &_exponentArray, &_exponentRemaining); + exponent = (GLint *)getPointer(_env, exponent_buf, &_exponentArray, &_exponentRemaining, &_exponentBufferOffset); if (_exponentRemaining < 16) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 16 < needed"; goto exit; } + if (mantissa == NULL) { + char * _mantissaBase = (char *)_env->GetPrimitiveArrayCritical(_mantissaArray, (jboolean *) 0); + mantissa = (GLfixed *) (_mantissaBase + _mantissaBufferOffset); + } + if (exponent == NULL) { + char * _exponentBase = (char *)_env->GetPrimitiveArrayCritical(_exponentArray, (jboolean *) 0); + exponent = (GLint *) (_exponentBase + _exponentBufferOffset); + } _returnValue = glQueryMatrixxOES( (GLfixed *)mantissa, (GLint *)exponent ); exit: - if (_mantissaArray) { - releasePointer(_env, _mantissaArray, exponent, _exception ? JNI_FALSE : JNI_TRUE); - } if (_exponentArray) { - releasePointer(_env, _exponentArray, mantissa, _exception ? JNI_FALSE : JNI_TRUE); + releasePointer(_env, _exponentArray, exponent, _exception ? JNI_FALSE : JNI_TRUE); + } + if (_mantissaArray) { + releasePointer(_env, _mantissaArray, mantissa, _exception ? JNI_FALSE : JNI_TRUE); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); diff --git a/core/jni/android_opengl_GLES11.cpp b/core/jni/android_opengl_GLES11.cpp index ee7cb12ba0a1..dd5094046fd1 100644 --- a/core/jni/android_opengl_GLES11.cpp +++ b/core/jni/android_opengl_GLES11.cpp @@ -70,14 +70,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); @@ -92,11 +90,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; } @@ -140,11 +137,12 @@ android_glBufferData__IILjava_nio_Buffer_2I const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *data = (GLvoid *) 0; if (data_buf) { - data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); + data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < size) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; @@ -152,6 +150,10 @@ android_glBufferData__IILjava_nio_Buffer_2I goto exit; } } + if (data == NULL) { + char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + data = (GLvoid *) (_dataBase + _bufferOffset); + } glBufferData( (GLenum)target, (GLsizeiptr)size, @@ -176,16 +178,21 @@ android_glBufferSubData__IIILjava_nio_Buffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *data = (GLvoid *) 0; - data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); + data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < size) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < size < needed"; goto exit; } + if (data == NULL) { + char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + data = (GLvoid *) (_dataBase + _bufferOffset); + } glBufferSubData( (GLenum)target, (GLintptr)offset, @@ -253,10 +260,15 @@ android_glClipPlanef__ILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *equation = (GLfloat *) 0; - equation = (GLfloat *)getPointer(_env, equation_buf, &_array, &_remaining); + equation = (GLfloat *)getPointer(_env, equation_buf, &_array, &_remaining, &_bufferOffset); + if (equation == NULL) { + char * _equationBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + equation = (GLfloat *) (_equationBase + _bufferOffset); + } glClipPlanef( (GLenum)plane, (GLfloat *)equation @@ -320,10 +332,15 @@ android_glClipPlanex__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *equation = (GLfixed *) 0; - equation = (GLfixed *)getPointer(_env, equation_buf, &_array, &_remaining); + equation = (GLfixed *)getPointer(_env, equation_buf, &_array, &_remaining, &_bufferOffset); + if (equation == NULL) { + char * _equationBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + equation = (GLfixed *) (_equationBase + _bufferOffset); + } glClipPlanex( (GLenum)plane, (GLfixed *)equation @@ -417,16 +434,21 @@ android_glDeleteBuffers__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *buffers = (GLuint *) 0; - buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining); + buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (buffers == NULL) { + char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + buffers = (GLuint *) (_buffersBase + _bufferOffset); + } glDeleteBuffers( (GLsizei)n, (GLuint *)buffers @@ -516,16 +538,21 @@ android_glGenBuffers__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *buffers = (GLuint *) 0; - buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining); + buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (buffers == NULL) { + char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + buffers = (GLuint *) (_buffersBase + _bufferOffset); + } glGenBuffers( (GLsizei)n, (GLuint *)buffers @@ -588,10 +615,15 @@ static void android_glGetBooleanv__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLboolean *params = (GLboolean *) 0; - params = (GLboolean *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLboolean *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLboolean *) (_paramsBase + _bufferOffset); + } glGetBooleanv( (GLenum)pname, (GLboolean *)params @@ -659,16 +691,21 @@ android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetBufferParameteriv( (GLenum)target, (GLenum)pname, @@ -732,10 +769,15 @@ static void android_glGetClipPlanef__ILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject eqn_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *eqn = (GLfloat *) 0; - eqn = (GLfloat *)getPointer(_env, eqn_buf, &_array, &_remaining); + eqn = (GLfloat *)getPointer(_env, eqn_buf, &_array, &_remaining, &_bufferOffset); + if (eqn == NULL) { + char * _eqnBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + eqn = (GLfloat *) (_eqnBase + _bufferOffset); + } glGetClipPlanef( (GLenum)pname, (GLfloat *)eqn @@ -793,10 +835,15 @@ static void android_glGetClipPlanex__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject eqn_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *eqn = (GLfixed *) 0; - eqn = (GLfixed *)getPointer(_env, eqn_buf, &_array, &_remaining); + eqn = (GLfixed *)getPointer(_env, eqn_buf, &_array, &_remaining, &_bufferOffset); + if (eqn == NULL) { + char * _eqnBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + eqn = (GLfixed *) (_eqnBase + _bufferOffset); + } glGetClipPlanex( (GLenum)pname, (GLfixed *)eqn @@ -854,10 +901,15 @@ static void android_glGetFixedv__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetFixedv( (GLenum)pname, (GLfixed *)params @@ -915,10 +967,15 @@ static void android_glGetFloatv__ILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetFloatv( (GLenum)pname, (GLfloat *)params @@ -1028,10 +1085,11 @@ android_glGetLightfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SPOT_EXPONENT) @@ -1080,6 +1138,10 @@ android_glGetLightfv__IILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetLightfv( (GLenum)light, (GLenum)pname, @@ -1195,10 +1257,11 @@ android_glGetLightxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SPOT_EXPONENT) @@ -1247,6 +1310,10 @@ android_glGetLightxv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetLightxv( (GLenum)light, (GLenum)pname, @@ -1348,10 +1415,11 @@ android_glGetMaterialfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SHININESS) @@ -1386,6 +1454,10 @@ android_glGetMaterialfv__IILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetMaterialfv( (GLenum)face, (GLenum)pname, @@ -1487,10 +1559,11 @@ android_glGetMaterialxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SHININESS) @@ -1525,6 +1598,10 @@ android_glGetMaterialxv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetMaterialxv( (GLenum)face, (GLenum)pname, @@ -1620,10 +1697,11 @@ android_glGetTexEnvfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_TEXTURE_ENV_MODE) @@ -1652,6 +1730,10 @@ android_glGetTexEnvfv__IILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetTexEnvfv( (GLenum)env, (GLenum)pname, @@ -1747,10 +1829,11 @@ android_glGetTexEnviv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_TEXTURE_ENV_MODE) @@ -1779,6 +1862,10 @@ android_glGetTexEnviv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetTexEnviv( (GLenum)env, (GLenum)pname, @@ -1874,10 +1961,11 @@ android_glGetTexEnvxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_TEXTURE_ENV_MODE) @@ -1906,6 +1994,10 @@ android_glGetTexEnvxv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetTexEnvxv( (GLenum)env, (GLenum)pname, @@ -1979,16 +2071,21 @@ android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetTexParameterfv( (GLenum)target, (GLenum)pname, @@ -2062,16 +2159,21 @@ android_glGetTexParameteriv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetTexParameteriv( (GLenum)target, (GLenum)pname, @@ -2145,16 +2247,21 @@ android_glGetTexParameterxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetTexParameterxv( (GLenum)target, (GLenum)pname, @@ -2281,16 +2388,21 @@ android_glPointParameterfv__ILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glPointParameterfv( (GLenum)pname, (GLfloat *)params @@ -2372,16 +2484,21 @@ android_glPointParameterxv__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glPointParameterxv( (GLenum)pname, (GLfixed *)params @@ -2401,6 +2518,7 @@ static void android_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -2521,10 +2639,11 @@ android_glTexEnviv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_TEXTURE_ENV_MODE) @@ -2553,6 +2672,10 @@ android_glTexEnviv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glTexEnviv( (GLenum)target, (GLenum)pname, @@ -2626,16 +2749,21 @@ android_glTexParameterfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glTexParameterfv( (GLenum)target, (GLenum)pname, @@ -2720,16 +2848,21 @@ android_glTexParameteriv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glTexParameteriv( (GLenum)target, (GLenum)pname, @@ -2803,16 +2936,21 @@ android_glTexParameterxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glTexParameterxv( (GLenum)target, (GLenum)pname, diff --git a/core/jni/android_opengl_GLES11Ext.cpp b/core/jni/android_opengl_GLES11Ext.cpp index a05f809a6d55..073bbb26f555 100644 --- a/core/jni/android_opengl_GLES11Ext.cpp +++ b/core/jni/android_opengl_GLES11Ext.cpp @@ -72,14 +72,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); @@ -94,11 +92,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; } @@ -249,16 +245,21 @@ android_glDrawTexsvOES__Ljava_nio_ShortBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLshort *coords = (GLshort *) 0; - coords = (GLshort *)getPointer(_env, coords_buf, &_array, &_remaining); + coords = (GLshort *)getPointer(_env, coords_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 5) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 5 < needed"; goto exit; } + if (coords == NULL) { + char * _coordsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + coords = (GLshort *) (_coordsBase + _bufferOffset); + } glDrawTexsvOES( (GLshort *)coords ); @@ -328,16 +329,21 @@ android_glDrawTexivOES__Ljava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *coords = (GLint *) 0; - coords = (GLint *)getPointer(_env, coords_buf, &_array, &_remaining); + coords = (GLint *)getPointer(_env, coords_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 5) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 5 < needed"; goto exit; } + if (coords == NULL) { + char * _coordsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + coords = (GLint *) (_coordsBase + _bufferOffset); + } glDrawTexivOES( (GLint *)coords ); @@ -407,16 +413,21 @@ android_glDrawTexxvOES__Ljava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *coords = (GLfixed *) 0; - coords = (GLfixed *)getPointer(_env, coords_buf, &_array, &_remaining); + coords = (GLfixed *)getPointer(_env, coords_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 5) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 5 < needed"; goto exit; } + if (coords == NULL) { + char * _coordsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + coords = (GLfixed *) (_coordsBase + _bufferOffset); + } glDrawTexxvOES( (GLfixed *)coords ); @@ -499,16 +510,21 @@ android_glDrawTexfvOES__Ljava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *coords = (GLfloat *) 0; - coords = (GLfloat *)getPointer(_env, coords_buf, &_array, &_remaining); + coords = (GLfloat *)getPointer(_env, coords_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 5) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 5 < needed"; goto exit; } + if (coords == NULL) { + char * _coordsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + coords = (GLfloat *) (_coordsBase + _bufferOffset); + } glDrawTexfvOES( (GLfloat *)coords ); @@ -527,10 +543,15 @@ static void android_glEGLImageTargetTexture2DOES__ILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jobject image_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLeglImageOES image = (GLeglImageOES) 0; - image = (GLeglImageOES)getPointer(_env, image_buf, &_array, &_remaining); + image = (GLeglImageOES)getPointer(_env, image_buf, &_array, &_remaining, &_bufferOffset); + if (image == NULL) { + char * _imageBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + image = (GLeglImageOES) (_imageBase + _bufferOffset); + } glEGLImageTargetTexture2DOES( (GLenum)target, (GLeglImageOES)image @@ -545,10 +566,15 @@ static void android_glEGLImageTargetRenderbufferStorageOES__ILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jobject image_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLeglImageOES image = (GLeglImageOES) 0; - image = (GLeglImageOES)getPointer(_env, image_buf, &_array, &_remaining); + image = (GLeglImageOES)getPointer(_env, image_buf, &_array, &_remaining, &_bufferOffset); + if (image == NULL) { + char * _imageBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + image = (GLeglImageOES) (_imageBase + _bufferOffset); + } glEGLImageTargetRenderbufferStorageOES( (GLenum)target, (GLeglImageOES)image @@ -637,10 +663,15 @@ static void android_glClipPlanexOES__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint plane, jobject equation_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *equation = (GLfixed *) 0; - equation = (GLfixed *)getPointer(_env, equation_buf, &_array, &_remaining); + equation = (GLfixed *)getPointer(_env, equation_buf, &_array, &_remaining, &_bufferOffset); + if (equation == NULL) { + char * _equationBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + equation = (GLfixed *) (_equationBase + _bufferOffset); + } glClipPlanexOES( (GLenum)plane, (GLfixed *)equation @@ -730,10 +761,15 @@ static void android_glFogxvOES__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glFogxvOES( (GLenum)pname, (GLfixed *)params @@ -814,16 +850,21 @@ android_glGetClipPlanexOES__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *eqn = (GLfixed *) 0; - eqn = (GLfixed *)getPointer(_env, eqn_buf, &_array, &_remaining); + eqn = (GLfixed *)getPointer(_env, eqn_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 4) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 4 < needed"; goto exit; } + if (eqn == NULL) { + char * _eqnBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + eqn = (GLfixed *) (_eqnBase + _bufferOffset); + } glGetClipPlanexOES( (GLenum)pname, (GLfixed *)eqn @@ -886,10 +927,15 @@ static void android_glGetFixedvOES__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetFixedvOES( (GLenum)pname, (GLfixed *)params @@ -948,10 +994,15 @@ static void android_glGetLightxvOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetLightxvOES( (GLenum)light, (GLenum)pname, @@ -1011,10 +1062,15 @@ static void android_glGetMaterialxvOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetMaterialxvOES( (GLenum)face, (GLenum)pname, @@ -1074,10 +1130,15 @@ static void android_glGetTexEnvxvOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint env, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetTexEnvxvOES( (GLenum)env, (GLenum)pname, @@ -1137,10 +1198,15 @@ static void android_glGetTexParameterxvOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetTexParameterxvOES( (GLenum)target, (GLenum)pname, @@ -1209,10 +1275,15 @@ static void android_glLightModelxvOES__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glLightModelxvOES( (GLenum)pname, (GLfixed *)params @@ -1282,10 +1353,15 @@ static void android_glLightxvOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glLightxvOES( (GLenum)light, (GLenum)pname, @@ -1352,10 +1428,15 @@ static void android_glLoadMatrixxOES__Ljava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jobject m_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *m = (GLfixed *) 0; - m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining); + m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset); + if (m == NULL) { + char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + m = (GLfixed *) (_mBase + _bufferOffset); + } glLoadMatrixxOES( (GLfixed *)m ); @@ -1424,10 +1505,15 @@ static void android_glMaterialxvOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glMaterialxvOES( (GLenum)face, (GLenum)pname, @@ -1485,10 +1571,15 @@ static void android_glMultMatrixxOES__Ljava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jobject m_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *m = (GLfixed *) 0; - m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining); + m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset); + if (m == NULL) { + char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + m = (GLfixed *) (_mBase + _bufferOffset); + } glMultMatrixxOES( (GLfixed *)m ); @@ -1593,10 +1684,15 @@ static void android_glPointParameterxvOES__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glPointParameterxvOES( (GLenum)pname, (GLfixed *)params @@ -1718,10 +1814,15 @@ static void android_glTexEnvxvOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glTexEnvxvOES( (GLenum)target, (GLenum)pname, @@ -1792,10 +1893,15 @@ static void android_glTexParameterxvOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glTexParameterxvOES( (GLenum)target, (GLenum)pname, @@ -1895,16 +2001,21 @@ android_glDeleteRenderbuffersOES__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *renderbuffers = (GLuint *) 0; - renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining); + renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (renderbuffers == NULL) { + char * _renderbuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset); + } glDeleteRenderbuffersOES( (GLsizei)n, (GLuint *)renderbuffers @@ -1976,16 +2087,21 @@ android_glGenRenderbuffersOES__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *renderbuffers = (GLuint *) 0; - renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining); + renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (renderbuffers == NULL) { + char * _renderbuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset); + } glGenRenderbuffersOES( (GLsizei)n, (GLuint *)renderbuffers @@ -2070,16 +2186,21 @@ android_glGetRenderbufferParameterivOES__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetRenderbufferParameterivOES( (GLenum)target, (GLenum)pname, @@ -2173,16 +2294,21 @@ android_glDeleteFramebuffersOES__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *framebuffers = (GLuint *) 0; - framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining); + framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (framebuffers == NULL) { + char * _framebuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset); + } glDeleteFramebuffersOES( (GLsizei)n, (GLuint *)framebuffers @@ -2254,16 +2380,21 @@ android_glGenFramebuffersOES__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *framebuffers = (GLuint *) 0; - framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining); + framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (framebuffers == NULL) { + char * _framebuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset); + } glGenFramebuffersOES( (GLsizei)n, (GLuint *)framebuffers @@ -2373,16 +2504,21 @@ android_glGetFramebufferAttachmentParameterivOES__IIILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetFramebufferAttachmentParameterivOES( (GLenum)target, (GLenum)attachment, @@ -2429,6 +2565,7 @@ static void android_glMatrixIndexPointerOESBounds__IIILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -2452,6 +2589,7 @@ static void android_glWeightPointerOESBounds__IIILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -2556,10 +2694,15 @@ static void android_glClipPlanefOES__ILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint plane, jobject equation_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *equation = (GLfloat *) 0; - equation = (GLfloat *)getPointer(_env, equation_buf, &_array, &_remaining); + equation = (GLfloat *)getPointer(_env, equation_buf, &_array, &_remaining, &_bufferOffset); + if (equation == NULL) { + char * _equationBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + equation = (GLfloat *) (_equationBase + _bufferOffset); + } glClipPlanefOES( (GLenum)plane, (GLfloat *)equation @@ -2626,16 +2769,21 @@ android_glGetClipPlanefOES__ILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *eqn = (GLfloat *) 0; - eqn = (GLfloat *)getPointer(_env, eqn_buf, &_array, &_remaining); + eqn = (GLfloat *)getPointer(_env, eqn_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 4) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 4 < needed"; goto exit; } + if (eqn == NULL) { + char * _eqnBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + eqn = (GLfloat *) (_eqnBase + _bufferOffset); + } glGetClipPlanefOES( (GLenum)pname, (GLfloat *)eqn @@ -2719,10 +2867,15 @@ static void android_glTexGenfvOES__IILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint coord, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glTexGenfvOES( (GLenum)coord, (GLenum)pname, @@ -2793,10 +2946,15 @@ static void android_glTexGenivOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint coord, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glTexGenivOES( (GLenum)coord, (GLenum)pname, @@ -2867,10 +3025,15 @@ static void android_glTexGenxvOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint coord, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glTexGenxvOES( (GLenum)coord, (GLenum)pname, @@ -2930,10 +3093,15 @@ static void android_glGetTexGenfvOES__IILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint coord, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetTexGenfvOES( (GLenum)coord, (GLenum)pname, @@ -2993,10 +3161,15 @@ static void android_glGetTexGenivOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint coord, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetTexGenivOES( (GLenum)coord, (GLenum)pname, @@ -3056,10 +3229,15 @@ static void android_glGetTexGenxvOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint coord, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetTexGenxvOES( (GLenum)coord, (GLenum)pname, diff --git a/core/jni/android_opengl_GLES20.cpp b/core/jni/android_opengl_GLES20.cpp index 87ff2707ec57..354b5990cc52 100644 --- a/core/jni/android_opengl_GLES20.cpp +++ b/core/jni/android_opengl_GLES20.cpp @@ -63,14 +63,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); @@ -85,11 +83,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; } @@ -279,11 +276,12 @@ android_glBufferData__IILjava_nio_Buffer_2I const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *data = (GLvoid *) 0; if (data_buf) { - data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); + data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < size) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; @@ -291,6 +289,10 @@ android_glBufferData__IILjava_nio_Buffer_2I goto exit; } } + if (data == NULL) { + char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + data = (GLvoid *) (_dataBase + _bufferOffset); + } glBufferData( (GLenum)target, (GLsizeiptr)size, @@ -315,16 +317,21 @@ android_glBufferSubData__IIILjava_nio_Buffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *data = (GLvoid *) 0; - data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); + data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < size) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < size < needed"; goto exit; } + if (data == NULL) { + char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + data = (GLvoid *) (_dataBase + _bufferOffset); + } glBufferSubData( (GLenum)target, (GLintptr)offset, @@ -417,10 +424,15 @@ static void android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *data = (GLvoid *) 0; - data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); + data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); + if (data == NULL) { + char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + data = (GLvoid *) (_dataBase + _bufferOffset); + } glCompressedTexImage2D( (GLenum)target, (GLint)level, @@ -441,10 +453,15 @@ static void android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *data = (GLvoid *) 0; - data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); + data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); + if (data == NULL) { + char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + data = (GLvoid *) (_dataBase + _bufferOffset); + } glCompressedTexSubImage2D( (GLenum)target, (GLint)level, @@ -579,16 +596,21 @@ android_glDeleteBuffers__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *buffers = (GLuint *) 0; - buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining); + buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (buffers == NULL) { + char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + buffers = (GLuint *) (_buffersBase + _bufferOffset); + } glDeleteBuffers( (GLsizei)n, (GLuint *)buffers @@ -651,10 +673,15 @@ static void android_glDeleteFramebuffers__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *framebuffers = (GLuint *) 0; - framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining); + framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining, &_bufferOffset); + if (framebuffers == NULL) { + char * _framebuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset); + } glDeleteFramebuffers( (GLsizei)n, (GLuint *)framebuffers @@ -721,10 +748,15 @@ static void android_glDeleteRenderbuffers__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *renderbuffers = (GLuint *) 0; - renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining); + renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining, &_bufferOffset); + if (renderbuffers == NULL) { + char * _renderbuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset); + } glDeleteRenderbuffers( (GLsizei)n, (GLuint *)renderbuffers @@ -800,16 +832,21 @@ android_glDeleteTextures__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *textures = (GLuint *) 0; - textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining); + textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (textures == NULL) { + char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + textures = (GLuint *) (_texturesBase + _bufferOffset); + } glDeleteTextures( (GLsizei)n, (GLuint *)textures @@ -917,16 +954,21 @@ android_glDrawElements__IIILjava_nio_Buffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *indices = (GLvoid *) 0; - indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining); + indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < count) { _exception = 1; _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; _exceptionMessage = "remaining() < count < needed"; goto exit; } + if (indices == NULL) { + char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + indices = (GLvoid *) (_indicesBase + _bufferOffset); + } glDrawElements( (GLenum)mode, (GLsizei)count, @@ -1066,16 +1108,21 @@ android_glGenBuffers__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *buffers = (GLuint *) 0; - buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining); + buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (buffers == NULL) { + char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + buffers = (GLuint *) (_buffersBase + _bufferOffset); + } glGenBuffers( (GLsizei)n, (GLuint *)buffers @@ -1147,10 +1194,15 @@ static void android_glGenFramebuffers__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *framebuffers = (GLuint *) 0; - framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining); + framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining, &_bufferOffset); + if (framebuffers == NULL) { + char * _framebuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset); + } glGenFramebuffers( (GLsizei)n, (GLuint *)framebuffers @@ -1208,10 +1260,15 @@ static void android_glGenRenderbuffers__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *renderbuffers = (GLuint *) 0; - renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining); + renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining, &_bufferOffset); + if (renderbuffers == NULL) { + char * _renderbuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset); + } glGenRenderbuffers( (GLsizei)n, (GLuint *)renderbuffers @@ -1278,16 +1335,21 @@ android_glGenTextures__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *textures = (GLuint *) 0; - textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining); + textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (textures == NULL) { + char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + textures = (GLuint *) (_texturesBase + _bufferOffset); + } glGenTextures( (GLsizei)n, (GLuint *)textures @@ -1427,8 +1489,11 @@ static void android_glGetActiveAttrib__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) { jarray _lengthArray = (jarray) 0; + jint _lengthBufferOffset = (jint) 0; jarray _sizeArray = (jarray) 0; + jint _sizeBufferOffset = (jint) 0; jarray _typeArray = (jarray) 0; + jint _typeBufferOffset = (jint) 0; jint _lengthRemaining; GLsizei *length = (GLsizei *) 0; jint _sizeRemaining; @@ -1436,9 +1501,21 @@ android_glGetActiveAttrib__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_ni jint _typeRemaining; GLenum *type = (GLenum *) 0; - length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining); - size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining); - type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining); + length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset); + size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset); + type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset); + if (length == NULL) { + char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0); + length = (GLsizei *) (_lengthBase + _lengthBufferOffset); + } + if (size == NULL) { + char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0); + size = (GLint *) (_sizeBase + _sizeBufferOffset); + } + if (type == NULL) { + char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0); + type = (GLenum *) (_typeBase + _typeBufferOffset); + } glGetActiveAttrib( (GLuint)program, (GLuint)index, @@ -1448,14 +1525,14 @@ android_glGetActiveAttrib__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_ni (GLenum *)type, (char *)name ); - if (_lengthArray) { - releasePointer(_env, _lengthArray, type, JNI_TRUE); + if (_typeArray) { + releasePointer(_env, _typeArray, type, JNI_TRUE); } if (_sizeArray) { releasePointer(_env, _sizeArray, size, JNI_TRUE); } - if (_typeArray) { - releasePointer(_env, _typeArray, length, JNI_TRUE); + if (_lengthArray) { + releasePointer(_env, _lengthArray, length, JNI_TRUE); } } @@ -1584,8 +1661,11 @@ static void android_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) { jarray _lengthArray = (jarray) 0; + jint _lengthBufferOffset = (jint) 0; jarray _sizeArray = (jarray) 0; + jint _sizeBufferOffset = (jint) 0; jarray _typeArray = (jarray) 0; + jint _typeBufferOffset = (jint) 0; jint _lengthRemaining; GLsizei *length = (GLsizei *) 0; jint _sizeRemaining; @@ -1593,9 +1673,21 @@ android_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_n jint _typeRemaining; GLenum *type = (GLenum *) 0; - length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining); - size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining); - type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining); + length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset); + size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset); + type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset); + if (length == NULL) { + char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0); + length = (GLsizei *) (_lengthBase + _lengthBufferOffset); + } + if (size == NULL) { + char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0); + size = (GLint *) (_sizeBase + _sizeBufferOffset); + } + if (type == NULL) { + char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0); + type = (GLenum *) (_typeBase + _typeBufferOffset); + } glGetActiveUniform( (GLuint)program, (GLuint)index, @@ -1605,14 +1697,14 @@ android_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_n (GLenum *)type, (char *)name ); - if (_lengthArray) { - releasePointer(_env, _lengthArray, type, JNI_TRUE); + if (_typeArray) { + releasePointer(_env, _typeArray, type, JNI_TRUE); } if (_sizeArray) { releasePointer(_env, _sizeArray, size, JNI_TRUE); } - if (_typeArray) { - releasePointer(_env, _typeArray, length, JNI_TRUE); + if (_lengthArray) { + releasePointer(_env, _lengthArray, length, JNI_TRUE); } } @@ -1690,25 +1782,35 @@ static void android_glGetAttachedShaders__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint program, jint maxcount, jobject count_buf, jobject shaders_buf) { jarray _countArray = (jarray) 0; + jint _countBufferOffset = (jint) 0; jarray _shadersArray = (jarray) 0; + jint _shadersBufferOffset = (jint) 0; jint _countRemaining; GLsizei *count = (GLsizei *) 0; jint _shadersRemaining; GLuint *shaders = (GLuint *) 0; - count = (GLsizei *)getPointer(_env, count_buf, &_countArray, &_countRemaining); - shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining); + count = (GLsizei *)getPointer(_env, count_buf, &_countArray, &_countRemaining, &_countBufferOffset); + shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining, &_shadersBufferOffset); + if (count == NULL) { + char * _countBase = (char *)_env->GetPrimitiveArrayCritical(_countArray, (jboolean *) 0); + count = (GLsizei *) (_countBase + _countBufferOffset); + } + if (shaders == NULL) { + char * _shadersBase = (char *)_env->GetPrimitiveArrayCritical(_shadersArray, (jboolean *) 0); + shaders = (GLuint *) (_shadersBase + _shadersBufferOffset); + } glGetAttachedShaders( (GLuint)program, (GLsizei)maxcount, (GLsizei *)count, (GLuint *)shaders ); - if (_countArray) { - releasePointer(_env, _countArray, shaders, JNI_TRUE); - } if (_shadersArray) { - releasePointer(_env, _shadersArray, count, JNI_TRUE); + releasePointer(_env, _shadersArray, shaders, JNI_TRUE); + } + if (_countArray) { + releasePointer(_env, _countArray, count, JNI_TRUE); } } @@ -1793,10 +1895,15 @@ static void android_glGetBooleanv__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLboolean *params = (GLboolean *) 0; - params = (GLboolean *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLboolean *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLboolean *) (_paramsBase + _bufferOffset); + } glGetBooleanv( (GLenum)pname, (GLboolean *)params @@ -1864,16 +1971,21 @@ android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetBufferParameteriv( (GLenum)target, (GLenum)pname, @@ -1946,10 +2058,15 @@ static void android_glGetFloatv__ILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetFloatv( (GLenum)pname, (GLfloat *)params @@ -2009,10 +2126,15 @@ static void android_glGetFramebufferAttachmentParameteriv__IIILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetFramebufferAttachmentParameteriv( (GLenum)target, (GLenum)attachment, @@ -2412,10 +2534,11 @@ android_glGetIntegerv__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_ALPHA_BITS) @@ -2753,6 +2876,10 @@ android_glGetIntegerv__ILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetIntegerv( (GLenum)pname, (GLint *)params @@ -2816,10 +2943,15 @@ static void android_glGetProgramiv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint program, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetProgramiv( (GLuint)program, (GLenum)pname, @@ -2898,10 +3030,15 @@ static void android_glGetRenderbufferParameteriv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetRenderbufferParameteriv( (GLenum)target, (GLenum)pname, @@ -2961,10 +3098,15 @@ static void android_glGetShaderiv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint shader, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetShaderiv( (GLuint)shader, (GLenum)pname, @@ -3068,25 +3210,35 @@ static void android_glGetShaderPrecisionFormat__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint shadertype, jint precisiontype, jobject range_buf, jobject precision_buf) { jarray _rangeArray = (jarray) 0; + jint _rangeBufferOffset = (jint) 0; jarray _precisionArray = (jarray) 0; + jint _precisionBufferOffset = (jint) 0; jint _rangeRemaining; GLint *range = (GLint *) 0; jint _precisionRemaining; GLint *precision = (GLint *) 0; - range = (GLint *)getPointer(_env, range_buf, &_rangeArray, &_rangeRemaining); - precision = (GLint *)getPointer(_env, precision_buf, &_precisionArray, &_precisionRemaining); + range = (GLint *)getPointer(_env, range_buf, &_rangeArray, &_rangeRemaining, &_rangeBufferOffset); + precision = (GLint *)getPointer(_env, precision_buf, &_precisionArray, &_precisionRemaining, &_precisionBufferOffset); + if (range == NULL) { + char * _rangeBase = (char *)_env->GetPrimitiveArrayCritical(_rangeArray, (jboolean *) 0); + range = (GLint *) (_rangeBase + _rangeBufferOffset); + } + if (precision == NULL) { + char * _precisionBase = (char *)_env->GetPrimitiveArrayCritical(_precisionArray, (jboolean *) 0); + precision = (GLint *) (_precisionBase + _precisionBufferOffset); + } glGetShaderPrecisionFormat( (GLenum)shadertype, (GLenum)precisiontype, (GLint *)range, (GLint *)precision ); - if (_rangeArray) { - releasePointer(_env, _rangeArray, precision, JNI_TRUE); - } if (_precisionArray) { - releasePointer(_env, _precisionArray, range, JNI_TRUE); + releasePointer(_env, _precisionArray, precision, JNI_TRUE); + } + if (_rangeArray) { + releasePointer(_env, _rangeArray, range, JNI_TRUE); } } @@ -3164,10 +3316,15 @@ static void android_glGetShaderSource__IILjava_nio_IntBuffer_2B (JNIEnv *_env, jobject _this, jint shader, jint bufsize, jobject length_buf, jbyte source) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLsizei *length = (GLsizei *) 0; - length = (GLsizei *)getPointer(_env, length_buf, &_array, &_remaining); + length = (GLsizei *)getPointer(_env, length_buf, &_array, &_remaining, &_bufferOffset); + if (length == NULL) { + char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + length = (GLsizei *) (_lengthBase + _bufferOffset); + } glGetShaderSource( (GLuint)shader, (GLsizei)bufsize, @@ -3242,16 +3399,21 @@ android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetTexParameterfv( (GLenum)target, (GLenum)pname, @@ -3325,16 +3487,21 @@ android_glGetTexParameteriv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetTexParameteriv( (GLenum)target, (GLenum)pname, @@ -3399,10 +3566,15 @@ static void android_glGetUniformfv__IILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetUniformfv( (GLuint)program, (GLint)location, @@ -3462,10 +3634,15 @@ static void android_glGetUniformiv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetUniformiv( (GLuint)program, (GLint)location, @@ -3558,10 +3735,15 @@ static void android_glGetVertexAttribfv__IILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetVertexAttribfv( (GLuint)index, (GLenum)pname, @@ -3621,10 +3803,15 @@ static void android_glGetVertexAttribiv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetVertexAttribiv( (GLuint)index, (GLenum)pname, @@ -3765,10 +3952,15 @@ static void android_glReadPixels__IIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pixels = (GLvoid *) 0; - pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining); + pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); + if (pixels == NULL) { + char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + pixels = (GLvoid *) (_pixelsBase + _bufferOffset); + } glReadPixels( (GLint)x, (GLint)y, @@ -3832,6 +4024,7 @@ android_glShaderBinary__I_3IIILjava_nio_Buffer_2I const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; GLuint *shaders_base = (GLuint *) 0; jint _shadersRemaining; GLuint *shaders = (GLuint *) 0; @@ -3855,7 +4048,11 @@ android_glShaderBinary__I_3IIILjava_nio_Buffer_2I _env->GetPrimitiveArrayCritical(shaders_ref, (jboolean *)0); shaders = shaders_base + offset; - binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_binaryRemaining); + binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_binaryRemaining, &_bufferOffset); + if (binary == NULL) { + char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + binary = (GLvoid *) (_binaryBase + _bufferOffset); + } glShaderBinary( (GLsizei)n, (GLuint *)shaders, @@ -3882,14 +4079,24 @@ static void android_glShaderBinary__ILjava_nio_IntBuffer_2ILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint n, jobject shaders_buf, jint binaryformat, jobject binary_buf, jint length) { jarray _shadersArray = (jarray) 0; + jint _shadersBufferOffset = (jint) 0; jarray _binaryArray = (jarray) 0; + jint _binaryBufferOffset = (jint) 0; jint _shadersRemaining; GLuint *shaders = (GLuint *) 0; jint _binaryRemaining; GLvoid *binary = (GLvoid *) 0; - shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining); - binary = (GLvoid *)getPointer(_env, binary_buf, &_binaryArray, &_binaryRemaining); + shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining, &_shadersBufferOffset); + binary = (GLvoid *)getPointer(_env, binary_buf, &_binaryArray, &_binaryRemaining, &_binaryBufferOffset); + if (shaders == NULL) { + char * _shadersBase = (char *)_env->GetPrimitiveArrayCritical(_shadersArray, (jboolean *) 0); + shaders = (GLuint *) (_shadersBase + _shadersBufferOffset); + } + if (binary == NULL) { + char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_binaryArray, (jboolean *) 0); + binary = (GLvoid *) (_binaryBase + _binaryBufferOffset); + } glShaderBinary( (GLsizei)n, (GLuint *)shaders, @@ -3897,11 +4104,11 @@ android_glShaderBinary__ILjava_nio_IntBuffer_2ILjava_nio_Buffer_2I (GLvoid *)binary, (GLsizei)length ); - if (_shadersArray) { - releasePointer(_env, _shadersArray, binary, JNI_FALSE); - } if (_binaryArray) { - releasePointer(_env, _binaryArray, shaders, JNI_FALSE); + releasePointer(_env, _binaryArray, binary, JNI_FALSE); + } + if (_shadersArray) { + releasePointer(_env, _shadersArray, shaders, JNI_FALSE); } } @@ -3992,11 +4199,16 @@ static void android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pixels = (GLvoid *) 0; if (pixels_buf) { - pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining); + pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); + } + if (pixels == NULL) { + char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + pixels = (GLvoid *) (_pixelsBase + _bufferOffset); } glTexImage2D( (GLenum)target, @@ -4083,16 +4295,21 @@ android_glTexParameterfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glTexParameterfv( (GLenum)target, (GLenum)pname, @@ -4177,16 +4394,21 @@ android_glTexParameteriv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glTexParameteriv( (GLenum)target, (GLenum)pname, @@ -4207,11 +4429,16 @@ static void android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pixels = (GLvoid *) 0; if (pixels_buf) { - pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining); + pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); + } + if (pixels == NULL) { + char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + pixels = (GLvoid *) (_pixelsBase + _bufferOffset); } glTexSubImage2D( (GLenum)target, @@ -4288,10 +4515,15 @@ static void android_glUniform1fv__IILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *v = (GLfloat *) 0; - v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining); + v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); + if (v == NULL) { + char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + v = (GLfloat *) (_vBase + _bufferOffset); + } glUniform1fv( (GLint)location, (GLsizei)count, @@ -4361,10 +4593,15 @@ static void android_glUniform1iv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *v = (GLint *) 0; - v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining); + v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); + if (v == NULL) { + char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + v = (GLint *) (_vBase + _bufferOffset); + } glUniform1iv( (GLint)location, (GLsizei)count, @@ -4435,10 +4672,15 @@ static void android_glUniform2fv__IILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *v = (GLfloat *) 0; - v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining); + v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); + if (v == NULL) { + char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + v = (GLfloat *) (_vBase + _bufferOffset); + } glUniform2fv( (GLint)location, (GLsizei)count, @@ -4509,10 +4751,15 @@ static void android_glUniform2iv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *v = (GLint *) 0; - v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining); + v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); + if (v == NULL) { + char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + v = (GLint *) (_vBase + _bufferOffset); + } glUniform2iv( (GLint)location, (GLsizei)count, @@ -4584,10 +4831,15 @@ static void android_glUniform3fv__IILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *v = (GLfloat *) 0; - v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining); + v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); + if (v == NULL) { + char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + v = (GLfloat *) (_vBase + _bufferOffset); + } glUniform3fv( (GLint)location, (GLsizei)count, @@ -4659,10 +4911,15 @@ static void android_glUniform3iv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *v = (GLint *) 0; - v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining); + v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); + if (v == NULL) { + char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + v = (GLint *) (_vBase + _bufferOffset); + } glUniform3iv( (GLint)location, (GLsizei)count, @@ -4735,10 +4992,15 @@ static void android_glUniform4fv__IILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *v = (GLfloat *) 0; - v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining); + v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); + if (v == NULL) { + char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + v = (GLfloat *) (_vBase + _bufferOffset); + } glUniform4fv( (GLint)location, (GLsizei)count, @@ -4811,10 +5073,15 @@ static void android_glUniform4iv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *v = (GLint *) 0; - v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining); + v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); + if (v == NULL) { + char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + v = (GLint *) (_vBase + _bufferOffset); + } glUniform4iv( (GLint)location, (GLsizei)count, @@ -4875,10 +5142,15 @@ static void android_glUniformMatrix2fv__IIZLjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *value = (GLfloat *) 0; - value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining); + value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); + if (value == NULL) { + char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + value = (GLfloat *) (_valueBase + _bufferOffset); + } glUniformMatrix2fv( (GLint)location, (GLsizei)count, @@ -4940,10 +5212,15 @@ static void android_glUniformMatrix3fv__IIZLjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *value = (GLfloat *) 0; - value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining); + value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); + if (value == NULL) { + char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + value = (GLfloat *) (_valueBase + _bufferOffset); + } glUniformMatrix3fv( (GLint)location, (GLsizei)count, @@ -5005,10 +5282,15 @@ static void android_glUniformMatrix4fv__IIZLjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *value = (GLfloat *) 0; - value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining); + value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); + if (value == NULL) { + char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + value = (GLfloat *) (_valueBase + _bufferOffset); + } glUniformMatrix4fv( (GLint)location, (GLsizei)count, @@ -5096,10 +5378,15 @@ static void android_glVertexAttrib1fv__ILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *values = (GLfloat *) 0; - values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining); + values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset); + if (values == NULL) { + char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + values = (GLfloat *) (_valuesBase + _bufferOffset); + } glVertexAttrib1fv( (GLuint)indx, (GLfloat *)values @@ -5168,10 +5455,15 @@ static void android_glVertexAttrib2fv__ILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *values = (GLfloat *) 0; - values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining); + values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset); + if (values == NULL) { + char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + values = (GLfloat *) (_valuesBase + _bufferOffset); + } glVertexAttrib2fv( (GLuint)indx, (GLfloat *)values @@ -5241,10 +5533,15 @@ static void android_glVertexAttrib3fv__ILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *values = (GLfloat *) 0; - values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining); + values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset); + if (values == NULL) { + char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + values = (GLfloat *) (_valuesBase + _bufferOffset); + } glVertexAttrib3fv( (GLuint)indx, (GLfloat *)values @@ -5315,10 +5612,15 @@ static void android_glVertexAttrib4fv__ILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *values = (GLfloat *) 0; - values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining); + values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset); + if (values == NULL) { + char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + values = (GLfloat *) (_valuesBase + _bufferOffset); + } glVertexAttrib4fv( (GLuint)indx, (GLfloat *)values @@ -5347,6 +5649,7 @@ static void android_glVertexAttribPointerBounds__IIIZILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint indx, jint size, jint type, jboolean normalized, jint stride, jobject ptr_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *ptr = (GLvoid *) 0; diff --git a/core/jni/com_google_android_gles_jni_GLImpl.cpp b/core/jni/com_google_android_gles_jni_GLImpl.cpp index 0310dc712a03..9730c091ffbc 100644 --- a/core/jni/com_google_android_gles_jni_GLImpl.cpp +++ b/core/jni/com_google_android_gles_jni_GLImpl.cpp @@ -114,14 +114,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); @@ -139,11 +137,10 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) if (*array == NULL) { return (void*) NULL; } - 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 @@ -181,10 +178,12 @@ getDirectBufferPointer(JNIEnv *_env, jobject buffer) { if (allowIndirectBuffers(_env)) { jarray array = 0; jint remaining; - buf = getPointer(_env, buffer, &array, &remaining); + jint offset; + buf = getPointer(_env, buffer, &array, &remaining, &offset); if (array) { releasePointer(_env, array, buf, 0); } + buf = buf + offset; } else { jniThrowException(_env, "java/lang/IllegalArgumentException", "Must use a native order direct Buffer"); @@ -418,6 +417,7 @@ static void android_glColorPointerBounds__IIILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -441,10 +441,15 @@ static void android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *data = (GLvoid *) 0; - data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); + data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); + if (data == NULL) { + char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + data = (GLvoid *) (_dataBase + _bufferOffset); + } glCompressedTexImage2D( (GLenum)target, (GLint)level, @@ -465,10 +470,15 @@ static void android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *data = (GLvoid *) 0; - data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); + data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); + if (data == NULL) { + char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + data = (GLvoid *) (_dataBase + _bufferOffset); + } glCompressedTexSubImage2D( (GLenum)target, (GLint)level, @@ -583,16 +593,21 @@ android_glDeleteTextures__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *textures = (GLuint *) 0; - textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining); + textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (textures == NULL) { + char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + textures = (GLuint *) (_texturesBase + _bufferOffset); + } glDeleteTextures( (GLsizei)n, (GLuint *)textures @@ -682,16 +697,21 @@ android_glDrawElements__IIILjava_nio_Buffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *indices = (GLvoid *) 0; - indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining); + indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < count) { _exception = 1; _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; _exceptionMessage = "remaining() < count < needed"; goto exit; } + if (indices == NULL) { + char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + indices = (GLvoid *) (_indicesBase + _bufferOffset); + } glDrawElements( (GLenum)mode, (GLsizei)count, @@ -832,10 +852,11 @@ android_glFogfv__ILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_FOG_MODE) @@ -867,6 +888,10 @@ android_glFogfv__ILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glFogfv( (GLenum)pname, (GLfloat *)params @@ -973,10 +998,11 @@ android_glFogxv__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_FOG_MODE) @@ -1008,6 +1034,10 @@ android_glFogxv__ILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glFogxv( (GLenum)pname, (GLfixed *)params @@ -1116,16 +1146,21 @@ android_glGenTextures__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *textures = (GLuint *) 0; - textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining); + textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (textures == NULL) { + char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + textures = (GLuint *) (_texturesBase + _bufferOffset); + } glGenTextures( (GLsizei)n, (GLuint *)textures @@ -1537,10 +1572,11 @@ android_glGetIntegerv__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_ALPHA_BITS) @@ -1878,6 +1914,10 @@ android_glGetIntegerv__ILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetIntegerv( (GLenum)pname, (GLint *)params @@ -1990,10 +2030,11 @@ android_glLightModelfv__ILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_LIGHT_MODEL_TWO_SIDE) @@ -2016,6 +2057,10 @@ android_glLightModelfv__ILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glLightModelfv( (GLenum)pname, (GLfloat *)params @@ -2113,10 +2158,11 @@ android_glLightModelxv__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_LIGHT_MODEL_TWO_SIDE) @@ -2139,6 +2185,10 @@ android_glLightModelxv__ILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glLightModelxv( (GLenum)pname, (GLfixed *)params @@ -2264,10 +2314,11 @@ android_glLightfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SPOT_EXPONENT) @@ -2316,6 +2367,10 @@ android_glLightfv__IILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glLightfv( (GLenum)light, (GLenum)pname, @@ -2442,10 +2497,11 @@ android_glLightxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SPOT_EXPONENT) @@ -2494,6 +2550,10 @@ android_glLightxv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glLightxv( (GLenum)light, (GLenum)pname, @@ -2581,10 +2641,15 @@ static void android_glLoadMatrixf__Ljava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jobject m_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *m = (GLfloat *) 0; - m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining); + m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset); + if (m == NULL) { + char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + m = (GLfloat *) (_mBase + _bufferOffset); + } glLoadMatrixf( (GLfloat *)m ); @@ -2640,10 +2705,15 @@ static void android_glLoadMatrixx__Ljava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jobject m_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *m = (GLfixed *) 0; - m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining); + m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset); + if (m == NULL) { + char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + m = (GLfixed *) (_mBase + _bufferOffset); + } glLoadMatrixx( (GLfixed *)m ); @@ -2758,10 +2828,11 @@ android_glMaterialfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SHININESS) @@ -2796,6 +2867,10 @@ android_glMaterialfv__IILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glMaterialfv( (GLenum)face, (GLenum)pname, @@ -2908,10 +2983,11 @@ android_glMaterialxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SHININESS) @@ -2946,6 +3022,10 @@ android_glMaterialxv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glMaterialxv( (GLenum)face, (GLenum)pname, @@ -3017,10 +3097,15 @@ static void android_glMultMatrixf__Ljava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jobject m_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *m = (GLfloat *) 0; - m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining); + m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset); + if (m == NULL) { + char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + m = (GLfloat *) (_mBase + _bufferOffset); + } glMultMatrixf( (GLfloat *)m ); @@ -3076,10 +3161,15 @@ static void android_glMultMatrixx__Ljava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jobject m_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *m = (GLfixed *) 0; - m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining); + m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset); + if (m == NULL) { + char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + m = (GLfixed *) (_mBase + _bufferOffset); + } glMultMatrixx( (GLfixed *)m ); @@ -3141,6 +3231,7 @@ static void android_glNormalPointerBounds__IILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -3253,10 +3344,15 @@ static void android_glReadPixels__IIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pixels = (GLvoid *) 0; - pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining); + pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); + if (pixels == NULL) { + char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + pixels = (GLvoid *) (_pixelsBase + _bufferOffset); + } glReadPixels( (GLint)x, (GLint)y, @@ -3394,6 +3490,7 @@ static void android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -3503,10 +3600,11 @@ android_glTexEnvfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_TEXTURE_ENV_MODE) @@ -3535,6 +3633,10 @@ android_glTexEnvfv__IILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glTexEnvfv( (GLenum)target, (GLenum)pname, @@ -3641,10 +3743,11 @@ android_glTexEnvxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_TEXTURE_ENV_MODE) @@ -3673,6 +3776,10 @@ android_glTexEnvxv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glTexEnvxv( (GLenum)target, (GLenum)pname, @@ -3693,11 +3800,16 @@ static void android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pixels = (GLvoid *) 0; if (pixels_buf) { - pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining); + pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); + } + if (pixels == NULL) { + char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + pixels = (GLvoid *) (_pixelsBase + _bufferOffset); } glTexImage2D( (GLenum)target, @@ -3742,11 +3854,16 @@ static void android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pixels = (GLvoid *) 0; if (pixels_buf) { - pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining); + pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); + } + if (pixels == NULL) { + char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + pixels = (GLvoid *) (_pixelsBase + _bufferOffset); } glTexSubImage2D( (GLenum)target, @@ -3791,6 +3908,7 @@ static void android_glVertexPointerBounds__IIILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -3910,38 +4028,48 @@ android_glQueryMatrixxOES__Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _mantissaArray = (jarray) 0; + jint _mantissaBufferOffset = (jint) 0; jarray _exponentArray = (jarray) 0; + jint _exponentBufferOffset = (jint) 0; GLbitfield _returnValue = -1; jint _mantissaRemaining; GLfixed *mantissa = (GLfixed *) 0; jint _exponentRemaining; GLint *exponent = (GLint *) 0; - mantissa = (GLfixed *)getPointer(_env, mantissa_buf, &_mantissaArray, &_mantissaRemaining); + mantissa = (GLfixed *)getPointer(_env, mantissa_buf, &_mantissaArray, &_mantissaRemaining, &_mantissaBufferOffset); if (_mantissaRemaining < 16) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 16 < needed"; goto exit; } - exponent = (GLint *)getPointer(_env, exponent_buf, &_exponentArray, &_exponentRemaining); + exponent = (GLint *)getPointer(_env, exponent_buf, &_exponentArray, &_exponentRemaining, &_exponentBufferOffset); if (_exponentRemaining < 16) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 16 < needed"; goto exit; } + if (mantissa == NULL) { + char * _mantissaBase = (char *)_env->GetPrimitiveArrayCritical(_mantissaArray, (jboolean *) 0); + mantissa = (GLfixed *) (_mantissaBase + _mantissaBufferOffset); + } + if (exponent == NULL) { + char * _exponentBase = (char *)_env->GetPrimitiveArrayCritical(_exponentArray, (jboolean *) 0); + exponent = (GLint *) (_exponentBase + _exponentBufferOffset); + } _returnValue = glQueryMatrixxOES( (GLfixed *)mantissa, (GLint *)exponent ); exit: - if (_mantissaArray) { - releasePointer(_env, _mantissaArray, exponent, _exception ? JNI_FALSE : JNI_TRUE); - } if (_exponentArray) { - releasePointer(_env, _exponentArray, mantissa, _exception ? JNI_FALSE : JNI_TRUE); + releasePointer(_env, _exponentArray, exponent, _exception ? JNI_FALSE : JNI_TRUE); + } + if (_mantissaArray) { + releasePointer(_env, _mantissaArray, mantissa, _exception ? JNI_FALSE : JNI_TRUE); } if (_exception) { jniThrowException(_env, _exceptionType, _exceptionMessage); @@ -3967,11 +4095,12 @@ android_glBufferData__IILjava_nio_Buffer_2I const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *data = (GLvoid *) 0; if (data_buf) { - data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); + data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < size) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; @@ -3979,6 +4108,10 @@ android_glBufferData__IILjava_nio_Buffer_2I goto exit; } } + if (data == NULL) { + char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + data = (GLvoid *) (_dataBase + _bufferOffset); + } glBufferData( (GLenum)target, (GLsizeiptr)size, @@ -4003,16 +4136,21 @@ android_glBufferSubData__IIILjava_nio_Buffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *data = (GLvoid *) 0; - data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); + data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < size) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < size < needed"; goto exit; } + if (data == NULL) { + char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + data = (GLvoid *) (_dataBase + _bufferOffset); + } glBufferSubData( (GLenum)target, (GLintptr)offset, @@ -4086,16 +4224,21 @@ android_glClipPlanef__ILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *equation = (GLfloat *) 0; - equation = (GLfloat *)getPointer(_env, equation_buf, &_array, &_remaining); + equation = (GLfloat *)getPointer(_env, equation_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 4) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 4 < needed"; goto exit; } + if (equation == NULL) { + char * _equationBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + equation = (GLfloat *) (_equationBase + _bufferOffset); + } glClipPlanef( (GLenum)plane, (GLfloat *)equation @@ -4167,16 +4310,21 @@ android_glClipPlanex__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *equation = (GLfixed *) 0; - equation = (GLfixed *)getPointer(_env, equation_buf, &_array, &_remaining); + equation = (GLfixed *)getPointer(_env, equation_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 4) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 4 < needed"; goto exit; } + if (equation == NULL) { + char * _equationBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + equation = (GLfixed *) (_equationBase + _bufferOffset); + } glClipPlanex( (GLenum)plane, (GLfixed *)equation @@ -4272,16 +4420,21 @@ android_glDeleteBuffers__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *buffers = (GLuint *) 0; - buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining); + buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (buffers == NULL) { + char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + buffers = (GLuint *) (_buffersBase + _bufferOffset); + } glDeleteBuffers( (GLsizei)n, (GLuint *)buffers @@ -4371,16 +4524,21 @@ android_glGenBuffers__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *buffers = (GLuint *) 0; - buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining); + buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (buffers == NULL) { + char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + buffers = (GLuint *) (_buffersBase + _bufferOffset); + } glGenBuffers( (GLsizei)n, (GLuint *)buffers @@ -4443,10 +4601,15 @@ static void android_glGetBooleanv__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLboolean *params = (GLboolean *) 0; - params = (GLboolean *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLboolean *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLboolean *) (_paramsBase + _bufferOffset); + } glGetBooleanv( (GLenum)pname, (GLboolean *)params @@ -4520,10 +4683,15 @@ static void android_glGetClipPlanef__ILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject eqn_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *eqn = (GLfloat *) 0; - eqn = (GLfloat *)getPointer(_env, eqn_buf, &_array, &_remaining); + eqn = (GLfloat *)getPointer(_env, eqn_buf, &_array, &_remaining, &_bufferOffset); + if (eqn == NULL) { + char * _eqnBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + eqn = (GLfloat *) (_eqnBase + _bufferOffset); + } glGetClipPlanef( (GLenum)pname, (GLfloat *)eqn @@ -4581,10 +4749,15 @@ static void android_glGetClipPlanex__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject eqn_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *eqn = (GLfixed *) 0; - eqn = (GLfixed *)getPointer(_env, eqn_buf, &_array, &_remaining); + eqn = (GLfixed *)getPointer(_env, eqn_buf, &_array, &_remaining, &_bufferOffset); + if (eqn == NULL) { + char * _eqnBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + eqn = (GLfixed *) (_eqnBase + _bufferOffset); + } glGetClipPlanex( (GLenum)pname, (GLfixed *)eqn @@ -4642,10 +4815,15 @@ static void android_glGetFixedv__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetFixedv( (GLenum)pname, (GLfixed *)params @@ -4703,10 +4881,15 @@ static void android_glGetFloatv__ILjava_nio_FloatBuffer_2 (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetFloatv( (GLenum)pname, (GLfloat *)params @@ -4816,10 +4999,11 @@ android_glGetLightfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SPOT_EXPONENT) @@ -4868,6 +5052,10 @@ android_glGetLightfv__IILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetLightfv( (GLenum)light, (GLenum)pname, @@ -4983,10 +5171,11 @@ android_glGetLightxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SPOT_EXPONENT) @@ -5035,6 +5224,10 @@ android_glGetLightxv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetLightxv( (GLenum)light, (GLenum)pname, @@ -5136,10 +5329,11 @@ android_glGetMaterialfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SHININESS) @@ -5174,6 +5368,10 @@ android_glGetMaterialfv__IILjava_nio_FloatBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetMaterialfv( (GLenum)face, (GLenum)pname, @@ -5275,10 +5473,11 @@ android_glGetMaterialxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_SHININESS) @@ -5313,6 +5512,10 @@ android_glGetMaterialxv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetMaterialxv( (GLenum)face, (GLenum)pname, @@ -5408,10 +5611,11 @@ android_glGetTexEnviv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_TEXTURE_ENV_MODE) @@ -5440,6 +5644,10 @@ android_glGetTexEnviv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetTexEnviv( (GLenum)env, (GLenum)pname, @@ -5535,10 +5743,11 @@ android_glGetTexEnvxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_TEXTURE_ENV_MODE) @@ -5567,6 +5776,10 @@ android_glGetTexEnvxv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetTexEnvxv( (GLenum)env, (GLenum)pname, @@ -5640,16 +5853,21 @@ android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetTexParameterfv( (GLenum)target, (GLenum)pname, @@ -5723,16 +5941,21 @@ android_glGetTexParameteriv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetTexParameteriv( (GLenum)target, (GLenum)pname, @@ -5806,16 +6029,21 @@ android_glGetTexParameterxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glGetTexParameterxv( (GLenum)target, (GLenum)pname, @@ -5942,16 +6170,21 @@ android_glPointParameterfv__ILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glPointParameterfv( (GLenum)pname, (GLfloat *)params @@ -6033,16 +6266,21 @@ android_glPointParameterxv__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glPointParameterxv( (GLenum)pname, (GLfixed *)params @@ -6062,6 +6300,7 @@ static void android_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -6182,10 +6421,11 @@ android_glTexEnviv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); int _needed; switch (pname) { #if defined(GL_TEXTURE_ENV_MODE) @@ -6214,6 +6454,10 @@ android_glTexEnviv__IILjava_nio_IntBuffer_2 _exceptionMessage = "remaining() < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glTexEnviv( (GLenum)target, (GLenum)pname, @@ -6287,16 +6531,21 @@ android_glTexParameterfv__IILjava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glTexParameterfv( (GLenum)target, (GLenum)pname, @@ -6381,16 +6630,21 @@ android_glTexParameteriv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glTexParameteriv( (GLenum)target, (GLenum)pname, @@ -6464,16 +6718,21 @@ android_glTexParameterxv__IILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *params = (GLfixed *) 0; - params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 1) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 1 < needed"; goto exit; } + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfixed *) (_paramsBase + _bufferOffset); + } glTexParameterxv( (GLenum)target, (GLenum)pname, @@ -6579,16 +6838,21 @@ android_glDrawTexfvOES__Ljava_nio_FloatBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *coords = (GLfloat *) 0; - coords = (GLfloat *)getPointer(_env, coords_buf, &_array, &_remaining); + coords = (GLfloat *)getPointer(_env, coords_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 5) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 5 < needed"; goto exit; } + if (coords == NULL) { + char * _coordsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + coords = (GLfloat *) (_coordsBase + _bufferOffset); + } glDrawTexfvOES( (GLfloat *)coords ); @@ -6671,16 +6935,21 @@ android_glDrawTexivOES__Ljava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *coords = (GLint *) 0; - coords = (GLint *)getPointer(_env, coords_buf, &_array, &_remaining); + coords = (GLint *)getPointer(_env, coords_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 5) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 5 < needed"; goto exit; } + if (coords == NULL) { + char * _coordsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + coords = (GLint *) (_coordsBase + _bufferOffset); + } glDrawTexivOES( (GLint *)coords ); @@ -6763,16 +7032,21 @@ android_glDrawTexsvOES__Ljava_nio_ShortBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLshort *coords = (GLshort *) 0; - coords = (GLshort *)getPointer(_env, coords_buf, &_array, &_remaining); + coords = (GLshort *)getPointer(_env, coords_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 5) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 5 < needed"; goto exit; } + if (coords == NULL) { + char * _coordsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + coords = (GLshort *) (_coordsBase + _bufferOffset); + } glDrawTexsvOES( (GLshort *)coords ); @@ -6855,16 +7129,21 @@ android_glDrawTexxvOES__Ljava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfixed *coords = (GLfixed *) 0; - coords = (GLfixed *)getPointer(_env, coords_buf, &_array, &_remaining); + coords = (GLfixed *)getPointer(_env, coords_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < 5) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < 5 < needed"; goto exit; } + if (coords == NULL) { + char * _coordsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + coords = (GLfixed *) (_coordsBase + _bufferOffset); + } glDrawTexxvOES( (GLfixed *)coords ); @@ -6890,6 +7169,7 @@ static void android_glMatrixIndexPointerOESBounds__IIILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -6925,6 +7205,7 @@ static void android_glWeightPointerOESBounds__IIILjava_nio_Buffer_2I (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLvoid *pointer = (GLvoid *) 0; @@ -7114,16 +7395,21 @@ android_glDeleteFramebuffersOES__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *framebuffers = (GLuint *) 0; - framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining); + framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (framebuffers == NULL) { + char * _framebuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset); + } glDeleteFramebuffersOES( (GLint)n, (GLuint *)framebuffers @@ -7205,16 +7491,21 @@ android_glDeleteRenderbuffersOES__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *renderbuffers = (GLuint *) 0; - renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining); + renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (renderbuffers == NULL) { + char * _renderbuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset); + } glDeleteRenderbuffersOES( (GLint)n, (GLuint *)renderbuffers @@ -7345,16 +7636,21 @@ android_glGenFramebuffersOES__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *framebuffers = (GLuint *) 0; - framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining); + framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (framebuffers == NULL) { + char * _framebuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset); + } glGenFramebuffersOES( (GLint)n, (GLuint *)framebuffers @@ -7436,16 +7732,21 @@ android_glGenRenderbuffersOES__ILjava_nio_IntBuffer_2 const char * _exceptionType; const char * _exceptionMessage; jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLuint *renderbuffers = (GLuint *) 0; - renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining); + renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining, &_bufferOffset); if (_remaining < n) { _exception = 1; _exceptionType = "java/lang/IllegalArgumentException"; _exceptionMessage = "remaining() < n < needed"; goto exit; } + if (renderbuffers == NULL) { + char * _renderbuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset); + } glGenRenderbuffersOES( (GLint)n, (GLuint *)renderbuffers @@ -7520,10 +7821,15 @@ android_glGetFramebufferAttachmentParameterivOES__IIILjava_nio_IntBuffer_2 return; } jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetFramebufferAttachmentParameterivOES( (GLint)target, (GLint)attachment, @@ -7594,10 +7900,15 @@ android_glGetRenderbufferParameterivOES__IILjava_nio_IntBuffer_2 return; } jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetRenderbufferParameterivOES( (GLint)target, (GLint)pname, @@ -7667,10 +7978,15 @@ android_glGetTexGenfv__IILjava_nio_FloatBuffer_2 return; } jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glGetTexGenfv( (GLint)coord, (GLint)pname, @@ -7740,10 +8056,15 @@ android_glGetTexGeniv__IILjava_nio_IntBuffer_2 return; } jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetTexGeniv( (GLint)coord, (GLint)pname, @@ -7813,10 +8134,15 @@ android_glGetTexGenxv__IILjava_nio_IntBuffer_2 return; } jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glGetTexGenxv( (GLint)coord, (GLint)pname, @@ -7951,10 +8277,15 @@ android_glTexGenfv__IILjava_nio_FloatBuffer_2 return; } jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLfloat *params = (GLfloat *) 0; - params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLfloat *) (_paramsBase + _bufferOffset); + } glTexGenfv( (GLint)coord, (GLint)pname, @@ -8040,10 +8371,15 @@ android_glTexGeniv__IILjava_nio_IntBuffer_2 return; } jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glTexGeniv( (GLint)coord, (GLint)pname, @@ -8129,10 +8465,15 @@ android_glTexGenxv__IILjava_nio_IntBuffer_2 return; } jarray _array = (jarray) 0; + jint _bufferOffset = (jint) 0; jint _remaining; GLint *params = (GLint *) 0; - params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); + if (params == NULL) { + char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); + params = (GLint *) (_paramsBase + _bufferOffset); + } glTexGenxv( (GLint)coord, (GLint)pname, |