Merge "Replace JNI primitive array critical calls with non-critical ones." into mnc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c126b8e81f
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
Reference in New Issue
Block a user