Replace JNI primitive array critical calls with non-critical ones.

The files generated by glgen + manually edited util.cpp.

Bug: 19235243

Change-Id: Id48d39bafc21c27fbf667ed0f4e082dda3a37be3
This commit is contained in:
Hiroshi Yamauchi
2015-05-07 19:14:17 -07:00
parent d74c31e253
commit 5b406cb7b5
11 changed files with 2892 additions and 1875 deletions

View File

@@ -150,7 +150,105 @@ int visibilityTest(float* pWS, float* pPositions, int positionsLength,
return result;
}
template<class JArray, class T>
class ByteArrayGetter {
public:
static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) {
return _env->GetByteArrayElements(array, is_copy);
}
};
class BooleanArrayGetter {
public:
static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) {
return _env->GetBooleanArrayElements(array, is_copy);
}
};
class CharArrayGetter {
public:
static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) {
return _env->GetCharArrayElements(array, is_copy);
}
};
class ShortArrayGetter {
public:
static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) {
return _env->GetShortArrayElements(array, is_copy);
}
};
class IntArrayGetter {
public:
static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) {
return _env->GetIntArrayElements(array, is_copy);
}
};
class LongArrayGetter {
public:
static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) {
return _env->GetLongArrayElements(array, is_copy);
}
};
class FloatArrayGetter {
public:
static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) {
return _env->GetFloatArrayElements(array, is_copy);
}
};
class DoubleArrayGetter {
public:
static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) {
return _env->GetDoubleArrayElements(array, is_copy);
}
};
class ByteArrayReleaser {
public:
static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jint mode) {
_env->ReleaseByteArrayElements(array, data, mode);
}
};
class BooleanArrayReleaser {
public:
static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jint mode) {
_env->ReleaseBooleanArrayElements(array, data, mode);
}
};
class CharArrayReleaser {
public:
static void Release(JNIEnv* _env, jcharArray array, jchar* data, jint mode) {
_env->ReleaseCharArrayElements(array, data, mode);
}
};
class ShortArrayReleaser {
public:
static void Release(JNIEnv* _env, jshortArray array, jshort* data, jint mode) {
_env->ReleaseShortArrayElements(array, data, mode);
}
};
class IntArrayReleaser {
public:
static void Release(JNIEnv* _env, jintArray array, jint* data, jint mode) {
_env->ReleaseIntArrayElements(array, data, mode);
}
};
class LongArrayReleaser {
public:
static void Release(JNIEnv* _env, jlongArray array, jlong* data, jint mode) {
_env->ReleaseLongArrayElements(array, data, mode);
}
};
class FloatArrayReleaser {
public:
static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jint mode) {
_env->ReleaseFloatArrayElements(array, data, mode);
}
};
class DoubleArrayReleaser {
public:
static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jint mode) {
_env->ReleaseDoubleArrayElements(array, data, mode);
}
};
template<class JArray, class T, class ArrayGetter, class ArrayReleaser>
class ArrayHelper {
public:
ArrayHelper(JNIEnv* env, JArray ref, jint offset, jint minSize) {
@@ -164,7 +262,7 @@ public:
~ArrayHelper() {
if (mBase) {
mEnv->ReleasePrimitiveArrayCritical(mRef, mBase, mReleaseParam);
ArrayReleaser::Release(mEnv, mRef, mBase, mReleaseParam);
}
}
@@ -195,7 +293,7 @@ public:
// Bind the array.
void bind() {
mBase = (T*) mEnv->GetPrimitiveArrayCritical(mRef, (jboolean *) 0);
mBase = (T*) ArrayGetter::Get(mEnv, mRef, (jboolean *) 0);
mData = mBase + mOffset;
}
@@ -215,10 +313,10 @@ private:
int mReleaseParam;
};
typedef ArrayHelper<jfloatArray, float> FloatArrayHelper;
typedef ArrayHelper<jcharArray, unsigned short> UnsignedShortArrayHelper;
typedef ArrayHelper<jintArray, int> IntArrayHelper;
typedef ArrayHelper<jbyteArray, unsigned char> ByteArrayHelper;
typedef ArrayHelper<jfloatArray, float, FloatArrayGetter, FloatArrayReleaser> FloatArrayHelper;
typedef ArrayHelper<jcharArray, unsigned short, CharArrayGetter, CharArrayReleaser> UnsignedShortArrayHelper;
typedef ArrayHelper<jintArray, int, IntArrayGetter, IntArrayReleaser> IntArrayHelper;
typedef ArrayHelper<jbyteArray, unsigned char, ByteArrayGetter, ByteArrayReleaser> ByteArrayHelper;
inline float distance2(float x, float y, float z) {
return x * x + y * y + z * z;

View File

@@ -204,7 +204,7 @@ android_eglInitialize
goto exit;
}
major_base = (EGLint *)
_env->GetPrimitiveArrayCritical(major_ref, (jboolean *)0);
_env->GetIntArrayElements(major_ref, (jboolean *)0);
major = major_base + majorOffset;
if (!minor_ref) {
@@ -227,7 +227,7 @@ android_eglInitialize
goto exit;
}
minor_base = (EGLint *)
_env->GetPrimitiveArrayCritical(minor_ref, (jboolean *)0);
_env->GetIntArrayElements(minor_ref, (jboolean *)0);
minor = minor_base + minorOffset;
_returnValue = eglInitialize(
@@ -238,11 +238,11 @@ android_eglInitialize
exit:
if (minor_base) {
_env->ReleasePrimitiveArrayCritical(minor_ref, minor_base,
_env->ReleaseIntArrayElements(minor_ref, (jint*)minor_base,
_exception ? JNI_ABORT: 0);
}
if (major_base) {
_env->ReleasePrimitiveArrayCritical(major_ref, major_base,
_env->ReleaseIntArrayElements(major_ref, (jint*)major_base,
_exception ? JNI_ABORT: 0);
}
if (_exception) {
@@ -324,7 +324,7 @@ android_eglGetConfigs
}
_num_configRemaining = _env->GetArrayLength(num_config_ref) - num_configOffset;
num_config_base = (EGLint *)
_env->GetPrimitiveArrayCritical(num_config_ref, (jboolean *)0);
_env->GetIntArrayElements(num_config_ref, (jboolean *)0);
num_config = num_config_base + num_configOffset;
_returnValue = eglGetConfigs(
@@ -336,7 +336,7 @@ android_eglGetConfigs
exit:
if (num_config_base) {
_env->ReleasePrimitiveArrayCritical(num_config_ref, num_config_base,
_env->ReleaseIntArrayElements(num_config_ref, (jint*)num_config_base,
_exception ? JNI_ABORT: 0);
}
if (configs) {
@@ -385,7 +385,7 @@ android_eglChooseConfig
}
_attrib_listRemaining = _env->GetArrayLength(attrib_list_ref) - attrib_listOffset;
attrib_list_base = (EGLint *)
_env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0);
_env->GetIntArrayElements(attrib_list_ref, (jboolean *)0);
attrib_list = attrib_list_base + attrib_listOffset;
attrib_list_sentinel = false;
for (int i = _attrib_listRemaining - 1; i >= 0; i--) {
@@ -442,7 +442,7 @@ android_eglChooseConfig
goto exit;
}
num_config_base = (EGLint *)
_env->GetPrimitiveArrayCritical(num_config_ref, (jboolean *)0);
_env->GetIntArrayElements(num_config_ref, (jboolean *)0);
num_config = num_config_base + num_configOffset;
_returnValue = eglChooseConfig(
@@ -455,11 +455,11 @@ android_eglChooseConfig
exit:
if (num_config_base) {
_env->ReleasePrimitiveArrayCritical(num_config_ref, num_config_base,
_env->ReleaseIntArrayElements(num_config_ref, (jint*)num_config_base,
_exception ? JNI_ABORT: 0);
}
if (attrib_list_base) {
_env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base,
_env->ReleaseIntArrayElements(attrib_list_ref, (jint*)attrib_list_base,
JNI_ABORT);
}
if (configs) {
@@ -509,7 +509,7 @@ android_eglGetConfigAttrib
goto exit;
}
value_base = (EGLint *)
_env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
_env->GetIntArrayElements(value_ref, (jboolean *)0);
value = value_base + offset;
_returnValue = eglGetConfigAttrib(
@@ -521,7 +521,7 @@ android_eglGetConfigAttrib
exit:
if (value_base) {
_env->ReleasePrimitiveArrayCritical(value_ref, value_base,
_env->ReleaseIntArrayElements(value_ref, (jint*)value_base,
_exception ? JNI_ABORT: 0);
}
if (_exception) {
@@ -573,7 +573,7 @@ not_valid_surface:
_remaining = _env->GetArrayLength(attrib_list_ref) - offset;
attrib_list_base = (EGLint *)
_env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0);
_env->GetIntArrayElements(attrib_list_ref, (jboolean *)0);
attrib_list = attrib_list_base + offset;
attrib_list_sentinel = 0;
for (int i = _remaining - 1; i >= 0; i--) {
@@ -598,7 +598,7 @@ not_valid_surface:
exit:
if (attrib_list_base) {
_env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base,
_env->ReleaseIntArrayElements(attrib_list_ref, attrib_list_base,
JNI_ABORT);
}
if (_exception) {
@@ -655,7 +655,7 @@ not_valid_surface:
_remaining = _env->GetArrayLength(attrib_list_ref) - offset;
attrib_list_base = (EGLint *)
_env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0);
_env->GetIntArrayElements(attrib_list_ref, (jboolean *)0);
attrib_list = attrib_list_base + offset;
attrib_list_sentinel = 0;
for (int i = _remaining - 1; i >= 0; i--) {
@@ -680,7 +680,7 @@ not_valid_surface:
exit:
if (attrib_list_base) {
_env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base,
_env->ReleaseIntArrayElements(attrib_list_ref, attrib_list_base,
JNI_ABORT);
}
if (_exception) {
@@ -717,7 +717,7 @@ android_eglCreatePbufferSurface
}
_remaining = _env->GetArrayLength(attrib_list_ref) - offset;
attrib_list_base = (EGLint *)
_env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0);
_env->GetIntArrayElements(attrib_list_ref, (jboolean *)0);
attrib_list = attrib_list_base + offset;
attrib_list_sentinel = false;
for (int i = _remaining - 1; i >= 0; i--) {
@@ -741,7 +741,7 @@ android_eglCreatePbufferSurface
exit:
if (attrib_list_base) {
_env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base,
_env->ReleaseIntArrayElements(attrib_list_ref, (jint*)attrib_list_base,
JNI_ABORT);
}
if (_exception) {
@@ -808,7 +808,7 @@ android_eglQuerySurface
goto exit;
}
value_base = (EGLint *)
_env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
_env->GetIntArrayElements(value_ref, (jboolean *)0);
value = value_base + offset;
_returnValue = eglQuerySurface(
@@ -820,7 +820,7 @@ android_eglQuerySurface
exit:
if (value_base) {
_env->ReleasePrimitiveArrayCritical(value_ref, value_base,
_env->ReleaseIntArrayElements(value_ref, (jint*)value_base,
_exception ? JNI_ABORT: 0);
}
if (_exception) {
@@ -896,7 +896,7 @@ android_eglCreatePbufferFromClientBuffer
}
_remaining = _env->GetArrayLength(attrib_list_ref) - offset;
attrib_list_base = (EGLint *)
_env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0);
_env->GetIntArrayElements(attrib_list_ref, (jboolean *)0);
attrib_list = attrib_list_base + offset;
attrib_list_sentinel = false;
for (int i = _remaining - 1; i >= 0; i--) {
@@ -922,7 +922,7 @@ android_eglCreatePbufferFromClientBuffer
exit:
if (attrib_list_base) {
_env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base,
_env->ReleaseIntArrayElements(attrib_list_ref, attrib_list_base,
JNI_ABORT);
}
if (_exception) {
@@ -940,7 +940,6 @@ android_eglCreatePbufferFromClientBufferInt
}
return android_eglCreatePbufferFromClientBuffer(_env, _this, dpy, buftype, buffer, config, attrib_list_ref, offset);
}
/* EGLBoolean eglSurfaceAttrib ( EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value ) */
static jboolean
android_eglSurfaceAttrib
@@ -1034,7 +1033,7 @@ android_eglCreateContext
}
_remaining = _env->GetArrayLength(attrib_list_ref) - offset;
attrib_list_base = (EGLint *)
_env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0);
_env->GetIntArrayElements(attrib_list_ref, (jboolean *)0);
attrib_list = attrib_list_base + offset;
attrib_list_sentinel = false;
for (int i = _remaining - 1; i >= 0; i--) {
@@ -1059,7 +1058,7 @@ android_eglCreateContext
exit:
if (attrib_list_base) {
_env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base,
_env->ReleaseIntArrayElements(attrib_list_ref, (jint*)attrib_list_base,
JNI_ABORT);
}
if (_exception) {
@@ -1165,7 +1164,7 @@ android_eglQueryContext
goto exit;
}
value_base = (EGLint *)
_env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
_env->GetIntArrayElements(value_ref, (jboolean *)0);
value = value_base + offset;
_returnValue = eglQueryContext(
@@ -1177,7 +1176,7 @@ android_eglQueryContext
exit:
if (value_base) {
_env->ReleasePrimitiveArrayCritical(value_ref, value_base,
_env->ReleaseIntArrayElements(value_ref, (jint*)value_base,
_exception ? JNI_ABORT: 0);
}
if (_exception) {

View File

@@ -126,6 +126,116 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *o
return NULL;
}
class ByteArrayGetter {
public:
static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) {
return _env->GetByteArrayElements(array, is_copy);
}
};
class BooleanArrayGetter {
public:
static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) {
return _env->GetBooleanArrayElements(array, is_copy);
}
};
class CharArrayGetter {
public:
static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) {
return _env->GetCharArrayElements(array, is_copy);
}
};
class ShortArrayGetter {
public:
static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) {
return _env->GetShortArrayElements(array, is_copy);
}
};
class IntArrayGetter {
public:
static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) {
return _env->GetIntArrayElements(array, is_copy);
}
};
class LongArrayGetter {
public:
static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) {
return _env->GetLongArrayElements(array, is_copy);
}
};
class FloatArrayGetter {
public:
static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) {
return _env->GetFloatArrayElements(array, is_copy);
}
};
class DoubleArrayGetter {
public:
static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) {
return _env->GetDoubleArrayElements(array, is_copy);
}
};
template<typename JTYPEARRAY, typename ARRAYGETTER>
static void*
getArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) {
return ARRAYGETTER::Get(_env, array, is_copy);
}
class ByteArrayReleaser {
public:
static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) {
_env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class BooleanArrayReleaser {
public:
static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) {
_env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class CharArrayReleaser {
public:
static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) {
_env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class ShortArrayReleaser {
public:
static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) {
_env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class IntArrayReleaser {
public:
static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) {
_env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class LongArrayReleaser {
public:
static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) {
_env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class FloatArrayReleaser {
public:
static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) {
_env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class DoubleArrayReleaser {
public:
static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) {
_env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
template<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER>
static void
releaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) {
ARRAYRELEASER::Release(_env, array, data, commit);
}
static void
releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
{
@@ -229,7 +339,8 @@ static int getNeededCount(GLint pname) {
return needed;
}
template <typename JTYPEARRAY, typename CTYPE, void GET(GLenum, CTYPE*)>
template <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)>
static void
get
(JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) {
@@ -264,8 +375,8 @@ get
_exceptionMessage = "length - offset < needed";
goto exit;
}
params_base = (CTYPE *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
_env, params_ref, (jboolean *)0);
params = params_base + offset;
GET(
@@ -275,8 +386,8 @@ get
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_exception ? JNI_ABORT: 0);
releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
_env, params_ref, params_base, !_exception);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -284,20 +395,21 @@ exit:
}
template <typename CTYPE, void GET(GLenum, CTYPE*)>
template <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
typename ARRAYRELEASER, void GET(GLenum, CTYPE*)>
static void
getarray
(JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
jint _exception = 0;
const char * _exceptionType;
const char * _exceptionMessage;
jarray _array = (jarray) 0;
JTYPEARRAY _array = (JTYPEARRAY) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
CTYPE *params = (CTYPE *) 0;
int _needed = 0;
params = (CTYPE *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
_remaining /= sizeof(CTYPE); // convert from bytes to item count
_needed = getNeededCount(pname);
// if we didn't find this pname, we just assume the user passed
@@ -310,7 +422,8 @@ getarray
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
_env, _array, (jboolean *) 0);
params = (CTYPE *) (_paramsBase + _bufferOffset);
}
GET(
@@ -320,7 +433,8 @@ getarray
exit:
if (_array) {
releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
_env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -515,7 +629,7 @@ android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2
jint _remaining;
GLvoid *data = (GLvoid *) 0;
data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (data == NULL) {
char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
data = (GLvoid *) (_dataBase + _bufferOffset);
@@ -544,7 +658,7 @@ android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
jint _remaining;
GLvoid *data = (GLvoid *) 0;
data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (data == NULL) {
char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
data = (GLvoid *) (_dataBase + _bufferOffset);
@@ -637,7 +751,7 @@ android_glDeleteTextures__I_3II
goto exit;
}
textures_base = (GLuint *)
_env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0);
_env->GetIntArrayElements(textures_ref, (jboolean *)0);
textures = textures_base + offset;
glDeleteTextures(
@@ -647,7 +761,7 @@ android_glDeleteTextures__I_3II
exit:
if (textures_base) {
_env->ReleasePrimitiveArrayCritical(textures_ref, textures_base,
_env->ReleaseIntArrayElements(textures_ref, (jint*)textures_base,
JNI_ABORT);
}
if (_exception) {
@@ -662,12 +776,12 @@ android_glDeleteTextures__ILjava_nio_IntBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLuint *textures = (GLuint *) 0;
textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset);
textures = (GLuint *)getPointer(_env, textures_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (_remaining < n) {
_exception = 1;
_exceptionType = "java/lang/IllegalArgumentException";
@@ -675,7 +789,7 @@ android_glDeleteTextures__ILjava_nio_IntBuffer_2
goto exit;
}
if (textures == NULL) {
char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _texturesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
textures = (GLuint *) (_texturesBase + _bufferOffset);
}
glDeleteTextures(
@@ -685,7 +799,7 @@ android_glDeleteTextures__ILjava_nio_IntBuffer_2
exit:
if (_array) {
releasePointer(_env, _array, textures, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)textures, JNI_ABORT);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -771,7 +885,7 @@ android_glDrawElements__IIILjava_nio_Buffer_2
jint _remaining;
GLvoid *indices = (GLvoid *) 0;
indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset);
indices = (GLvoid *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (_remaining < count) {
_exception = 1;
_exceptionType = "java/lang/ArrayIndexOutOfBoundsException";
@@ -882,7 +996,7 @@ android_glFogfv__I_3FI
goto exit;
}
params_base = (GLfloat *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetFloatArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glFogfv(
@@ -892,7 +1006,7 @@ android_glFogfv__I_3FI
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
JNI_ABORT);
}
if (_exception) {
@@ -907,12 +1021,12 @@ android_glFogfv__ILjava_nio_FloatBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _array = (jarray) 0;
jfloatArray _array = (jfloatArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfloat *params = (GLfloat *) 0;
params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
int _needed;
switch (pname) {
#if defined(GL_FOG_COLOR)
@@ -931,7 +1045,7 @@ android_glFogfv__ILjava_nio_FloatBuffer_2
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
params = (GLfloat *) (_paramsBase + _bufferOffset);
}
glFogfv(
@@ -941,7 +1055,7 @@ android_glFogfv__ILjava_nio_FloatBuffer_2
exit:
if (_array) {
releasePointer(_env, _array, params, JNI_FALSE);
_env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -1000,7 +1114,7 @@ android_glFogxv__I_3II
goto exit;
}
params_base = (GLfixed *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetIntArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glFogxv(
@@ -1010,7 +1124,7 @@ android_glFogxv__I_3II
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
JNI_ABORT);
}
if (_exception) {
@@ -1025,12 +1139,12 @@ android_glFogxv__ILjava_nio_IntBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfixed *params = (GLfixed *) 0;
params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
int _needed;
switch (pname) {
#if defined(GL_FOG_COLOR)
@@ -1049,7 +1163,7 @@ android_glFogxv__ILjava_nio_IntBuffer_2
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
params = (GLfixed *) (_paramsBase + _bufferOffset);
}
glFogxv(
@@ -1059,7 +1173,7 @@ android_glFogxv__ILjava_nio_IntBuffer_2
exit:
if (_array) {
releasePointer(_env, _array, params, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -1134,7 +1248,7 @@ android_glGenTextures__I_3II
goto exit;
}
textures_base = (GLuint *)
_env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0);
_env->GetIntArrayElements(textures_ref, (jboolean *)0);
textures = textures_base + offset;
glGenTextures(
@@ -1144,7 +1258,7 @@ android_glGenTextures__I_3II
exit:
if (textures_base) {
_env->ReleasePrimitiveArrayCritical(textures_ref, textures_base,
_env->ReleaseIntArrayElements(textures_ref, (jint*)textures_base,
_exception ? JNI_ABORT: 0);
}
if (_exception) {
@@ -1159,12 +1273,12 @@ android_glGenTextures__ILjava_nio_IntBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLuint *textures = (GLuint *) 0;
textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset);
textures = (GLuint *)getPointer(_env, textures_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (_remaining < n) {
_exception = 1;
_exceptionType = "java/lang/IllegalArgumentException";
@@ -1172,7 +1286,7 @@ android_glGenTextures__ILjava_nio_IntBuffer_2
goto exit;
}
if (textures == NULL) {
char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _texturesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
textures = (GLuint *) (_texturesBase + _bufferOffset);
}
glGenTextures(
@@ -1182,7 +1296,7 @@ android_glGenTextures__ILjava_nio_IntBuffer_2
exit:
if (_array) {
releasePointer(_env, _array, textures, _exception ? JNI_FALSE : JNI_TRUE);
_env->ReleaseIntArrayElements(_array, (jint*)textures, _exception ? JNI_ABORT : 0);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -1202,16 +1316,17 @@ android_glGetError__
static void
android_glGetIntegerv__I_3II
(JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
get<jintArray, GLint, glGetIntegerv>(_env, _this, pname, params_ref, offset);
get<jintArray, IntArrayGetter, jint*, IntArrayReleaser, GLint, glGetIntegerv>(
_env, _this, pname, params_ref, offset);
}
/* void glGetIntegerv ( GLenum pname, GLint *params ) */
static void
android_glGetIntegerv__ILjava_nio_IntBuffer_2
(JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
getarray<GLint, glGetIntegerv>(_env, _this, pname, params_buf);
getarray<GLint, jintArray, IntArrayGetter, jint*, IntArrayReleaser, glGetIntegerv>(
_env, _this, pname, params_buf);
}
/* const GLubyte * glGetString ( GLenum name ) */
static jstring android_glGetString(JNIEnv* _env, jobject, jint name) {
const char* chars = (const char*) glGetString((GLenum) name);
@@ -1279,7 +1394,7 @@ android_glLightModelfv__I_3FI
goto exit;
}
params_base = (GLfloat *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetFloatArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glLightModelfv(
@@ -1289,7 +1404,7 @@ android_glLightModelfv__I_3FI
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
JNI_ABORT);
}
if (_exception) {
@@ -1304,12 +1419,12 @@ android_glLightModelfv__ILjava_nio_FloatBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _array = (jarray) 0;
jfloatArray _array = (jfloatArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfloat *params = (GLfloat *) 0;
params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
int _needed;
switch (pname) {
#if defined(GL_LIGHT_MODEL_AMBIENT)
@@ -1328,7 +1443,7 @@ android_glLightModelfv__ILjava_nio_FloatBuffer_2
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
params = (GLfloat *) (_paramsBase + _bufferOffset);
}
glLightModelfv(
@@ -1338,7 +1453,7 @@ android_glLightModelfv__ILjava_nio_FloatBuffer_2
exit:
if (_array) {
releasePointer(_env, _array, params, JNI_FALSE);
_env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -1397,7 +1512,7 @@ android_glLightModelxv__I_3II
goto exit;
}
params_base = (GLfixed *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetIntArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glLightModelxv(
@@ -1407,7 +1522,7 @@ android_glLightModelxv__I_3II
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
JNI_ABORT);
}
if (_exception) {
@@ -1422,12 +1537,12 @@ android_glLightModelxv__ILjava_nio_IntBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfixed *params = (GLfixed *) 0;
params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
int _needed;
switch (pname) {
#if defined(GL_LIGHT_MODEL_AMBIENT)
@@ -1446,7 +1561,7 @@ android_glLightModelxv__ILjava_nio_IntBuffer_2
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
params = (GLfixed *) (_paramsBase + _bufferOffset);
}
glLightModelxv(
@@ -1456,7 +1571,7 @@ android_glLightModelxv__ILjava_nio_IntBuffer_2
exit:
if (_array) {
releasePointer(_env, _array, params, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -1530,7 +1645,7 @@ android_glLightfv__II_3FI
goto exit;
}
params_base = (GLfloat *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetFloatArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glLightfv(
@@ -1541,7 +1656,7 @@ android_glLightfv__II_3FI
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
JNI_ABORT);
}
if (_exception) {
@@ -1556,12 +1671,12 @@ android_glLightfv__IILjava_nio_FloatBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _array = (jarray) 0;
jfloatArray _array = (jfloatArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfloat *params = (GLfloat *) 0;
params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
int _needed;
switch (pname) {
#if defined(GL_SPOT_DIRECTION)
@@ -1594,7 +1709,7 @@ android_glLightfv__IILjava_nio_FloatBuffer_2
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
params = (GLfloat *) (_paramsBase + _bufferOffset);
}
glLightfv(
@@ -1605,7 +1720,7 @@ android_glLightfv__IILjava_nio_FloatBuffer_2
exit:
if (_array) {
releasePointer(_env, _array, params, JNI_FALSE);
_env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -1679,7 +1794,7 @@ android_glLightxv__II_3II
goto exit;
}
params_base = (GLfixed *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetIntArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glLightxv(
@@ -1690,7 +1805,7 @@ android_glLightxv__II_3II
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
JNI_ABORT);
}
if (_exception) {
@@ -1705,12 +1820,12 @@ android_glLightxv__IILjava_nio_IntBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfixed *params = (GLfixed *) 0;
params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
int _needed;
switch (pname) {
#if defined(GL_SPOT_DIRECTION)
@@ -1743,7 +1858,7 @@ android_glLightxv__IILjava_nio_IntBuffer_2
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
params = (GLfixed *) (_paramsBase + _bufferOffset);
}
glLightxv(
@@ -1754,7 +1869,7 @@ android_glLightxv__IILjava_nio_IntBuffer_2
exit:
if (_array) {
releasePointer(_env, _array, params, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -1811,7 +1926,7 @@ android_glLoadMatrixf___3FI
}
_remaining = _env->GetArrayLength(m_ref) - offset;
m_base = (GLfloat *)
_env->GetPrimitiveArrayCritical(m_ref, (jboolean *)0);
_env->GetFloatArrayElements(m_ref, (jboolean *)0);
m = m_base + offset;
glLoadMatrixf(
@@ -1820,7 +1935,7 @@ android_glLoadMatrixf___3FI
exit:
if (m_base) {
_env->ReleasePrimitiveArrayCritical(m_ref, m_base,
_env->ReleaseFloatArrayElements(m_ref, (jfloat*)m_base,
JNI_ABORT);
}
if (_exception) {
@@ -1832,21 +1947,21 @@ exit:
static void
android_glLoadMatrixf__Ljava_nio_FloatBuffer_2
(JNIEnv *_env, jobject _this, jobject m_buf) {
jarray _array = (jarray) 0;
jfloatArray _array = (jfloatArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfloat *m = (GLfloat *) 0;
m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset);
m = (GLfloat *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (m == NULL) {
char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _mBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
m = (GLfloat *) (_mBase + _bufferOffset);
}
glLoadMatrixf(
(GLfloat *)m
);
if (_array) {
releasePointer(_env, _array, m, JNI_FALSE);
_env->ReleaseFloatArrayElements(_array, (jfloat*)m, JNI_ABORT);
}
}
@@ -1875,7 +1990,7 @@ android_glLoadMatrixx___3II
}
_remaining = _env->GetArrayLength(m_ref) - offset;
m_base = (GLfixed *)
_env->GetPrimitiveArrayCritical(m_ref, (jboolean *)0);
_env->GetIntArrayElements(m_ref, (jboolean *)0);
m = m_base + offset;
glLoadMatrixx(
@@ -1884,7 +1999,7 @@ android_glLoadMatrixx___3II
exit:
if (m_base) {
_env->ReleasePrimitiveArrayCritical(m_ref, m_base,
_env->ReleaseIntArrayElements(m_ref, (jint*)m_base,
JNI_ABORT);
}
if (_exception) {
@@ -1896,21 +2011,21 @@ exit:
static void
android_glLoadMatrixx__Ljava_nio_IntBuffer_2
(JNIEnv *_env, jobject _this, jobject m_buf) {
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfixed *m = (GLfixed *) 0;
m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset);
m = (GLfixed *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (m == NULL) {
char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _mBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
m = (GLfixed *) (_mBase + _bufferOffset);
}
glLoadMatrixx(
(GLfixed *)m
);
if (_array) {
releasePointer(_env, _array, m, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)m, JNI_ABORT);
}
}
@@ -1988,7 +2103,7 @@ android_glMaterialfv__II_3FI
goto exit;
}
params_base = (GLfloat *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetFloatArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glMaterialfv(
@@ -1999,7 +2114,7 @@ android_glMaterialfv__II_3FI
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
JNI_ABORT);
}
if (_exception) {
@@ -2014,12 +2129,12 @@ android_glMaterialfv__IILjava_nio_FloatBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _array = (jarray) 0;
jfloatArray _array = (jfloatArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfloat *params = (GLfloat *) 0;
params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
int _needed;
switch (pname) {
#if defined(GL_AMBIENT)
@@ -2050,7 +2165,7 @@ android_glMaterialfv__IILjava_nio_FloatBuffer_2
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
params = (GLfloat *) (_paramsBase + _bufferOffset);
}
glMaterialfv(
@@ -2061,7 +2176,7 @@ android_glMaterialfv__IILjava_nio_FloatBuffer_2
exit:
if (_array) {
releasePointer(_env, _array, params, JNI_FALSE);
_env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -2133,7 +2248,7 @@ android_glMaterialxv__II_3II
goto exit;
}
params_base = (GLfixed *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetIntArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glMaterialxv(
@@ -2144,7 +2259,7 @@ android_glMaterialxv__II_3II
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
JNI_ABORT);
}
if (_exception) {
@@ -2159,12 +2274,12 @@ android_glMaterialxv__IILjava_nio_IntBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfixed *params = (GLfixed *) 0;
params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
int _needed;
switch (pname) {
#if defined(GL_AMBIENT)
@@ -2195,7 +2310,7 @@ android_glMaterialxv__IILjava_nio_IntBuffer_2
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
params = (GLfixed *) (_paramsBase + _bufferOffset);
}
glMaterialxv(
@@ -2206,7 +2321,7 @@ android_glMaterialxv__IILjava_nio_IntBuffer_2
exit:
if (_array) {
releasePointer(_env, _array, params, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -2247,7 +2362,7 @@ android_glMultMatrixf___3FI
}
_remaining = _env->GetArrayLength(m_ref) - offset;
m_base = (GLfloat *)
_env->GetPrimitiveArrayCritical(m_ref, (jboolean *)0);
_env->GetFloatArrayElements(m_ref, (jboolean *)0);
m = m_base + offset;
glMultMatrixf(
@@ -2256,7 +2371,7 @@ android_glMultMatrixf___3FI
exit:
if (m_base) {
_env->ReleasePrimitiveArrayCritical(m_ref, m_base,
_env->ReleaseFloatArrayElements(m_ref, (jfloat*)m_base,
JNI_ABORT);
}
if (_exception) {
@@ -2268,21 +2383,21 @@ exit:
static void
android_glMultMatrixf__Ljava_nio_FloatBuffer_2
(JNIEnv *_env, jobject _this, jobject m_buf) {
jarray _array = (jarray) 0;
jfloatArray _array = (jfloatArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfloat *m = (GLfloat *) 0;
m = (GLfloat *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset);
m = (GLfloat *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (m == NULL) {
char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _mBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
m = (GLfloat *) (_mBase + _bufferOffset);
}
glMultMatrixf(
(GLfloat *)m
);
if (_array) {
releasePointer(_env, _array, m, JNI_FALSE);
_env->ReleaseFloatArrayElements(_array, (jfloat*)m, JNI_ABORT);
}
}
@@ -2311,7 +2426,7 @@ android_glMultMatrixx___3II
}
_remaining = _env->GetArrayLength(m_ref) - offset;
m_base = (GLfixed *)
_env->GetPrimitiveArrayCritical(m_ref, (jboolean *)0);
_env->GetIntArrayElements(m_ref, (jboolean *)0);
m = m_base + offset;
glMultMatrixx(
@@ -2320,7 +2435,7 @@ android_glMultMatrixx___3II
exit:
if (m_base) {
_env->ReleasePrimitiveArrayCritical(m_ref, m_base,
_env->ReleaseIntArrayElements(m_ref, (jint*)m_base,
JNI_ABORT);
}
if (_exception) {
@@ -2332,21 +2447,21 @@ exit:
static void
android_glMultMatrixx__Ljava_nio_IntBuffer_2
(JNIEnv *_env, jobject _this, jobject m_buf) {
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfixed *m = (GLfixed *) 0;
m = (GLfixed *)getPointer(_env, m_buf, &_array, &_remaining, &_bufferOffset);
m = (GLfixed *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (m == NULL) {
char * _mBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _mBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
m = (GLfixed *) (_mBase + _bufferOffset);
}
glMultMatrixx(
(GLfixed *)m
);
if (_array) {
releasePointer(_env, _array, m, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)m, JNI_ABORT);
}
}
@@ -2520,7 +2635,7 @@ android_glReadPixels__IIIIIILjava_nio_Buffer_2
jint _remaining;
GLvoid *pixels = (GLvoid *) 0;
pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (pixels == NULL) {
char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
@@ -2734,7 +2849,7 @@ android_glTexEnvfv__II_3FI
goto exit;
}
params_base = (GLfloat *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetFloatArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glTexEnvfv(
@@ -2745,7 +2860,7 @@ android_glTexEnvfv__II_3FI
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
JNI_ABORT);
}
if (_exception) {
@@ -2760,12 +2875,12 @@ android_glTexEnvfv__IILjava_nio_FloatBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _array = (jarray) 0;
jfloatArray _array = (jfloatArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfloat *params = (GLfloat *) 0;
params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
int _needed;
switch (pname) {
#if defined(GL_TEXTURE_ENV_COLOR)
@@ -2784,7 +2899,7 @@ android_glTexEnvfv__IILjava_nio_FloatBuffer_2
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
params = (GLfloat *) (_paramsBase + _bufferOffset);
}
glTexEnvfv(
@@ -2795,7 +2910,7 @@ android_glTexEnvfv__IILjava_nio_FloatBuffer_2
exit:
if (_array) {
releasePointer(_env, _array, params, JNI_FALSE);
_env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -2855,7 +2970,7 @@ android_glTexEnvxv__II_3II
goto exit;
}
params_base = (GLfixed *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetIntArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glTexEnvxv(
@@ -2866,7 +2981,7 @@ android_glTexEnvxv__II_3II
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
JNI_ABORT);
}
if (_exception) {
@@ -2881,12 +2996,12 @@ android_glTexEnvxv__IILjava_nio_IntBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLfixed *params = (GLfixed *) 0;
params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
int _needed;
switch (pname) {
#if defined(GL_TEXTURE_ENV_COLOR)
@@ -2905,7 +3020,7 @@ android_glTexEnvxv__IILjava_nio_IntBuffer_2
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
params = (GLfixed *) (_paramsBase + _bufferOffset);
}
glTexEnvxv(
@@ -2916,7 +3031,7 @@ android_glTexEnvxv__IILjava_nio_IntBuffer_2
exit:
if (_array) {
releasePointer(_env, _array, params, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -2933,7 +3048,7 @@ android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2
GLvoid *pixels = (GLvoid *) 0;
if (pixels_buf) {
pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
}
if (pixels_buf && pixels == NULL) {
char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
@@ -2987,7 +3102,7 @@ android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
GLvoid *pixels = (GLvoid *) 0;
if (pixels_buf) {
pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
}
if (pixels_buf && pixels == NULL) {
char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);

View File

@@ -126,6 +126,116 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *o
return NULL;
}
class ByteArrayGetter {
public:
static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) {
return _env->GetByteArrayElements(array, is_copy);
}
};
class BooleanArrayGetter {
public:
static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) {
return _env->GetBooleanArrayElements(array, is_copy);
}
};
class CharArrayGetter {
public:
static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) {
return _env->GetCharArrayElements(array, is_copy);
}
};
class ShortArrayGetter {
public:
static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) {
return _env->GetShortArrayElements(array, is_copy);
}
};
class IntArrayGetter {
public:
static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) {
return _env->GetIntArrayElements(array, is_copy);
}
};
class LongArrayGetter {
public:
static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) {
return _env->GetLongArrayElements(array, is_copy);
}
};
class FloatArrayGetter {
public:
static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) {
return _env->GetFloatArrayElements(array, is_copy);
}
};
class DoubleArrayGetter {
public:
static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) {
return _env->GetDoubleArrayElements(array, is_copy);
}
};
template<typename JTYPEARRAY, typename ARRAYGETTER>
static void*
getArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) {
return ARRAYGETTER::Get(_env, array, is_copy);
}
class ByteArrayReleaser {
public:
static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) {
_env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class BooleanArrayReleaser {
public:
static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) {
_env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class CharArrayReleaser {
public:
static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) {
_env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class ShortArrayReleaser {
public:
static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) {
_env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class IntArrayReleaser {
public:
static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) {
_env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class LongArrayReleaser {
public:
static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) {
_env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class FloatArrayReleaser {
public:
static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) {
_env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class DoubleArrayReleaser {
public:
static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) {
_env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
template<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER>
static void
releaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) {
ARRAYRELEASER::Release(_env, array, data, commit);
}
static void
releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
{
@@ -229,7 +339,8 @@ static int getNeededCount(GLint pname) {
return needed;
}
template <typename JTYPEARRAY, typename CTYPE, void GET(GLenum, CTYPE*)>
template <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)>
static void
get
(JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) {
@@ -264,8 +375,8 @@ get
_exceptionMessage = "length - offset < needed";
goto exit;
}
params_base = (CTYPE *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
_env, params_ref, (jboolean *)0);
params = params_base + offset;
GET(
@@ -275,8 +386,8 @@ get
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_exception ? JNI_ABORT: 0);
releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
_env, params_ref, params_base, !_exception);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -284,20 +395,21 @@ exit:
}
template <typename CTYPE, void GET(GLenum, CTYPE*)>
template <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
typename ARRAYRELEASER, void GET(GLenum, CTYPE*)>
static void
getarray
(JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
jint _exception = 0;
const char * _exceptionType;
const char * _exceptionMessage;
jarray _array = (jarray) 0;
JTYPEARRAY _array = (JTYPEARRAY) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
CTYPE *params = (CTYPE *) 0;
int _needed = 0;
params = (CTYPE *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
_remaining /= sizeof(CTYPE); // convert from bytes to item count
_needed = getNeededCount(pname);
// if we didn't find this pname, we just assume the user passed
@@ -310,7 +422,8 @@ getarray
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
_env, _array, (jboolean *) 0);
params = (CTYPE *) (_paramsBase + _bufferOffset);
}
GET(
@@ -320,7 +433,8 @@ getarray
exit:
if (_array) {
releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
_env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -363,7 +477,7 @@ android_glQueryMatrixxOES___3II_3II
goto exit;
}
mantissa_base = (GLfixed *)
_env->GetPrimitiveArrayCritical(mantissa_ref, (jboolean *)0);
_env->GetIntArrayElements(mantissa_ref, (jboolean *)0);
mantissa = mantissa_base + mantissaOffset;
if (!exponent_ref) {
@@ -386,7 +500,7 @@ android_glQueryMatrixxOES___3II_3II
goto exit;
}
exponent_base = (GLint *)
_env->GetPrimitiveArrayCritical(exponent_ref, (jboolean *)0);
_env->GetIntArrayElements(exponent_ref, (jboolean *)0);
exponent = exponent_base + exponentOffset;
_returnValue = glQueryMatrixxOES(
@@ -396,11 +510,11 @@ android_glQueryMatrixxOES___3II_3II
exit:
if (exponent_base) {
_env->ReleasePrimitiveArrayCritical(exponent_ref, exponent_base,
_env->ReleaseIntArrayElements(exponent_ref, (jint*)exponent_base,
_exception ? JNI_ABORT: 0);
}
if (mantissa_base) {
_env->ReleasePrimitiveArrayCritical(mantissa_ref, mantissa_base,
_env->ReleaseIntArrayElements(mantissa_ref, (jint*)mantissa_base,
_exception ? JNI_ABORT: 0);
}
if (_exception) {
@@ -416,9 +530,9 @@ android_glQueryMatrixxOES__Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
jint _exception = 0;
const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL;
jarray _mantissaArray = (jarray) 0;
jintArray _mantissaArray = (jintArray) 0;
jint _mantissaBufferOffset = (jint) 0;
jarray _exponentArray = (jarray) 0;
jintArray _exponentArray = (jintArray) 0;
jint _exponentBufferOffset = (jint) 0;
GLbitfield _returnValue = -1;
jint _mantissaRemaining;
@@ -426,14 +540,14 @@ android_glQueryMatrixxOES__Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
jint _exponentRemaining;
GLint *exponent = (GLint *) 0;
mantissa = (GLfixed *)getPointer(_env, mantissa_buf, &_mantissaArray, &_mantissaRemaining, &_mantissaBufferOffset);
mantissa = (GLfixed *)getPointer(_env, mantissa_buf, (jarray*)&_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, &_exponentBufferOffset);
exponent = (GLint *)getPointer(_env, exponent_buf, (jarray*)&_exponentArray, &_exponentRemaining, &_exponentBufferOffset);
if (_exponentRemaining < 16) {
_exception = 1;
_exceptionType = "java/lang/IllegalArgumentException";
@@ -441,11 +555,11 @@ android_glQueryMatrixxOES__Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
goto exit;
}
if (mantissa == NULL) {
char * _mantissaBase = (char *)_env->GetPrimitiveArrayCritical(_mantissaArray, (jboolean *) 0);
char * _mantissaBase = (char *)_env->GetIntArrayElements(_mantissaArray, (jboolean *) 0);
mantissa = (GLfixed *) (_mantissaBase + _mantissaBufferOffset);
}
if (exponent == NULL) {
char * _exponentBase = (char *)_env->GetPrimitiveArrayCritical(_exponentArray, (jboolean *) 0);
char * _exponentBase = (char *)_env->GetIntArrayElements(_exponentArray, (jboolean *) 0);
exponent = (GLint *) (_exponentBase + _exponentBufferOffset);
}
_returnValue = glQueryMatrixxOES(
@@ -455,10 +569,10 @@ android_glQueryMatrixxOES__Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
exit:
if (_exponentArray) {
releasePointer(_env, _exponentArray, exponent, _exception ? JNI_FALSE : JNI_TRUE);
_env->ReleaseIntArrayElements(_exponentArray, (jint*)exponent, _exception ? JNI_ABORT : 0);
}
if (_mantissaArray) {
releasePointer(_env, _mantissaArray, mantissa, _exception ? JNI_FALSE : JNI_TRUE);
_env->ReleaseIntArrayElements(_mantissaArray, (jint*)mantissa, _exception ? JNI_ABORT : 0);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -125,6 +125,116 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *o
return NULL;
}
class ByteArrayGetter {
public:
static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) {
return _env->GetByteArrayElements(array, is_copy);
}
};
class BooleanArrayGetter {
public:
static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) {
return _env->GetBooleanArrayElements(array, is_copy);
}
};
class CharArrayGetter {
public:
static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) {
return _env->GetCharArrayElements(array, is_copy);
}
};
class ShortArrayGetter {
public:
static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) {
return _env->GetShortArrayElements(array, is_copy);
}
};
class IntArrayGetter {
public:
static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) {
return _env->GetIntArrayElements(array, is_copy);
}
};
class LongArrayGetter {
public:
static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) {
return _env->GetLongArrayElements(array, is_copy);
}
};
class FloatArrayGetter {
public:
static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) {
return _env->GetFloatArrayElements(array, is_copy);
}
};
class DoubleArrayGetter {
public:
static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) {
return _env->GetDoubleArrayElements(array, is_copy);
}
};
template<typename JTYPEARRAY, typename ARRAYGETTER>
static void*
getArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) {
return ARRAYGETTER::Get(_env, array, is_copy);
}
class ByteArrayReleaser {
public:
static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) {
_env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class BooleanArrayReleaser {
public:
static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) {
_env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class CharArrayReleaser {
public:
static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) {
_env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class ShortArrayReleaser {
public:
static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) {
_env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class IntArrayReleaser {
public:
static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) {
_env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class LongArrayReleaser {
public:
static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) {
_env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class FloatArrayReleaser {
public:
static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) {
_env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
class DoubleArrayReleaser {
public:
static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) {
_env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT);
}
};
template<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER>
static void
releaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) {
ARRAYRELEASER::Release(_env, array, data, commit);
}
static void
releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
{
@@ -228,7 +338,8 @@ static int getNeededCount(GLint pname) {
return needed;
}
template <typename JTYPEARRAY, typename CTYPE, void GET(GLenum, CTYPE*)>
template <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)>
static void
get
(JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) {
@@ -263,8 +374,8 @@ get
_exceptionMessage = "length - offset < needed";
goto exit;
}
params_base = (CTYPE *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
_env, params_ref, (jboolean *)0);
params = params_base + offset;
GET(
@@ -274,8 +385,8 @@ get
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_exception ? JNI_ABORT: 0);
releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
_env, params_ref, params_base, !_exception);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -283,20 +394,21 @@ exit:
}
template <typename CTYPE, void GET(GLenum, CTYPE*)>
template <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
typename ARRAYRELEASER, void GET(GLenum, CTYPE*)>
static void
getarray
(JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
jint _exception = 0;
const char * _exceptionType;
const char * _exceptionMessage;
jarray _array = (jarray) 0;
JTYPEARRAY _array = (JTYPEARRAY) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
CTYPE *params = (CTYPE *) 0;
int _needed = 0;
params = (CTYPE *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
_remaining /= sizeof(CTYPE); // convert from bytes to item count
_needed = getNeededCount(pname);
// if we didn't find this pname, we just assume the user passed
@@ -309,7 +421,8 @@ getarray
goto exit;
}
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
_env, _array, (jboolean *) 0);
params = (CTYPE *) (_paramsBase + _bufferOffset);
}
GET(
@@ -319,7 +432,8 @@ getarray
exit:
if (_array) {
releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
_env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE);
}
if (_exception) {
jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -359,7 +473,7 @@ android_glDebugMessageControlKHR__IIII_3IIZ
}
_remaining = _env->GetArrayLength(ids_ref) - offset;
ids_base = (GLuint *)
_env->GetPrimitiveArrayCritical(ids_ref, (jboolean *)0);
_env->GetIntArrayElements(ids_ref, (jboolean *)0);
ids = ids_base + offset;
glDebugMessageControlKHR(
@@ -373,7 +487,7 @@ android_glDebugMessageControlKHR__IIII_3IIZ
exit:
if (ids_base) {
_env->ReleasePrimitiveArrayCritical(ids_ref, ids_base,
_env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base,
JNI_ABORT);
}
if (_exception) {
@@ -385,14 +499,14 @@ exit:
static void
android_glDebugMessageControlKHR__IIIILjava_nio_IntBuffer_2Z
(JNIEnv *_env, jobject _this, jint source, jint type, jint severity, jint count, jobject ids_buf, jboolean enabled) {
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLuint *ids = (GLuint *) 0;
ids = (GLuint *)getPointer(_env, ids_buf, &_array, &_remaining, &_bufferOffset);
ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (ids == NULL) {
char * _idsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
ids = (GLuint *) (_idsBase + _bufferOffset);
}
glDebugMessageControlKHR(
@@ -404,7 +518,7 @@ android_glDebugMessageControlKHR__IIIILjava_nio_IntBuffer_2Z
(GLboolean)enabled
);
if (_array) {
releasePointer(_env, _array, ids, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)ids, JNI_ABORT);
}
}
@@ -784,7 +898,7 @@ android_glTexParameterIivEXT__II_3II
}
_remaining = _env->GetArrayLength(params_ref) - offset;
params_base = (GLint *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetIntArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glTexParameterIivEXT(
@@ -795,7 +909,7 @@ android_glTexParameterIivEXT__II_3II
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
JNI_ABORT);
}
if (_exception) {
@@ -807,14 +921,14 @@ exit:
static void
android_glTexParameterIivEXT__IILjava_nio_IntBuffer_2
(JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLint *params = (GLint *) 0;
params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
params = (GLint *) (_paramsBase + _bufferOffset);
}
glTexParameterIivEXT(
@@ -823,7 +937,7 @@ android_glTexParameterIivEXT__IILjava_nio_IntBuffer_2
(GLint *)params
);
if (_array) {
releasePointer(_env, _array, params, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
}
}
@@ -852,7 +966,7 @@ android_glTexParameterIuivEXT__II_3II
}
_remaining = _env->GetArrayLength(params_ref) - offset;
params_base = (GLuint *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetIntArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glTexParameterIuivEXT(
@@ -863,7 +977,7 @@ android_glTexParameterIuivEXT__II_3II
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
JNI_ABORT);
}
if (_exception) {
@@ -875,14 +989,14 @@ exit:
static void
android_glTexParameterIuivEXT__IILjava_nio_IntBuffer_2
(JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLuint *params = (GLuint *) 0;
params = (GLuint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
params = (GLuint *) (_paramsBase + _bufferOffset);
}
glTexParameterIuivEXT(
@@ -891,7 +1005,7 @@ android_glTexParameterIuivEXT__IILjava_nio_IntBuffer_2
(GLuint *)params
);
if (_array) {
releasePointer(_env, _array, params, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
}
}
@@ -920,7 +1034,7 @@ android_glGetTexParameterIivEXT__II_3II
}
_remaining = _env->GetArrayLength(params_ref) - offset;
params_base = (GLint *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetIntArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glGetTexParameterIivEXT(
@@ -931,7 +1045,7 @@ android_glGetTexParameterIivEXT__II_3II
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
_exception ? JNI_ABORT: 0);
}
if (_exception) {
@@ -943,14 +1057,14 @@ exit:
static void
android_glGetTexParameterIivEXT__IILjava_nio_IntBuffer_2
(JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLint *params = (GLint *) 0;
params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
params = (GLint *) (_paramsBase + _bufferOffset);
}
glGetTexParameterIivEXT(
@@ -959,7 +1073,7 @@ android_glGetTexParameterIivEXT__IILjava_nio_IntBuffer_2
(GLint *)params
);
if (_array) {
releasePointer(_env, _array, params, JNI_TRUE);
_env->ReleaseIntArrayElements(_array, (jint*)params, 0);
}
}
@@ -988,7 +1102,7 @@ android_glGetTexParameterIuivEXT__II_3II
}
_remaining = _env->GetArrayLength(params_ref) - offset;
params_base = (GLuint *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetIntArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glGetTexParameterIuivEXT(
@@ -999,7 +1113,7 @@ android_glGetTexParameterIuivEXT__II_3II
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
_exception ? JNI_ABORT: 0);
}
if (_exception) {
@@ -1011,14 +1125,14 @@ exit:
static void
android_glGetTexParameterIuivEXT__IILjava_nio_IntBuffer_2
(JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLuint *params = (GLuint *) 0;
params = (GLuint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
params = (GLuint *) (_paramsBase + _bufferOffset);
}
glGetTexParameterIuivEXT(
@@ -1027,7 +1141,7 @@ android_glGetTexParameterIuivEXT__IILjava_nio_IntBuffer_2
(GLuint *)params
);
if (_array) {
releasePointer(_env, _array, params, JNI_TRUE);
_env->ReleaseIntArrayElements(_array, (jint*)params, 0);
}
}
@@ -1056,7 +1170,7 @@ android_glSamplerParameterIivEXT__II_3II
}
_remaining = _env->GetArrayLength(param_ref) - offset;
param_base = (GLint *)
_env->GetPrimitiveArrayCritical(param_ref, (jboolean *)0);
_env->GetIntArrayElements(param_ref, (jboolean *)0);
param = param_base + offset;
glSamplerParameterIivEXT(
@@ -1067,7 +1181,7 @@ android_glSamplerParameterIivEXT__II_3II
exit:
if (param_base) {
_env->ReleasePrimitiveArrayCritical(param_ref, param_base,
_env->ReleaseIntArrayElements(param_ref, (jint*)param_base,
JNI_ABORT);
}
if (_exception) {
@@ -1079,14 +1193,14 @@ exit:
static void
android_glSamplerParameterIivEXT__IILjava_nio_IntBuffer_2
(JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) {
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLint *param = (GLint *) 0;
param = (GLint *)getPointer(_env, param_buf, &_array, &_remaining, &_bufferOffset);
param = (GLint *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (param == NULL) {
char * _paramBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
param = (GLint *) (_paramBase + _bufferOffset);
}
glSamplerParameterIivEXT(
@@ -1095,7 +1209,7 @@ android_glSamplerParameterIivEXT__IILjava_nio_IntBuffer_2
(GLint *)param
);
if (_array) {
releasePointer(_env, _array, param, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)param, JNI_ABORT);
}
}
@@ -1124,7 +1238,7 @@ android_glSamplerParameterIuivEXT__II_3II
}
_remaining = _env->GetArrayLength(param_ref) - offset;
param_base = (GLuint *)
_env->GetPrimitiveArrayCritical(param_ref, (jboolean *)0);
_env->GetIntArrayElements(param_ref, (jboolean *)0);
param = param_base + offset;
glSamplerParameterIuivEXT(
@@ -1135,7 +1249,7 @@ android_glSamplerParameterIuivEXT__II_3II
exit:
if (param_base) {
_env->ReleasePrimitiveArrayCritical(param_ref, param_base,
_env->ReleaseIntArrayElements(param_ref, (jint*)param_base,
JNI_ABORT);
}
if (_exception) {
@@ -1147,14 +1261,14 @@ exit:
static void
android_glSamplerParameterIuivEXT__IILjava_nio_IntBuffer_2
(JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) {
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLuint *param = (GLuint *) 0;
param = (GLuint *)getPointer(_env, param_buf, &_array, &_remaining, &_bufferOffset);
param = (GLuint *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (param == NULL) {
char * _paramBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
param = (GLuint *) (_paramBase + _bufferOffset);
}
glSamplerParameterIuivEXT(
@@ -1163,7 +1277,7 @@ android_glSamplerParameterIuivEXT__IILjava_nio_IntBuffer_2
(GLuint *)param
);
if (_array) {
releasePointer(_env, _array, param, JNI_FALSE);
_env->ReleaseIntArrayElements(_array, (jint*)param, JNI_ABORT);
}
}
@@ -1192,7 +1306,7 @@ android_glGetSamplerParameterIivEXT__II_3II
}
_remaining = _env->GetArrayLength(params_ref) - offset;
params_base = (GLint *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetIntArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glGetSamplerParameterIivEXT(
@@ -1203,7 +1317,7 @@ android_glGetSamplerParameterIivEXT__II_3II
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
_exception ? JNI_ABORT: 0);
}
if (_exception) {
@@ -1215,14 +1329,14 @@ exit:
static void
android_glGetSamplerParameterIivEXT__IILjava_nio_IntBuffer_2
(JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) {
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLint *params = (GLint *) 0;
params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
params = (GLint *) (_paramsBase + _bufferOffset);
}
glGetSamplerParameterIivEXT(
@@ -1231,7 +1345,7 @@ android_glGetSamplerParameterIivEXT__IILjava_nio_IntBuffer_2
(GLint *)params
);
if (_array) {
releasePointer(_env, _array, params, JNI_TRUE);
_env->ReleaseIntArrayElements(_array, (jint*)params, 0);
}
}
@@ -1260,7 +1374,7 @@ android_glGetSamplerParameterIuivEXT__II_3II
}
_remaining = _env->GetArrayLength(params_ref) - offset;
params_base = (GLuint *)
_env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
_env->GetIntArrayElements(params_ref, (jboolean *)0);
params = params_base + offset;
glGetSamplerParameterIuivEXT(
@@ -1271,7 +1385,7 @@ android_glGetSamplerParameterIuivEXT__II_3II
exit:
if (params_base) {
_env->ReleasePrimitiveArrayCritical(params_ref, params_base,
_env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
_exception ? JNI_ABORT: 0);
}
if (_exception) {
@@ -1283,14 +1397,14 @@ exit:
static void
android_glGetSamplerParameterIuivEXT__IILjava_nio_IntBuffer_2
(JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) {
jarray _array = (jarray) 0;
jintArray _array = (jintArray) 0;
jint _bufferOffset = (jint) 0;
jint _remaining;
GLuint *params = (GLuint *) 0;
params = (GLuint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
if (params == NULL) {
char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
params = (GLuint *) (_paramsBase + _bufferOffset);
}
glGetSamplerParameterIuivEXT(
@@ -1299,7 +1413,7 @@ android_glGetSamplerParameterIuivEXT__IILjava_nio_IntBuffer_2
(GLuint *)params
);
if (_array) {
releasePointer(_env, _array, params, JNI_TRUE);
_env->ReleaseIntArrayElements(_array, (jint*)params, 0);
}
}

File diff suppressed because it is too large Load Diff