am a88abfb3: am 6ab07fac: Merge "Use long for pointers in opengl/EGL classes"

* commit 'a88abfb3a5dccdad6210b294843fa2e21a27d378':
  Use long for pointers in opengl/EGL classes
This commit is contained in:
Narayan Kamath
2014-02-25 13:14:30 +00:00
committed by Android Git Automerger
8 changed files with 114 additions and 45 deletions

View File

@ -69,22 +69,22 @@ nativeClassInit(JNIEnv *_env, jclass glImplClass)
jclass eglconfigClassLocal = _env->FindClass("android/opengl/EGLConfig"); jclass eglconfigClassLocal = _env->FindClass("android/opengl/EGLConfig");
eglconfigClass = (jclass) _env->NewGlobalRef(eglconfigClassLocal); eglconfigClass = (jclass) _env->NewGlobalRef(eglconfigClassLocal);
egldisplayGetHandleID = _env->GetMethodID(egldisplayClass, "getHandle", "()I"); egldisplayGetHandleID = _env->GetMethodID(egldisplayClass, "getNativeHandle", "()J");
eglcontextGetHandleID = _env->GetMethodID(eglcontextClass, "getHandle", "()I"); eglcontextGetHandleID = _env->GetMethodID(eglcontextClass, "getNativeHandle", "()J");
eglsurfaceGetHandleID = _env->GetMethodID(eglsurfaceClass, "getHandle", "()I"); eglsurfaceGetHandleID = _env->GetMethodID(eglsurfaceClass, "getNativeHandle", "()J");
eglconfigGetHandleID = _env->GetMethodID(eglconfigClass, "getHandle", "()I"); eglconfigGetHandleID = _env->GetMethodID(eglconfigClass, "getNativeHandle", "()J");
egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(I)V"); egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(J)V");
eglcontextConstructor = _env->GetMethodID(eglcontextClass, "<init>", "(I)V"); eglcontextConstructor = _env->GetMethodID(eglcontextClass, "<init>", "(J)V");
eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(I)V"); eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(J)V");
eglconfigConstructor = _env->GetMethodID(eglconfigClass, "<init>", "(I)V"); eglconfigConstructor = _env->GetMethodID(eglconfigClass, "<init>", "(J)V");
jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, (jint)EGL_NO_CONTEXT); jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, reinterpret_cast<jlong>(EGL_NO_CONTEXT));
eglNoContextObject = _env->NewGlobalRef(localeglNoContextObject); eglNoContextObject = _env->NewGlobalRef(localeglNoContextObject);
jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, (jint)EGL_NO_DISPLAY); jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, reinterpret_cast<jlong>(EGL_NO_DISPLAY));
eglNoDisplayObject = _env->NewGlobalRef(localeglNoDisplayObject); eglNoDisplayObject = _env->NewGlobalRef(localeglNoDisplayObject);
jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, (jint)EGL_NO_SURFACE); jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, reinterpret_cast<jlong>(EGL_NO_SURFACE));
eglNoSurfaceObject = _env->NewGlobalRef(localeglNoSurfaceObject); eglNoSurfaceObject = _env->NewGlobalRef(localeglNoSurfaceObject);
@ -106,7 +106,8 @@ fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) {
"Object is set to null."); "Object is set to null.");
} }
return (void*) (_env->CallIntMethod(obj, mid)); jlong handle = _env->CallLongMethod(obj, mid);
return reinterpret_cast<void*>(handle);
} }
static jobject static jobject
@ -126,7 +127,7 @@ toEGLHandle(JNIEnv *_env, jclass cls, jmethodID con, void * handle) {
return eglNoSurfaceObject; return eglNoSurfaceObject;
} }
return _env->NewObject(cls, con, (jint)handle); return _env->NewObject(cls, con, reinterpret_cast<jlong>(handle));
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
@ -142,14 +143,26 @@ android_eglGetError
/* EGLDisplay eglGetDisplay ( EGLNativeDisplayType display_id ) */ /* EGLDisplay eglGetDisplay ( EGLNativeDisplayType display_id ) */
static jobject static jobject
android_eglGetDisplay android_eglGetDisplay
(JNIEnv *_env, jobject _this, jint display_id) { (JNIEnv *_env, jobject _this, jlong display_id) {
EGLDisplay _returnValue = (EGLDisplay) 0; EGLDisplay _returnValue = (EGLDisplay) 0;
_returnValue = eglGetDisplay( _returnValue = eglGetDisplay(
(EGLNativeDisplayType)display_id reinterpret_cast<EGLNativeDisplayType>(display_id)
); );
return toEGLHandle(_env, egldisplayClass, egldisplayConstructor, _returnValue); return toEGLHandle(_env, egldisplayClass, egldisplayConstructor, _returnValue);
} }
/* EGLDisplay eglGetDisplay ( EGLNativeDisplayType display_id ) */
static jobject
android_eglGetDisplayInt
(JNIEnv *_env, jobject _this, jint display_id) {
if (sizeof(void*) != sizeof(uint32_t)) {
jniThrowException(_env, "java/lang/UnsupportedOperationException", "eglGetDisplay");
return 0;
}
return android_eglGetDisplay(_env, _this, display_id);
}
/* EGLBoolean eglInitialize ( EGLDisplay dpy, EGLint *major, EGLint *minor ) */ /* EGLBoolean eglInitialize ( EGLDisplay dpy, EGLint *major, EGLint *minor ) */
static jboolean static jboolean
android_eglInitialize android_eglInitialize
@ -852,7 +865,7 @@ android_eglReleaseThread
/* EGLSurface eglCreatePbufferFromClientBuffer ( EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list ) */ /* EGLSurface eglCreatePbufferFromClientBuffer ( EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list ) */
static jobject static jobject
android_eglCreatePbufferFromClientBuffer android_eglCreatePbufferFromClientBuffer
(JNIEnv *_env, jobject _this, jobject dpy, jint buftype, jint buffer, jobject config, jintArray attrib_list_ref, jint offset) { (JNIEnv *_env, jobject _this, jobject dpy, jint buftype, jlong buffer, jobject config, jintArray attrib_list_ref, jint offset) {
jint _exception = 0; jint _exception = 0;
const char * _exceptionType = NULL; const char * _exceptionType = NULL;
const char * _exceptionMessage = NULL; const char * _exceptionMessage = NULL;
@ -897,7 +910,7 @@ android_eglCreatePbufferFromClientBuffer
_returnValue = eglCreatePbufferFromClientBuffer( _returnValue = eglCreatePbufferFromClientBuffer(
(EGLDisplay)dpy_native, (EGLDisplay)dpy_native,
(EGLenum)buftype, (EGLenum)buftype,
(EGLClientBuffer)buffer, reinterpret_cast<EGLClientBuffer>(buffer),
(EGLConfig)config_native, (EGLConfig)config_native,
(EGLint *)attrib_list (EGLint *)attrib_list
); );
@ -913,6 +926,16 @@ exit:
return toEGLHandle(_env, eglsurfaceClass, eglsurfaceConstructor, _returnValue); return toEGLHandle(_env, eglsurfaceClass, eglsurfaceConstructor, _returnValue);
} }
static jobject
android_eglCreatePbufferFromClientBufferInt
(JNIEnv *_env, jobject _this, jobject dpy, jint buftype, jint buffer, jobject config, jintArray attrib_list_ref, jint offset) {
if(sizeof(void*) != sizeof(uint32_t)) {
jniThrowException(_env, "java/lang/UnsupportedOperationException", "eglCreatePbufferFromClientBuffer");
return 0;
}
return android_eglCreatePbufferFromClientBuffer(_env, _this, dpy, buftype, buffer, config, attrib_list_ref, offset);
}
/* EGLBoolean eglSurfaceAttrib ( EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value ) */ /* EGLBoolean eglSurfaceAttrib ( EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value ) */
static jboolean static jboolean
android_eglSurfaceAttrib android_eglSurfaceAttrib
@ -1207,7 +1230,8 @@ static const char *classPathName = "android/opengl/EGL14";
static JNINativeMethod methods[] = { static JNINativeMethod methods[] = {
{"_nativeClassInit", "()V", (void*)nativeClassInit }, {"_nativeClassInit", "()V", (void*)nativeClassInit },
{"eglGetError", "()I", (void *) android_eglGetError }, {"eglGetError", "()I", (void *) android_eglGetError },
{"eglGetDisplay", "(I)Landroid/opengl/EGLDisplay;", (void *) android_eglGetDisplay }, {"eglGetDisplay", "(I)Landroid/opengl/EGLDisplay;", (void *) android_eglGetDisplayInt },
{"eglGetDisplay", "(J)Landroid/opengl/EGLDisplay;", (void *) android_eglGetDisplay },
{"eglInitialize", "(Landroid/opengl/EGLDisplay;[II[II)Z", (void *) android_eglInitialize }, {"eglInitialize", "(Landroid/opengl/EGLDisplay;[II[II)Z", (void *) android_eglInitialize },
{"eglTerminate", "(Landroid/opengl/EGLDisplay;)Z", (void *) android_eglTerminate }, {"eglTerminate", "(Landroid/opengl/EGLDisplay;)Z", (void *) android_eglTerminate },
{"eglQueryString", "(Landroid/opengl/EGLDisplay;I)Ljava/lang/String;", (void *) android_eglQueryString__Landroind_opengl_EGLDisplay_2I }, {"eglQueryString", "(Landroid/opengl/EGLDisplay;I)Ljava/lang/String;", (void *) android_eglQueryString__Landroind_opengl_EGLDisplay_2I },
@ -1224,7 +1248,8 @@ static JNINativeMethod methods[] = {
{"eglQueryAPI", "()I", (void *) android_eglQueryAPI }, {"eglQueryAPI", "()I", (void *) android_eglQueryAPI },
{"eglWaitClient", "()Z", (void *) android_eglWaitClient }, {"eglWaitClient", "()Z", (void *) android_eglWaitClient },
{"eglReleaseThread", "()Z", (void *) android_eglReleaseThread }, {"eglReleaseThread", "()Z", (void *) android_eglReleaseThread },
{"eglCreatePbufferFromClientBuffer", "(Landroid/opengl/EGLDisplay;IILandroid/opengl/EGLConfig;[II)Landroid/opengl/EGLSurface;", (void *) android_eglCreatePbufferFromClientBuffer }, {"eglCreatePbufferFromClientBuffer", "(Landroid/opengl/EGLDisplay;IILandroid/opengl/EGLConfig;[II)Landroid/opengl/EGLSurface;", (void *) android_eglCreatePbufferFromClientBufferInt },
{"eglCreatePbufferFromClientBuffer", "(Landroid/opengl/EGLDisplay;IJLandroid/opengl/EGLConfig;[II)Landroid/opengl/EGLSurface;", (void *) android_eglCreatePbufferFromClientBuffer },
{"eglSurfaceAttrib", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;II)Z", (void *) android_eglSurfaceAttrib }, {"eglSurfaceAttrib", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;II)Z", (void *) android_eglSurfaceAttrib },
{"eglBindTexImage", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z", (void *) android_eglBindTexImage }, {"eglBindTexImage", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z", (void *) android_eglBindTexImage },
{"eglReleaseTexImage", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z", (void *) android_eglReleaseTexImage }, {"eglReleaseTexImage", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z", (void *) android_eglReleaseTexImage },

View File

@ -70,22 +70,22 @@ nativeClassInit(JNIEnv *_env, jclass glImplClass)
jclass eglconfigClassLocal = _env->FindClass("android/opengl/EGLConfig"); jclass eglconfigClassLocal = _env->FindClass("android/opengl/EGLConfig");
eglconfigClass = (jclass) _env->NewGlobalRef(eglconfigClassLocal); eglconfigClass = (jclass) _env->NewGlobalRef(eglconfigClassLocal);
egldisplayGetHandleID = _env->GetMethodID(egldisplayClass, "getHandle", "()I"); egldisplayGetHandleID = _env->GetMethodID(egldisplayClass, "getNativeHandle", "()J");
eglcontextGetHandleID = _env->GetMethodID(eglcontextClass, "getHandle", "()I"); eglcontextGetHandleID = _env->GetMethodID(eglcontextClass, "getNativeHandle", "()J");
eglsurfaceGetHandleID = _env->GetMethodID(eglsurfaceClass, "getHandle", "()I"); eglsurfaceGetHandleID = _env->GetMethodID(eglsurfaceClass, "getNativeHandle", "()J");
eglconfigGetHandleID = _env->GetMethodID(eglconfigClass, "getHandle", "()I"); eglconfigGetHandleID = _env->GetMethodID(eglconfigClass, "getNativeHandle", "()J");
egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(I)V"); egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(J)V");
eglcontextConstructor = _env->GetMethodID(eglcontextClass, "<init>", "(I)V"); eglcontextConstructor = _env->GetMethodID(eglcontextClass, "<init>", "(J)V");
eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(I)V"); eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(J)V");
eglconfigConstructor = _env->GetMethodID(eglconfigClass, "<init>", "(I)V"); eglconfigConstructor = _env->GetMethodID(eglconfigClass, "<init>", "(J)V");
jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, (jint)EGL_NO_CONTEXT); jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, reinterpret_cast<jlong>(EGL_NO_CONTEXT));
eglNoContextObject = _env->NewGlobalRef(localeglNoContextObject); eglNoContextObject = _env->NewGlobalRef(localeglNoContextObject);
jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, (jint)EGL_NO_DISPLAY); jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, reinterpret_cast<jlong>(EGL_NO_DISPLAY));
eglNoDisplayObject = _env->NewGlobalRef(localeglNoDisplayObject); eglNoDisplayObject = _env->NewGlobalRef(localeglNoDisplayObject);
jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, (jint)EGL_NO_SURFACE); jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, reinterpret_cast<jlong>(EGL_NO_SURFACE));
eglNoSurfaceObject = _env->NewGlobalRef(localeglNoSurfaceObject); eglNoSurfaceObject = _env->NewGlobalRef(localeglNoSurfaceObject);
@ -107,7 +107,7 @@ fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) {
"Object is set to null."); "Object is set to null.");
} }
return (void*) (_env->CallIntMethod(obj, mid)); return reinterpret_cast<void*>(_env->CallLongMethod(obj, mid));
} }
static jobject static jobject
@ -127,7 +127,7 @@ toEGLHandle(JNIEnv *_env, jclass cls, jmethodID con, void * handle) {
return eglNoSurfaceObject; return eglNoSurfaceObject;
} }
return _env->NewObject(cls, con, (jint)handle); return _env->NewObject(cls, con, reinterpret_cast<jlong>(handle));
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------

