summaryrefslogtreecommitdiffstats
path: root/opengl/java/android/opengl/EGLObjectHandle.java
diff options
context:
space:
mode:
authorAshok Bhat <ashok.bhat@arm.com>2014-02-24 10:06:55 +0000
committerAshok Bhat <ashok.bhat@arm.com>2014-02-24 15:50:22 +0000
commit84bbeb9e0c9c185a22d4882b79e0bc8a598642ab (patch)
treeaec3070b804b96ae85e20d95fc622ef0018762c1 /opengl/java/android/opengl/EGLObjectHandle.java
parentbbfc08b3abc0934f67659f3238eb79dcac838c17 (diff)
downloadframeworks_base-84bbeb9e0c9c185a22d4882b79e0bc8a598642ab.zip
frameworks_base-84bbeb9e0c9c185a22d4882b79e0bc8a598642ab.tar.gz
frameworks_base-84bbeb9e0c9c185a22d4882b79e0bc8a598642ab.tar.bz2
Use long for pointers in opengl/EGL classes
Note that files changed in this patch have been automatically generated by running frameworks/native/opengl/tools/glgen/gen script This patch updates EGL classes in frameworks/base to support 64-bit platforms. Key changes in the EGL classes include [x] EGLObjectHandle class - EGLObjectHandle class has two public methods (constructor and getHandle) that assume handles are 32-bit. They have not been changed. Instead, two new hidden methods (EGLObjectHandle(long) and getNativeHandle) have been added. [x] EG14 class - Two public methods eglGetDisplay and eglCreatePbufferFromClientBuffer assume that handles are 32-bit. They have been changed to throw unsupported operation exception on non 32-bit machines. Two new methods eglGetDisplay(long) and eglCreatePbufferFromClientBuffer(...long buffer..) have been added to support 64-bit handles. Change-Id: I9e0f064e5b33700eb0baa2e1841a21f931f7a765 Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Diffstat (limited to 'opengl/java/android/opengl/EGLObjectHandle.java')
-rw-r--r--opengl/java/android/opengl/EGLObjectHandle.java32
1 files changed, 28 insertions, 4 deletions
diff --git a/opengl/java/android/opengl/EGLObjectHandle.java b/opengl/java/android/opengl/EGLObjectHandle.java
index d2710de..e6e3976 100644
--- a/opengl/java/android/opengl/EGLObjectHandle.java
+++ b/opengl/java/android/opengl/EGLObjectHandle.java
@@ -22,12 +22,20 @@ package android.opengl;
*
*/
public abstract class EGLObjectHandle {
- private final int mHandle;
+ private final long mHandle;
+ // TODO Deprecate EGLObjectHandle(int) method
protected EGLObjectHandle(int 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
* 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.
*/
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
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;
}
}