mesa: fix regression from b4bb6680200b5a898583392f4c831c02f41e63f7
authorXiang, Haihao <haihao.xiang@intel.com>
Tue, 23 Nov 2010 00:52:23 +0000 (08:52 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Tue, 23 Nov 2010 00:59:44 +0000 (08:59 +0800)
Pending commands to the previous context aren't flushed since commit b4bb668

Reported-by: Oleksiy Krivoshey <oleksiyk@gmail.com>
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
src/mesa/main/context.c

index b132030b9b1a10ffdaf70606023abc387382436e..4ed179a834c7be96a7675c5b2223935306a07840 100644 (file)
@@ -1399,6 +1399,8 @@ _mesa_make_current( struct gl_context *newCtx,
                     struct gl_framebuffer *drawBuffer,
                     struct gl_framebuffer *readBuffer )
 {
+   GET_CURRENT_CONTEXT(curCtx);
+
    if (MESA_VERBOSE & VERBOSE_API)
       _mesa_debug(newCtx, "_mesa_make_current()\n");
 
@@ -1419,6 +1421,11 @@ _mesa_make_current( struct gl_context *newCtx,
       }
    }
 
+   if (curCtx && 
+      (curCtx->WinSysDrawBuffer || curCtx->WinSysReadBuffer) && /* make sure this context is valid for flushing */
+      curCtx != newCtx)
+      _mesa_flush(curCtx);
+
    /* We used to call _glapi_check_multithread() here.  Now do it in drivers */
    _glapi_set_context((void *) newCtx);
    ASSERT(_mesa_get_current_context() == newCtx);