summaryrefslogtreecommitdiffstats
path: root/opengl
diff options
context:
space:
mode:
authorJack Palevich <jackpal@google.com>2009-09-25 19:06:30 -0700
committerJack Palevich <jackpal@google.com>2009-09-25 19:06:30 -0700
commit2e26fc08aa1939c19e939d983bd608cdec050024 (patch)
tree7f3caddcb9c5a5e7e8c4e24177e86bd1cee3e98b /opengl
parent7756cbeef475127ed56bfeabecb3c291366a952f (diff)
downloadframeworks_base-2e26fc08aa1939c19e939d983bd608cdec050024.zip
frameworks_base-2e26fc08aa1939c19e939d983bd608cdec050024.tar.gz
frameworks_base-2e26fc08aa1939c19e939d983bd608cdec050024.tar.bz2
Check for failure to create EGL surfaces and contexts.
Diffstat (limited to 'opengl')
-rw-r--r--opengl/java/android/opengl/GLSurfaceView.java16
1 files changed, 12 insertions, 4 deletions
diff --git a/opengl/java/android/opengl/GLSurfaceView.java b/opengl/java/android/opengl/GLSurfaceView.java
index 3662a4f..695d061 100644
--- a/opengl/java/android/opengl/GLSurfaceView.java
+++ b/opengl/java/android/opengl/GLSurfaceView.java
@@ -829,6 +829,9 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
* OpenGL context is a somewhat heavy object.
*/
mEglContext = mEGLContextFactory.createContext(mEgl, mEglDisplay, mEglConfig);
+ if (mEglContext == null || mEglContext == EGL10.EGL_NO_CONTEXT) {
+ throw new RuntimeException("createContext failed");
+ }
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
* surface.
*/
- if (mEglSurface != null) {
+ if (mEglSurface != null && mEglSurface != EGL10.EGL_NO_SURFACE) {
/*
* Unbind and destroy the old EGL surface, if
@@ -859,12 +862,17 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
mEglSurface = mEGLWindowSurfaceFactory.createWindowSurface(mEgl,
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
* the context is current and bound to a surface.
*/
- mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface,
- mEglContext);
+ if (!mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)) {
+ throw new RuntimeException("eglMakeCurrent failed.");
+ }
GL gl = mEglContext.getGL();
if (mGLWrapper != null) {
@@ -902,7 +910,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
}
public void destroySurface() {
- if (mEglSurface != null) {
+ if (mEglSurface != null && mEglSurface != EGL10.EGL_NO_SURFACE) {
mEgl.eglMakeCurrent(mEglDisplay, EGL10.EGL_NO_SURFACE,
EGL10.EGL_NO_SURFACE,
EGL10.EGL_NO_CONTEXT);