egl: Unbind the old context in _eglBindContext.
authorChia-I Wu <olv@lunarg.com>
Tue, 6 Apr 2010 03:51:25 +0000 (11:51 +0800)
committerChia-I Wu <olv@lunarg.com>
Tue, 6 Apr 2010 03:55:40 +0000 (11:55 +0800)
The last commit incorrectly moved the code under an "else".

src/egl/main/eglcontext.c

index 80e316a10b124d765bd9ece17a512e85ebfc85a1..d5a1e79a9948926a8a1d3f07f7db90a2983e9dbc 100644 (file)
@@ -378,19 +378,18 @@ _eglBindContext(_EGLContext **ctx, _EGLSurface **draw, _EGLSurface **read)
    /* bind the new context */
    oldCtx = _eglBindContextToThread(newCtx, t);
 
-   if (newCtx) {
+   if (newCtx)
       _eglBindContextToSurfaces(newCtx, draw, read);
-   }
-   else {
+
+   /* unbind the old context from its binding surfaces */
+   if (oldCtx && oldCtx != newCtx) {
       assert(!*draw && !*read);
-      if (oldCtx) {
-         *draw = oldCtx->DrawSurface;
-         *read = oldCtx->ReadSurface;
-         assert(*draw && *read);
 
-         /* unbind the old context from its surfaces */
-         _eglBindContextToSurfaces(NULL, draw, read);
-      }
+      *draw = oldCtx->DrawSurface;
+      *read = oldCtx->ReadSurface;
+      assert(*draw && *read);
+
+      _eglBindContextToSurfaces(NULL, draw, read);
    }
 
    *ctx = oldCtx;