From 8ff6b9ebeeb24a6161ec6098e6bfdf8790ee5695 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Wed, 9 Nov 2011 20:10:18 -0800 Subject: Terminate EGL when an app goes in the background This does not happen on high end gfx devices. This happens only if only one EGL context is initialized in the current process. Change-Id: Ibd1737efdf84eef8a84108b05795440d1ae9964e --- opengl/java/com/google/android/gles_jni/EGLImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'opengl/java/com') diff --git a/opengl/java/com/google/android/gles_jni/EGLImpl.java b/opengl/java/com/google/android/gles_jni/EGLImpl.java index 51d6ca8..6992019 100644 --- a/opengl/java/com/google/android/gles_jni/EGLImpl.java +++ b/opengl/java/com/google/android/gles_jni/EGLImpl.java @@ -31,6 +31,8 @@ public class EGLImpl implements EGL10 { 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); + /** @hide **/ + public native boolean eglReleaseThread(); 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); @@ -44,6 +46,9 @@ public class EGLImpl implements EGL10 { public native boolean eglCopyBuffers(EGLDisplay display, EGLSurface surface, Object native_pixmap); public native boolean eglWaitGL(); public native boolean eglWaitNative(int engine, Object bindTarget); + + /** @hide **/ + public static native int getInitCount(EGLDisplay display); public EGLContext eglCreateContext(EGLDisplay display, EGLConfig config, EGLContext share_context, int[] attrib_list) { int eglContextId = _eglCreateContext(display, config, share_context, attrib_list); @@ -85,7 +90,7 @@ public class EGLImpl implements EGL10 { eglSurfaceId = _eglCreateWindowSurface(display, config, sur, attrib_list); } else if (native_window instanceof SurfaceTexture) { eglSurfaceId = _eglCreateWindowSurfaceTexture(display, config, - (SurfaceTexture) native_window, attrib_list); + native_window, attrib_list); } else { throw new java.lang.UnsupportedOperationException( "eglCreateWindowSurface() can only be called with an instance of " + -- cgit v1.1