diff options
author | Chia-I Wu <olvaffe@gmail.com> | 2010-01-27 23:51:54 +0800 |
---|---|---|
committer | Chia-I Wu <olvaffe@gmail.com> | 2010-01-28 17:28:47 +0800 |
commit | 17330479b39409a63a06ec9e6b0f8e28b585db12 (patch) | |
tree | 699ae386d4ed799d26b90caeb2566ce1ba072b0e /src/egl/main/eglcontext.c | |
parent | 959481ad70b033a254f4d7d0a94dfdfab6b94c15 (diff) | |
download | external_mesa3d-17330479b39409a63a06ec9e6b0f8e28b585db12.zip external_mesa3d-17330479b39409a63a06ec9e6b0f8e28b585db12.tar.gz external_mesa3d-17330479b39409a63a06ec9e6b0f8e28b585db12.tar.bz2 |
egl: eglMakeCurrent should accept an uninitialized display.
When no context or surface are given, the display is allowed to be
uninitialized. Most drivers cannot handle an uninitialized display.
But they are updated to at least throw a fatal message.
Diffstat (limited to 'src/egl/main/eglcontext.c')
-rw-r--r-- | src/egl/main/eglcontext.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/egl/main/eglcontext.c b/src/egl/main/eglcontext.c index 4a9a472..60d2efd 100644 --- a/src/egl/main/eglcontext.c +++ b/src/egl/main/eglcontext.c @@ -321,16 +321,19 @@ _eglMakeCurrent(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *draw, if (!_eglBindContext(&ctx, &draw, &read)) return EGL_FALSE; - /* avoid double destroy */ - if (read && read == draw) - read = NULL; - - if (ctx && !_eglIsContextLinked(ctx)) - drv->API.DestroyContext(drv, dpy, ctx); - if (draw && !_eglIsSurfaceLinked(draw)) - drv->API.DestroySurface(drv, dpy, draw); - if (read && !_eglIsSurfaceLinked(read)) - drv->API.DestroySurface(drv, dpy, read); + /* nothing we can do if the display is uninitialized */ + if (dpy->Initialized) { + /* avoid double destroy */ + if (read && read == draw) + read = NULL; + + if (ctx && !_eglIsContextLinked(ctx)) + drv->API.DestroyContext(drv, dpy, ctx); + if (draw && !_eglIsSurfaceLinked(draw)) + drv->API.DestroySurface(drv, dpy, draw); + if (read && !_eglIsSurfaceLinked(read)) + drv->API.DestroySurface(drv, dpy, read); + } return EGL_TRUE; } |