View File

@ -155,10 +155,18 @@ public static final int EGL_CORE_NATIVE_ENGINE = 0x305B;
); );
// C function EGLDisplay eglGetDisplay ( EGLNativeDisplayType display_id ) // C function EGLDisplay eglGetDisplay ( EGLNativeDisplayType display_id )
// TODO Deprecate the eglGetDisplay(int) API method
public static native EGLDisplay eglGetDisplay( public static native EGLDisplay eglGetDisplay(
int display_id int display_id
); );
// TODO Unhide the eglGetDisplay(long) API method
/**
* {@hide}
*/
public static native EGLDisplay eglGetDisplay(
long display_id
);
// C function EGLBoolean eglInitialize ( EGLDisplay dpy, EGLint *major, EGLint *minor ) // C function EGLBoolean eglInitialize ( EGLDisplay dpy, EGLint *major, EGLint *minor )
@ -324,7 +332,7 @@ public static final int EGL_CORE_NATIVE_ENGINE = 0x305B;
); );
// C function EGLSurface eglCreatePbufferFromClientBuffer ( EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list ) // C function EGLSurface eglCreatePbufferFromClientBuffer ( EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list )
// TODO Deprecate the below method
public static native EGLSurface eglCreatePbufferFromClientBuffer( public static native EGLSurface eglCreatePbufferFromClientBuffer(
EGLDisplay dpy, EGLDisplay dpy,
int buftype, int buftype,
@ -333,6 +341,18 @@ public static final int EGL_CORE_NATIVE_ENGINE = 0x305B;
int[] attrib_list, int[] attrib_list,
int offset int offset
); );
// TODO Unhide the below method
/**
* {@hide}
*/
public static native EGLSurface eglCreatePbufferFromClientBuffer(
EGLDisplay dpy,
int buftype,
long buffer,
EGLConfig config,
int[] attrib_list,
int offset
);
// C function EGLBoolean eglSurfaceAttrib ( EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value ) // C function EGLBoolean eglSurfaceAttrib ( EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value )

