stw: Fix makeCurrent.
authorThomas Hellstrom <thellstrom-at-vmware-dot-com>
Wed, 18 Mar 2009 11:28:31 +0000 (12:28 +0100)
committerKeith Whitwell <keithw@vmware.com>
Wed, 18 Mar 2009 18:02:58 +0000 (18:02 +0000)
Flush if we change current context.

Signed-off-by: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
src/gallium/state_trackers/wgl/shared/stw_context.c

index 708acad..d77daac 100644 (file)
@@ -283,6 +283,7 @@ stw_make_current(
    struct stw_framebuffer *fb;
    GLuint width = 0;
    GLuint height = 0;
+   struct stw_context *curctx;
 
    if (!stw_dev)
       return FALSE;
@@ -297,6 +298,13 @@ stw_make_current(
    current_hdc = hdc;
    current_hglrc = hglrc;
 
+   if (glcurctx != NULL) {
+      curctx = (struct stw_context *) glcurctx->DriverCtx;
+
+      if (curctx != ctx)
+        st_flush(glcurctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
+   }
+
    if (hdc == NULL || hglrc == 0) {
       st_make_current( NULL, NULL, NULL );
       return TRUE;
@@ -305,8 +313,6 @@ stw_make_current(
    /* Return if already current.
     */
    if (glcurctx != NULL) {
-      struct stw_context *curctx = (struct stw_context *) glcurctx->DriverCtx;
-
       if (curctx != NULL && curctx == ctx && ctx->hdc == hdc)
          return TRUE;
    }