summaryrefslogtreecommitdiffstats
path: root/core/jni/android_opengl_GLES11.cpp
diff options
context:
space:
mode:
authorJack Palevich <jackpal@google.com>2011-03-28 14:49:12 -0700
committerJack Palevich <jackpal@google.com>2011-03-28 14:49:12 -0700
commit73108675c944ab4ee89631dced23566b12341b66 (patch)
tree509982a21e5d9e5e278f06245b839693fa7f9088 /core/jni/android_opengl_GLES11.cpp
parent45538666db67a3fd528765b22bd4da30280128ef (diff)
downloadframeworks_base-73108675c944ab4ee89631dced23566b12341b66.zip
frameworks_base-73108675c944ab4ee89631dced23566b12341b66.tar.gz
frameworks_base-73108675c944ab4ee89631dced23566b12341b66.tar.bz2
Add Java support for a few accidentally omitted OpenGL ES APIs.
Fixes 3491494 Support OpenGL APIs: glBlendEquationSeparate and friends Change-Id: I8fdc94b6ea14e9a7e3d402a965d500790a3d8f77
Diffstat (limited to 'core/jni/android_opengl_GLES11.cpp')
-rw-r--r--core/jni/android_opengl_GLES11.cpp61
1 files changed, 57 insertions, 4 deletions
diff --git a/core/jni/android_opengl_GLES11.cpp b/core/jni/android_opengl_GLES11.cpp
index 0f71b9f..1c326ba 100644
--- a/core/jni/android_opengl_GLES11.cpp
+++ b/core/jni/android_opengl_GLES11.cpp
@@ -533,16 +533,69 @@ android_glGetBooleanv__ILjava_nio_IntBuffer_2
static void
android_glGetBufferParameteriv__II_3II
(JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
- _env->ThrowNew(UOEClass,
- "glGetBufferParameteriv");
+ jint _exception = 0;
+ GLint *params_base = (GLint *) 0;
+ jint _remaining;
+ GLint *params = (GLint *) 0;
+
+ if (!params_ref) {
+ _exception = 1;
+ _env->ThrowNew(IAEClass, "params == null");
+ goto exit;
+ }
+ if (offset < 0) {
+ _exception = 1;
+ _env->ThrowNew(IAEClass, "offset < 0");
+ goto exit;
+ }
+ _remaining = _env->GetArrayLength(params_ref) - offset;
+ if (_remaining < 1) {
+ _exception = 1;
+ _env->ThrowNew(IAEClass, "length - offset < 1");
+ goto exit;
+ }
+ params_base = (GLint *)
+ _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+ params = params_base + offset;
+
+ glGetBufferParameteriv(
+ (GLenum)target,
+ (GLenum)pname,
+ (GLint *)params
+ );
+
+exit:
+ if (params_base) {
+ _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+ _exception ? JNI_ABORT: 0);
+ }
}
/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
static void
android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2
(JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
- _env->ThrowNew(UOEClass,
- "glGetBufferParameteriv");
+ jint _exception = 0;
+ jarray _array = (jarray) 0;
+ jint _remaining;
+ GLint *params = (GLint *) 0;
+
+ params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining);
+ if (_remaining < 1) {
+ _exception = 1;
+ _env->ThrowNew(IAEClass, "remaining() < 1");
+ goto exit;
+ }
+ glGetBufferParameteriv(
+ (GLenum)target,
+ (GLenum)pname,
+ (GLint *)params
+ );
+
+exit:
+ if (_array) {
+ releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+ }
}
/* void glGetClipPlanef ( GLenum pname, GLfloat *eqn ) */