View File

@ -22,7 +22,7 @@ package android.opengl;
* *
*/ */
public class EGLConfig extends EGLObjectHandle { public class EGLConfig extends EGLObjectHandle {
private EGLConfig(int handle) { private EGLConfig(long handle) {
super(handle); super(handle);
} }
@ -32,6 +32,6 @@ public class EGLConfig extends EGLObjectHandle {
if (!(o instanceof EGLConfig)) return false; if (!(o instanceof EGLConfig)) return false;
EGLConfig that = (EGLConfig) o; EGLConfig that = (EGLConfig) o;
return getHandle() == that.getHandle(); return getNativeHandle() == that.getNativeHandle();
} }
} }

View File

@ -22,7 +22,7 @@ package android.opengl;
* *
*/ */
public class EGLContext extends EGLObjectHandle { public class EGLContext extends EGLObjectHandle {
private EGLContext(int handle) { private EGLContext(long handle) {
super(handle); super(handle);
} }
@ -32,6 +32,6 @@ public class EGLContext extends EGLObjectHandle {
if (!(o instanceof EGLContext)) return false; if (!(o instanceof EGLContext)) return false;
EGLContext that = (EGLContext) o; EGLContext that = (EGLContext) o;
return getHandle() == that.getHandle(); return getNativeHandle() == that.getNativeHandle();
} }
} }

