diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:31:44 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:31:44 -0800 |
commit | 9066cfe9886ac131c34d59ed0e2d287b0e3c0087 (patch) | |
tree | d88beb88001f2482911e3d28e43833b50e4b4e97 /opengl/java/com/google/android/gles_jni/EGLImpl.java | |
parent | d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (diff) | |
download | frameworks_base-9066cfe9886ac131c34d59ed0e2d287b0e3c0087.zip frameworks_base-9066cfe9886ac131c34d59ed0e2d287b0e3c0087.tar.gz frameworks_base-9066cfe9886ac131c34d59ed0e2d287b0e3c0087.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'opengl/java/com/google/android/gles_jni/EGLImpl.java')
-rw-r--r-- | opengl/java/com/google/android/gles_jni/EGLImpl.java | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/opengl/java/com/google/android/gles_jni/EGLImpl.java b/opengl/java/com/google/android/gles_jni/EGLImpl.java new file mode 100644 index 0000000..a667e8d --- /dev/null +++ b/opengl/java/com/google/android/gles_jni/EGLImpl.java @@ -0,0 +1,118 @@ +/* +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package com.google.android.gles_jni; + +import javax.microedition.khronos.egl.*; + +import android.view.Surface; +import android.view.SurfaceView; +import android.view.SurfaceHolder; +import android.view.View; + +public class EGLImpl implements EGL10 { + private EGLContextImpl mContext = new EGLContextImpl(-1); + private EGLDisplayImpl mDisplay = new EGLDisplayImpl(-1); + private EGLSurfaceImpl mSurface = new EGLSurfaceImpl(-1); + + public native boolean eglInitialize(EGLDisplay display, int[] major_minor); + public native boolean eglQueryContext(EGLDisplay display, EGLContext context, int attribute, int[] value); + public native boolean eglQuerySurface(EGLDisplay display, EGLSurface surface, int attribute, int[] value); + public native boolean eglChooseConfig(EGLDisplay display, int[] attrib_list, EGLConfig[] configs, int config_size, int[] num_config); + public native boolean eglGetConfigAttrib(EGLDisplay display, EGLConfig config, int attribute, int[] value); + public native boolean eglGetConfigs(EGLDisplay display, EGLConfig[] configs, int config_size, int[] num_config); + public native int eglGetError(); + public native boolean eglDestroyContext(EGLDisplay display, EGLContext context); + public native boolean eglDestroySurface(EGLDisplay display, EGLSurface surface); + public native boolean eglMakeCurrent(EGLDisplay display, EGLSurface draw, EGLSurface read, EGLContext context); + public native String eglQueryString(EGLDisplay display, int name); + public native boolean eglSwapBuffers(EGLDisplay display, EGLSurface surface); + public native boolean eglTerminate(EGLDisplay display); + public native boolean eglCopyBuffers(EGLDisplay display, EGLSurface surface, Object native_pixmap); + public native boolean eglWaitGL(); + public native boolean eglWaitNative(int engine, Object bindTarget); + + public EGLContext eglCreateContext(EGLDisplay display, EGLConfig config, EGLContext share_context, int[] attrib_list) { + return new EGLContextImpl( _eglCreateContext(display, config, share_context, attrib_list) ); + } + + public EGLSurface eglCreatePbufferSurface(EGLDisplay display, EGLConfig config, int[] attrib_list) { + return new EGLSurfaceImpl( _eglCreatePbufferSurface(display, config, attrib_list) ); + } + + public EGLSurface eglCreatePixmapSurface(EGLDisplay display, EGLConfig config, Object native_pixmap, int[] attrib_list) { + EGLSurfaceImpl sur = new EGLSurfaceImpl(); + _eglCreatePixmapSurface(sur, display, config, native_pixmap, attrib_list); + return sur; + } + + public EGLSurface eglCreateWindowSurface(EGLDisplay display, EGLConfig config, Object native_window, int[] attrib_list) { + Surface sur; + if (native_window instanceof SurfaceView) { + SurfaceView surfaceView = (SurfaceView)native_window; + sur = surfaceView.getHolder().getSurface(); + } else if (native_window instanceof SurfaceHolder) { + SurfaceHolder holder = (SurfaceHolder)native_window; + sur = holder.getSurface(); + } else { + throw new java.lang.UnsupportedOperationException( + "eglCreateWindowSurface() can only be called with an instance of " + + "SurfaceView or SurfaceHolder at the moment, this will be fixed later."); + } + return new EGLSurfaceImpl( _eglCreateWindowSurface(display, config, sur, attrib_list) ); + } + + public synchronized EGLDisplay eglGetDisplay(Object native_display) { + int value = _eglGetDisplay(native_display); + if (mDisplay.mEGLDisplay != value) + mDisplay = new EGLDisplayImpl(value); + return mDisplay; + } + + public synchronized EGLContext eglGetCurrentContext() { + int value = _eglGetCurrentContext(); + if (mContext.mEGLContext != value) + mContext = new EGLContextImpl(value); + return mContext; + } + + public synchronized EGLDisplay eglGetCurrentDisplay() { + int value = _eglGetCurrentDisplay(); + if (mDisplay.mEGLDisplay != value) + mDisplay = new EGLDisplayImpl(value); + return mDisplay; + } + + public synchronized EGLSurface eglGetCurrentSurface(int readdraw) { + int value = _eglGetCurrentSurface(readdraw); + if (mSurface.mEGLSurface != value) + mSurface = new EGLSurfaceImpl(value); + return mSurface; + } + + private native int _eglCreateContext(EGLDisplay display, EGLConfig config, EGLContext share_context, int[] attrib_list); + private native int _eglCreatePbufferSurface(EGLDisplay display, EGLConfig config, int[] attrib_list); + private native void _eglCreatePixmapSurface(EGLSurface sur, EGLDisplay display, EGLConfig config, Object native_pixmap, int[] attrib_list); + private native int _eglCreateWindowSurface(EGLDisplay display, EGLConfig config, Object native_window, int[] attrib_list); + private native int _eglGetDisplay(Object native_display); + private native int _eglGetCurrentContext(); + private native int _eglGetCurrentDisplay(); + private native int _eglGetCurrentSurface(int readdraw); + + native private static void _nativeClassInit(); + static { _nativeClassInit(); } +} |