am 07e0dce4: Merge change 27202 into eclair

Merge commit '07e0dce441ea056710efd76d7df18b8833de772a' into eclair-plus-aosp

* commit '07e0dce441ea056710efd76d7df18b8833de772a':
  Check for failure to create EGL surfaces and contexts.
This commit is contained in:
Jack Palevich
2009-09-25 19:16:13 -07:00
committed by Android Git Automerger

View File

@@ -829,6 +829,9 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
* OpenGL context is a somewhat heavy object. * OpenGL context is a somewhat heavy object.
*/ */
mEglContext = mEGLContextFactory.createContext(mEgl, mEglDisplay, mEglConfig); mEglContext = mEGLContextFactory.createContext(mEgl, mEglDisplay, mEglConfig);
if (mEglContext == null || mEglContext == EGL10.EGL_NO_CONTEXT) {
throw new RuntimeException("createContext failed");
}
mEglSurface = null; mEglSurface = null;
} }
@@ -842,7 +845,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
* The window size has changed, so we need to create a new * The window size has changed, so we need to create a new
* surface. * surface.
*/ */
if (mEglSurface != null) { if (mEglSurface != null && mEglSurface != EGL10.EGL_NO_SURFACE) {
/* /*
* Unbind and destroy the old EGL surface, if * Unbind and destroy the old EGL surface, if
@@ -859,12 +862,17 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
mEglSurface = mEGLWindowSurfaceFactory.createWindowSurface(mEgl, mEglSurface = mEGLWindowSurfaceFactory.createWindowSurface(mEgl,
mEglDisplay, mEglConfig, holder); mEglDisplay, mEglConfig, holder);
if (mEglSurface == null || mEglSurface == EGL10.EGL_NO_SURFACE) {
throw new RuntimeException("createWindowSurface failed");
}
/* /*
* Before we can issue GL commands, we need to make sure * Before we can issue GL commands, we need to make sure
* the context is current and bound to a surface. * the context is current and bound to a surface.
*/ */
mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, if (!mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)) {
mEglContext); throw new RuntimeException("eglMakeCurrent failed.");
}
GL gl = mEglContext.getGL(); GL gl = mEglContext.getGL();
if (mGLWrapper != null) { if (mGLWrapper != null) {
@@ -902,7 +910,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
} }
public void destroySurface() { public void destroySurface() {
if (mEglSurface != null) { if (mEglSurface != null && mEglSurface != EGL10.EGL_NO_SURFACE) {
mEgl.eglMakeCurrent(mEglDisplay, EGL10.EGL_NO_SURFACE, mEgl.eglMakeCurrent(mEglDisplay, EGL10.EGL_NO_SURFACE,
EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE,
EGL10.EGL_NO_CONTEXT); EGL10.EGL_NO_CONTEXT);