Loading opengl/tools/glgen/gen +7 −2 Original line number Diff line number Diff line Loading @@ -90,6 +90,10 @@ fi rm src/*.class # Add UnsupportedAppUsage.java to known sources. mkdir -p out/android/annotation cp ../../../../base/core/java/android/annotation/UnsupportedAppUsage.java out/android/annotation pushd out > /dev/null mkdir classes javac -d classes android/opengl/EGL14.java \ Loading @@ -109,7 +113,8 @@ javac -d classes android/opengl/EGL14.java \ android/opengl/GLES30.java \ android/opengl/GLES31.java \ android/opengl/GLES31Ext.java \ android/opengl/GLES32.java android/opengl/GLES32.java \ android/annotation/UnsupportedAppUsage.java popd > /dev/null JAVA_RESULT=$? if [ $JAVA_RESULT -ne 0 ]; then Loading Loading @@ -142,7 +147,7 @@ compareGenerated() { echo SAID_PLEASE=1 fi echo " cp $2/$3 $1" echo " cp $2/$3 $1/$3" echo " (cd $1; git add $3)" KEEP_GENERATED=1 fi Loading opengl/tools/glgen/src/JniCodeEmitter.java +29 −7 Original line number Diff line number Diff line Loading @@ -775,6 +775,19 @@ public class JniCodeEmitter { } } String getJniDefaultReturn(JType jType) { if (jType.isPrimitive()) { String baseType = jType.getBaseType(); if (baseType.equals("boolean")) { return "JNI_FALSE"; } else { return "(" + getJniType(jType) + ")0"; } } else { return "nullptr"; } } String getJniMangledName(String name) { name = name.replaceAll("_", "_1"); name = name.replaceAll(";", "_2"); Loading Loading @@ -943,15 +956,15 @@ public class JniCodeEmitter { "jniThrowException(_env, \"java/lang/UnsupportedOperationException\","); out.println(indent + " \"" + cfunc.getName() + "\");"); if (!isVoid) { String retval = getErrorReturnValue(cfunc); if (isVoid) { out.println(indent + "return;"); } else { if (cfunc.getType().isEGLHandle()) { String baseType = cfunc.getType().getBaseType().toLowerCase(); out.println(indent + "return toEGLHandle(_env, " + baseType + "Class, " + baseType + "Constructor, " + retval + ");"); out.println(indent + indent + "return nullptr;"); } else { out.println(indent + "return " + retval + ";"); out.println(indent + indent + "return " + getJniDefaultReturn(jfunc.getType()) + ";"); } } out.println("}"); Loading Loading @@ -1595,8 +1608,17 @@ public class JniCodeEmitter { out.println(indent + "if (_exception) {"); out.println(indent + indent + "jniThrowException(_env, _exceptionType, _exceptionMessage);"); out.println(indent + "}"); if (!isVoid) { if (cfunc.getType().isEGLHandle()) { String baseType = cfunc.getType().getBaseType().toLowerCase(); out.println(indent + indent + "return nullptr;"); } else { out.println(indent + indent + "return " + getJniDefaultReturn(jfunc.getType()) + ";"); } } out.println(indent + "}"); } Loading opengl/tools/glgen/stubs/egl/EGL14Header.java-if +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.opengl; import android.annotation.UnsupportedAppUsage; import android.graphics.SurfaceTexture; import android.view.Surface; import android.view.SurfaceView; Loading opengl/tools/glgen/stubs/egl/EGL14cHeader.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -35,8 +35,6 @@ #include <ui/ANativeObjectBase.h> static int initialized = 0; static jclass egldisplayClass; static jclass eglcontextClass; static jclass eglsurfaceClass; Loading Loading @@ -107,6 +105,7 @@ fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) { if (obj == NULL){ jniThrowException(_env, "java/lang/IllegalArgumentException", "Object is set to null."); return nullptr; } jlong handle = _env->CallLongMethod(obj, mid); Loading opengl/tools/glgen/stubs/egl/EGL15cHeader.cpp +55 −51 Original line number Diff line number Diff line Loading @@ -14,21 +14,21 @@ ** limitations under the License. */ // This source file is automatically generated #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wunused-function" #include <android_runtime/AndroidRuntime.h> #include "jni.h" #include <nativehelper/JNIHelp.h> #include <android_runtime/AndroidRuntime.h> #include <utils/misc.h> #include "jni.h" #include <EGL/egl.h> #include <assert.h> #include <EGL/egl.h> #include <ui/ANativeObjectBase.h> static int initialized = 0; // classes from EGL 1.4 static jclass egldisplayClass; static jclass eglsurfaceClass; Loading Loading @@ -74,7 +74,9 @@ static jobject eglNoSyncObject; /* Cache method IDs each time the class is loaded. */ static void nativeClassInit(JNIEnv *_env, jclass glImplClass) { static void nativeClassInit(JNIEnv *_env, jclass glImplClass) { // EGL 1.4 Init jclass eglconfigClassLocal = _env->FindClass("android/opengl/EGLConfig"); eglconfigClass = (jclass) _env->NewGlobalRef(eglconfigClassLocal); Loading @@ -95,27 +97,21 @@ static void nativeClassInit(JNIEnv *_env, jclass glImplClass) { egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(J)V"); eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(J)V"); jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, reinterpret_cast<jlong>(EGL_NO_CONTEXT)); jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, reinterpret_cast<jlong>(EGL_NO_CONTEXT)); eglNoContextObject = _env->NewGlobalRef(localeglNoContextObject); jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, reinterpret_cast<jlong>(EGL_NO_DISPLAY)); jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, reinterpret_cast<jlong>(EGL_NO_DISPLAY)); eglNoDisplayObject = _env->NewGlobalRef(localeglNoDisplayObject); jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, reinterpret_cast<jlong>(EGL_NO_SURFACE)); jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, reinterpret_cast<jlong>(EGL_NO_SURFACE)); eglNoSurfaceObject = _env->NewGlobalRef(localeglNoSurfaceObject); jclass eglClass = _env->FindClass("android/opengl/EGL15"); jfieldID noContextFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_CONTEXT", "Landroid/opengl/EGLContext;"); jfieldID noContextFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_CONTEXT", "Landroid/opengl/EGLContext;"); _env->SetStaticObjectField(eglClass, noContextFieldID, eglNoContextObject); jfieldID noDisplayFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_DISPLAY", "Landroid/opengl/EGLDisplay;"); jfieldID noDisplayFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_DISPLAY", "Landroid/opengl/EGLDisplay;"); _env->SetStaticObjectField(eglClass, noDisplayFieldID, eglNoDisplayObject); jfieldID noSurfaceFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_SURFACE", "Landroid/opengl/EGLSurface;"); jfieldID noSurfaceFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_SURFACE", "Landroid/opengl/EGLSurface;"); _env->SetStaticObjectField(eglClass, noSurfaceFieldID, eglNoSurfaceObject); // EGL 1.5 init Loading @@ -125,16 +121,17 @@ static void nativeClassInit(JNIEnv *_env, jclass glImplClass) { jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); getBasePointerID = _env->GetStaticMethodID(nioAccessClass, "getBasePointer", "(Ljava/nio/Buffer;)J"); getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); getBasePointerID = _env->GetStaticMethodID(nioAccessClass, "getBasePointer", "(Ljava/nio/Buffer;)J"); getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); positionID = _env->GetFieldID(bufferClass, "position", "I"); limitID = _env->GetFieldID(bufferClass, "limit", "I"); elementSizeShiftID = _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); elementSizeShiftID = _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); jclass eglimageClassLocal = _env->FindClass("android/opengl/EGLImage"); eglimageClass = (jclass) _env->NewGlobalRef(eglimageClassLocal); Loading @@ -147,17 +144,16 @@ static void nativeClassInit(JNIEnv *_env, jclass glImplClass) { eglimageConstructor = _env->GetMethodID(eglimageClass, "<init>", "(J)V"); eglsyncConstructor = _env->GetMethodID(eglsyncClass, "<init>", "(J)V"); jfieldID noImageFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_IMAGE", "Landroid/opengl/EGLImage;"); jfieldID noImageFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_IMAGE", "Landroid/opengl/EGLImage;"); _env->SetStaticObjectField(eglClass, noImageFieldID, eglNoImageObject); jfieldID noSyncFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_SYNC", "Landroid/opengl/EGLSync;"); jfieldID noSyncFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_SYNC", "Landroid/opengl/EGLSync;"); _env->SetStaticObjectField(eglClass, noSyncFieldID, eglNoSyncObject); } static void *getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { static void * getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { jint position; jint limit; jint elementSizeShift; Loading @@ -167,34 +163,42 @@ static void *getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remai limit = _env->GetIntField(buffer, limitID); elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); *remaining = (limit - position) << elementSizeShift; pointer = _env->CallStaticLongMethod(nioAccessClass, getBasePointerID, buffer); pointer = _env->CallStaticLongMethod(nioAccessClass, getBasePointerID, buffer); if (pointer != 0L) { *array = NULL; return reinterpret_cast<void*>(pointer); } eglimageGetHandleID = _env->GetMethodID(eglimageClass, "getNativeHandle", "()J"); eglsyncGetHandleID = _env->GetMethodID(eglsyncClass, "getNativeHandle", "()J"); *array = (jarray)_env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); return NULL; } static void releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) { _env->ReleasePrimitiveArrayCritical(array, data, commit ? 0 : JNI_ABORT); static void releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) { _env->ReleasePrimitiveArrayCritical(array, data, commit ? 0 : JNI_ABORT); } static void *fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) { static void * fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) { if (obj == NULL) { jniThrowException(_env, "java/lang/IllegalArgumentException", "Object is set to null."); jniThrowException(_env, "java/lang/IllegalArgumentException", "Object is set to null."); return nullptr; } jlong handle = _env->CallLongMethod(obj, mid); return reinterpret_cast<void*>(handle); } static jobject toEGLHandle(JNIEnv *_env, jclass cls, jmethodID con, void *handle) { static jobject toEGLHandle(JNIEnv *_env, jclass cls, jmethodID con, void *handle) { if (cls == eglimageClass && (EGLImage)handle == EGL_NO_IMAGE) { return eglNoImageObject; } Loading Loading
opengl/tools/glgen/gen +7 −2 Original line number Diff line number Diff line Loading @@ -90,6 +90,10 @@ fi rm src/*.class # Add UnsupportedAppUsage.java to known sources. mkdir -p out/android/annotation cp ../../../../base/core/java/android/annotation/UnsupportedAppUsage.java out/android/annotation pushd out > /dev/null mkdir classes javac -d classes android/opengl/EGL14.java \ Loading @@ -109,7 +113,8 @@ javac -d classes android/opengl/EGL14.java \ android/opengl/GLES30.java \ android/opengl/GLES31.java \ android/opengl/GLES31Ext.java \ android/opengl/GLES32.java android/opengl/GLES32.java \ android/annotation/UnsupportedAppUsage.java popd > /dev/null JAVA_RESULT=$? if [ $JAVA_RESULT -ne 0 ]; then Loading Loading @@ -142,7 +147,7 @@ compareGenerated() { echo SAID_PLEASE=1 fi echo " cp $2/$3 $1" echo " cp $2/$3 $1/$3" echo " (cd $1; git add $3)" KEEP_GENERATED=1 fi Loading
opengl/tools/glgen/src/JniCodeEmitter.java +29 −7 Original line number Diff line number Diff line Loading @@ -775,6 +775,19 @@ public class JniCodeEmitter { } } String getJniDefaultReturn(JType jType) { if (jType.isPrimitive()) { String baseType = jType.getBaseType(); if (baseType.equals("boolean")) { return "JNI_FALSE"; } else { return "(" + getJniType(jType) + ")0"; } } else { return "nullptr"; } } String getJniMangledName(String name) { name = name.replaceAll("_", "_1"); name = name.replaceAll(";", "_2"); Loading Loading @@ -943,15 +956,15 @@ public class JniCodeEmitter { "jniThrowException(_env, \"java/lang/UnsupportedOperationException\","); out.println(indent + " \"" + cfunc.getName() + "\");"); if (!isVoid) { String retval = getErrorReturnValue(cfunc); if (isVoid) { out.println(indent + "return;"); } else { if (cfunc.getType().isEGLHandle()) { String baseType = cfunc.getType().getBaseType().toLowerCase(); out.println(indent + "return toEGLHandle(_env, " + baseType + "Class, " + baseType + "Constructor, " + retval + ");"); out.println(indent + indent + "return nullptr;"); } else { out.println(indent + "return " + retval + ";"); out.println(indent + indent + "return " + getJniDefaultReturn(jfunc.getType()) + ";"); } } out.println("}"); Loading Loading @@ -1595,8 +1608,17 @@ public class JniCodeEmitter { out.println(indent + "if (_exception) {"); out.println(indent + indent + "jniThrowException(_env, _exceptionType, _exceptionMessage);"); out.println(indent + "}"); if (!isVoid) { if (cfunc.getType().isEGLHandle()) { String baseType = cfunc.getType().getBaseType().toLowerCase(); out.println(indent + indent + "return nullptr;"); } else { out.println(indent + indent + "return " + getJniDefaultReturn(jfunc.getType()) + ";"); } } out.println(indent + "}"); } Loading
opengl/tools/glgen/stubs/egl/EGL14Header.java-if +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.opengl; import android.annotation.UnsupportedAppUsage; import android.graphics.SurfaceTexture; import android.view.Surface; import android.view.SurfaceView; Loading
opengl/tools/glgen/stubs/egl/EGL14cHeader.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -35,8 +35,6 @@ #include <ui/ANativeObjectBase.h> static int initialized = 0; static jclass egldisplayClass; static jclass eglcontextClass; static jclass eglsurfaceClass; Loading Loading @@ -107,6 +105,7 @@ fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) { if (obj == NULL){ jniThrowException(_env, "java/lang/IllegalArgumentException", "Object is set to null."); return nullptr; } jlong handle = _env->CallLongMethod(obj, mid); Loading
opengl/tools/glgen/stubs/egl/EGL15cHeader.cpp +55 −51 Original line number Diff line number Diff line Loading @@ -14,21 +14,21 @@ ** limitations under the License. */ // This source file is automatically generated #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wunused-function" #include <android_runtime/AndroidRuntime.h> #include "jni.h" #include <nativehelper/JNIHelp.h> #include <android_runtime/AndroidRuntime.h> #include <utils/misc.h> #include "jni.h" #include <EGL/egl.h> #include <assert.h> #include <EGL/egl.h> #include <ui/ANativeObjectBase.h> static int initialized = 0; // classes from EGL 1.4 static jclass egldisplayClass; static jclass eglsurfaceClass; Loading Loading @@ -74,7 +74,9 @@ static jobject eglNoSyncObject; /* Cache method IDs each time the class is loaded. */ static void nativeClassInit(JNIEnv *_env, jclass glImplClass) { static void nativeClassInit(JNIEnv *_env, jclass glImplClass) { // EGL 1.4 Init jclass eglconfigClassLocal = _env->FindClass("android/opengl/EGLConfig"); eglconfigClass = (jclass) _env->NewGlobalRef(eglconfigClassLocal); Loading @@ -95,27 +97,21 @@ static void nativeClassInit(JNIEnv *_env, jclass glImplClass) { egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(J)V"); eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(J)V"); jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, reinterpret_cast<jlong>(EGL_NO_CONTEXT)); jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, reinterpret_cast<jlong>(EGL_NO_CONTEXT)); eglNoContextObject = _env->NewGlobalRef(localeglNoContextObject); jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, reinterpret_cast<jlong>(EGL_NO_DISPLAY)); jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, reinterpret_cast<jlong>(EGL_NO_DISPLAY)); eglNoDisplayObject = _env->NewGlobalRef(localeglNoDisplayObject); jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, reinterpret_cast<jlong>(EGL_NO_SURFACE)); jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, reinterpret_cast<jlong>(EGL_NO_SURFACE)); eglNoSurfaceObject = _env->NewGlobalRef(localeglNoSurfaceObject); jclass eglClass = _env->FindClass("android/opengl/EGL15"); jfieldID noContextFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_CONTEXT", "Landroid/opengl/EGLContext;"); jfieldID noContextFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_CONTEXT", "Landroid/opengl/EGLContext;"); _env->SetStaticObjectField(eglClass, noContextFieldID, eglNoContextObject); jfieldID noDisplayFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_DISPLAY", "Landroid/opengl/EGLDisplay;"); jfieldID noDisplayFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_DISPLAY", "Landroid/opengl/EGLDisplay;"); _env->SetStaticObjectField(eglClass, noDisplayFieldID, eglNoDisplayObject); jfieldID noSurfaceFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_SURFACE", "Landroid/opengl/EGLSurface;"); jfieldID noSurfaceFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_SURFACE", "Landroid/opengl/EGLSurface;"); _env->SetStaticObjectField(eglClass, noSurfaceFieldID, eglNoSurfaceObject); // EGL 1.5 init Loading @@ -125,16 +121,17 @@ static void nativeClassInit(JNIEnv *_env, jclass glImplClass) { jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); getBasePointerID = _env->GetStaticMethodID(nioAccessClass, "getBasePointer", "(Ljava/nio/Buffer;)J"); getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); getBasePointerID = _env->GetStaticMethodID(nioAccessClass, "getBasePointer", "(Ljava/nio/Buffer;)J"); getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); positionID = _env->GetFieldID(bufferClass, "position", "I"); limitID = _env->GetFieldID(bufferClass, "limit", "I"); elementSizeShiftID = _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); elementSizeShiftID = _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); jclass eglimageClassLocal = _env->FindClass("android/opengl/EGLImage"); eglimageClass = (jclass) _env->NewGlobalRef(eglimageClassLocal); Loading @@ -147,17 +144,16 @@ static void nativeClassInit(JNIEnv *_env, jclass glImplClass) { eglimageConstructor = _env->GetMethodID(eglimageClass, "<init>", "(J)V"); eglsyncConstructor = _env->GetMethodID(eglsyncClass, "<init>", "(J)V"); jfieldID noImageFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_IMAGE", "Landroid/opengl/EGLImage;"); jfieldID noImageFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_IMAGE", "Landroid/opengl/EGLImage;"); _env->SetStaticObjectField(eglClass, noImageFieldID, eglNoImageObject); jfieldID noSyncFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_SYNC", "Landroid/opengl/EGLSync;"); jfieldID noSyncFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_SYNC", "Landroid/opengl/EGLSync;"); _env->SetStaticObjectField(eglClass, noSyncFieldID, eglNoSyncObject); } static void *getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { static void * getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) { jint position; jint limit; jint elementSizeShift; Loading @@ -167,34 +163,42 @@ static void *getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remai limit = _env->GetIntField(buffer, limitID); elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); *remaining = (limit - position) << elementSizeShift; pointer = _env->CallStaticLongMethod(nioAccessClass, getBasePointerID, buffer); pointer = _env->CallStaticLongMethod(nioAccessClass, getBasePointerID, buffer); if (pointer != 0L) { *array = NULL; return reinterpret_cast<void*>(pointer); } eglimageGetHandleID = _env->GetMethodID(eglimageClass, "getNativeHandle", "()J"); eglsyncGetHandleID = _env->GetMethodID(eglsyncClass, "getNativeHandle", "()J"); *array = (jarray)_env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); return NULL; } static void releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) { _env->ReleasePrimitiveArrayCritical(array, data, commit ? 0 : JNI_ABORT); static void releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) { _env->ReleasePrimitiveArrayCritical(array, data, commit ? 0 : JNI_ABORT); } static void *fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) { static void * fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) { if (obj == NULL) { jniThrowException(_env, "java/lang/IllegalArgumentException", "Object is set to null."); jniThrowException(_env, "java/lang/IllegalArgumentException", "Object is set to null."); return nullptr; } jlong handle = _env->CallLongMethod(obj, mid); return reinterpret_cast<void*>(handle); } static jobject toEGLHandle(JNIEnv *_env, jclass cls, jmethodID con, void *handle) { static jobject toEGLHandle(JNIEnv *_env, jclass cls, jmethodID con, void *handle) { if (cls == eglimageClass && (EGLImage)handle == EGL_NO_IMAGE) { return eglNoImageObject; } Loading