diff options
author | Ashok Bhat <ashok.bhat@arm.com> | 2014-02-24 10:06:55 +0000 |
---|---|---|
committer | Ashok Bhat <ashok.bhat@arm.com> | 2014-02-24 15:50:22 +0000 |
commit | 84bbeb9e0c9c185a22d4882b79e0bc8a598642ab (patch) | |
tree | aec3070b804b96ae85e20d95fc622ef0018762c1 /opengl/java/android/opengl/EGLObjectHandle.java | |
parent | bbfc08b3abc0934f67659f3238eb79dcac838c17 (diff) | |
download | frameworks_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.java | 32 |
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; } } |