EGLObjectHandle.java revision ab6fc2a86f34be455c144a2d691e94909998c959
1/* 2** 3** Copyright 2012, The Android Open Source Project 4** 5** Licensed under the Apache License, Version 2.0 (the "License"); 6** you may not use this file except in compliance with the License. 7** You may obtain a copy of the License at 8** 9** http://www.apache.org/licenses/LICENSE-2.0 10** 11** Unless required by applicable law or agreed to in writing, software 12** distributed under the License is distributed on an "AS IS" BASIS, 13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14** See the License for the specific language governing permissions and 15** limitations under the License. 16*/ 17 18package android.opengl; 19 20/** 21 * Base class for wrapped EGL objects. 22 * 23 */ 24public abstract class EGLObjectHandle { 25 private final long mHandle; 26 27 // TODO Deprecate EGLObjectHandle(int) method 28 protected EGLObjectHandle(int handle) { 29 mHandle = handle; 30 } 31 // TODO Unhide the EGLObjectHandle(long) method 32 /** 33 * {@hide} 34 */ 35 protected EGLObjectHandle(long handle) { 36 mHandle = handle; 37 } 38 // TODO Deprecate getHandle() method in favor of getNativeHandle() 39 /** 40 * Returns the native handle of the wrapped EGL object. This handle can be 41 * cast to the corresponding native type on the native side. 42 * 43 * For example, EGLDisplay dpy = (EGLDisplay)handle; 44 * 45 * @return the native handle of the wrapped EGL object. 46 */ 47 public int getHandle() { 48 if ((mHandle & 0xffffffffL) != mHandle) { 49 throw new UnsupportedOperationException(); 50 } 51 return (int)mHandle; 52 } 53 54 // TODO Unhide getNativeHandle() method 55 /** 56 * {@hide} 57 */ 58 public long getNativeHandle() { 59 return mHandle; 60 } 61 @Override 62 public int hashCode() { 63 /* 64 * Based on the algorithm suggested in 65 * http://developer.android.com/reference/java/lang/Object.html 66 */ 67 int result = 17; 68 result = 31 * result + (int) (mHandle ^ (mHandle >>> 32)); 69 return result; 70 } 71} 72