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