127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* 227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** 327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** Copyright 2009, The Android Open Source Project 427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** 524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** Licensed under the Apache License, Version 2.0 (the "License"); 624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** you may not use this file except in compliance with the License. 724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** You may obtain a copy of the License at 827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** 924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** http://www.apache.org/licenses/LICENSE-2.0 1027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** 1124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** Unless required by applicable law or agreed to in writing, software 1224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** distributed under the License is distributed on an "AS IS" BASIS, 1324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** See the License for the specific language governing permissions and 1527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** limitations under the License. 1627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich*/ 1727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 1827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich// This source file is automatically generated 1927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 2024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include "jni.h" 2124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include "JNIHelp.h" 2227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <android_runtime/AndroidRuntime.h> 2327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <utils/misc.h> 2427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 2527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <assert.h> 2627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <GLES/gl.h> 27be509c9c7de5929d014dfe6d45e71cc8454ede0fJack Palevich#include <GLES/glext.h> 2827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 2927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic int initialized = 0; 3027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 3127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jclass nioAccessClass; 3227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jclass bufferClass; 3327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jmethodID getBasePointerID; 3427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jmethodID getBaseArrayID; 3527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jmethodID getBaseArrayOffsetID; 3627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jfieldID positionID; 3727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jfieldID limitID; 3827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jfieldID elementSizeShiftID; 3927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 4027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* Cache method IDs each time the class is loaded. */ 4127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 4227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 4324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott HughesnativeClassInit(JNIEnv *_env, jclass glImplClass) 4427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{ 4527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess"); 4627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal); 4727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 4827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); 4927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); 5027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 5127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBasePointerID = _env->GetStaticMethodID(nioAccessClass, 5227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich "getBasePointer", "(Ljava/nio/Buffer;)J"); 5327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, 5427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); 5527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, 5627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); 5727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 5827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich positionID = _env->GetFieldID(bufferClass, "position", "I"); 5927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich limitID = _env->GetFieldID(bufferClass, "limit", "I"); 6027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich elementSizeShiftID = 6127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); 6227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 6327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 6427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 6527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void * 6627f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichgetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) 6727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{ 6827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint position; 6927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint limit; 7027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint elementSizeShift; 7127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jlong pointer; 7227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint offset; 7327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich void *data; 7427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 7527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich position = _env->GetIntField(buffer, positionID); 7627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich limit = _env->GetIntField(buffer, limitID); 7727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 7827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich *remaining = (limit - position) << elementSizeShift; 7927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich pointer = _env->CallStaticLongMethod(nioAccessClass, 8027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBasePointerID, buffer); 8127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (pointer != 0L) { 8227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich *array = NULL; 8327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich return (void *) (jint) pointer; 8427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 8524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes 8627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, 8727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBaseArrayID, buffer); 8827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich offset = _env->CallStaticIntMethod(nioAccessClass, 8927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBaseArrayOffsetID, buffer); 9027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0); 9124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes 9227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich return (void *) ((char *) data + offset); 9327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 9427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 9527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 9627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 9727f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) 9827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{ 9927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(array, data, 10027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich commit ? 0 : JNI_ABORT); 10127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 10227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 10327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich// -------------------------------------------------------------------------- 10427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLbitfield glQueryMatrixxOES ( GLfixed *mantissa, GLint *exponent ) */ 10527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jint 10627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glQueryMatrixxOES___3II_3II 10727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jintArray mantissa_ref, jint mantissaOffset, jintArray exponent_ref, jint exponentOffset) { 10827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 10927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLbitfield _returnValue = -1; 11027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *mantissa_base = (GLfixed *) 0; 11127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _mantissaRemaining; 11227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *mantissa = (GLfixed *) 0; 11327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *exponent_base = (GLint *) 0; 11427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exponentRemaining; 11527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *exponent = (GLint *) 0; 11627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 11727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!mantissa_ref) { 11827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 11924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "mantissa == null"); 12027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 12127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 12227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (mantissaOffset < 0) { 12327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 12424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "mantissaOffset < 0"); 12527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 12627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 12727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _mantissaRemaining = _env->GetArrayLength(mantissa_ref) - mantissaOffset; 12827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_mantissaRemaining < 16) { 12927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 13024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - mantissaOffset < 16"); 13127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 13227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 13327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich mantissa_base = (GLfixed *) 13427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(mantissa_ref, (jboolean *)0); 13527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich mantissa = mantissa_base + mantissaOffset; 13627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 13727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!exponent_ref) { 13827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 13924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "exponent == null"); 14027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 14127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 14227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (exponentOffset < 0) { 14327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 14424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "exponentOffset < 0"); 14527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 14627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 14727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exponentRemaining = _env->GetArrayLength(exponent_ref) - exponentOffset; 14827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_exponentRemaining < 16) { 14927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 15024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - exponentOffset < 16"); 15127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 15227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 15327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich exponent_base = (GLint *) 15427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(exponent_ref, (jboolean *)0); 15527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich exponent = exponent_base + exponentOffset; 15627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 15727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _returnValue = glQueryMatrixxOES( 15827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)mantissa, 15927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint *)exponent 16027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 16127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 16227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 16327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (exponent_base) { 16427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(exponent_ref, exponent_base, 16527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 16627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 16727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (mantissa_base) { 16827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(mantissa_ref, mantissa_base, 16927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 17027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 17127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich return _returnValue; 17227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 17327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 17427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLbitfield glQueryMatrixxOES ( GLfixed *mantissa, GLint *exponent ) */ 17527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jint 17627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glQueryMatrixxOES__Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 17727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jobject mantissa_buf, jobject exponent_buf) { 17827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 17927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _mantissaArray = (jarray) 0; 18027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _exponentArray = (jarray) 0; 18127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLbitfield _returnValue = -1; 18227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _mantissaRemaining; 18327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *mantissa = (GLfixed *) 0; 18427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exponentRemaining; 18527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *exponent = (GLint *) 0; 18627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 18727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich mantissa = (GLfixed *)getPointer(_env, mantissa_buf, &_mantissaArray, &_mantissaRemaining); 18827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_mantissaRemaining < 16) { 18927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 19024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < 16"); 19127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 19227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 19327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich exponent = (GLint *)getPointer(_env, exponent_buf, &_exponentArray, &_exponentRemaining); 19427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_exponentRemaining < 16) { 19527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 19624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < 16"); 19727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 19827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 19927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _returnValue = glQueryMatrixxOES( 20027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)mantissa, 20127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint *)exponent 20227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 20327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 20427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 20527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_mantissaArray) { 20627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _mantissaArray, exponent, _exception ? JNI_FALSE : JNI_TRUE); 20727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 20827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_exponentArray) { 20927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _exponentArray, mantissa, _exception ? JNI_FALSE : JNI_TRUE); 21027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 21127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich return _returnValue; 21227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 21327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 21427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic const char *classPathName = "android/opengl/GLES10Ext"; 21527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 21627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic JNINativeMethod methods[] = { 21727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"_nativeClassInit", "()V", (void*)nativeClassInit }, 21827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glQueryMatrixxOES", "([II[II)I", (void *) android_glQueryMatrixxOES___3II_3II }, 21927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glQueryMatrixxOES", "(Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)I", (void *) android_glQueryMatrixxOES__Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 }, 22027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}; 22127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 22227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichint register_android_opengl_jni_GLES10Ext(JNIEnv *_env) 22327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{ 22427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int err; 22527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); 22627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich return err; 22727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 228