diff options
author | Jack Palevich <jackpal@google.com> | 2011-03-28 14:49:12 -0700 |
---|---|---|
committer | Jack Palevich <jackpal@google.com> | 2011-03-28 14:49:12 -0700 |
commit | 73108675c944ab4ee89631dced23566b12341b66 (patch) | |
tree | 509982a21e5d9e5e278f06245b839693fa7f9088 /core/jni/android_opengl_GLES11.cpp | |
parent | 45538666db67a3fd528765b22bd4da30280128ef (diff) | |
download | frameworks_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.cpp | 61 |
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 ) */ |