View File

@ -22,7 +22,7 @@ package android.opengl;
* *
*/ */
public class EGLDisplay extends EGLObjectHandle { public class EGLDisplay extends EGLObjectHandle {
private EGLDisplay(int handle) { private EGLDisplay(long handle) {
super(handle); super(handle);
} }
@ -32,6 +32,6 @@ public class EGLDisplay extends EGLObjectHandle {
if (!(o instanceof EGLDisplay)) return false; if (!(o instanceof EGLDisplay)) return false;
EGLDisplay that = (EGLDisplay) o; EGLDisplay that = (EGLDisplay) o;
return getHandle() == that.getHandle(); return getNativeHandle() == that.getNativeHandle();
} }
} }

View File

@ -22,12 +22,20 @@ package android.opengl;
* *
*/ */
public abstract class EGLObjectHandle { public abstract class EGLObjectHandle {
private final int mHandle; private final long mHandle;
// TODO Deprecate EGLObjectHandle(int) method
protected EGLObjectHandle(int handle) { protected EGLObjectHandle(int handle) {
mHandle = handle; mHandle = handle;
} }
// TODO Unhide the EGLObjectHandle(long) method
/**
* {@hide}
*/
protected EGLObjectHandle(long handle) {
mHandle = handle;
}
// TODO Deprecate getHandle() method in favor of getNativeHandle()
/** /**
* Returns the native handle of the wrapped EGL object. This handle can be * Returns the native handle of the wrapped EGL object. This handle can be
* cast to the corresponding native type on the native side. * cast to the corresponding native type on the native side.
@ -37,11 +45,27 @@ public abstract class EGLObjectHandle {
* @return the native handle of the wrapped EGL object. * @return the native handle of the wrapped EGL object.
*/ */
public int getHandle() { public int getHandle() {
return mHandle; if ((mHandle & 0xffffffffL) != mHandle) {
throw new UnsupportedOperationException();
}
return (int)mHandle;
} }
// TODO Unhide getNativeHandle() method
/**
* {@hide}
*/
public long getNativeHandle() {
return mHandle;
}
@Override @Override
public int hashCode() { public int hashCode() {
return getHandle(); /*
* Based on the algorithm suggested in
* http://developer.android.com/reference/java/lang/Object.html
*/
int result = 17;
result = 31 * result + (int) (mHandle ^ (mHandle >>> 32));
return result;
} }
} }

View File

@ -22,7 +22,7 @@ package android.opengl;
* *
*/ */
public class EGLSurface extends EGLObjectHandle { public class EGLSurface extends EGLObjectHandle {
private EGLSurface(int handle) { private EGLSurface(long handle) {
super(handle); super(handle);
} }
@ -32,6 +32,6 @@ public class EGLSurface extends EGLObjectHandle {
if (!(o instanceof EGLSurface)) return false; if (!(o instanceof EGLSurface)) return false;
EGLSurface that = (EGLSurface) o; EGLSurface that = (EGLSurface) o;
return getHandle() == that.getHandle(); return getNativeHandle() == that.getNativeHandle();
} }
} }