dri: Unset current context and dispatch table when unbinding
authorKristian Høgsberg <krh@bitplanet.net>
Wed, 8 Sep 2010 12:52:54 +0000 (08:52 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 8 Sep 2010 13:01:43 +0000 (09:01 -0400)
Otherwise, when we switch to an indirect glx context and then back, it looks
like we're still current.

https://bugs.freedesktop.org/show_bug.cgi?id=29977#c7
Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
src/mesa/drivers/dri/intel/intel_context.c
src/mesa/drivers/dri/nouveau/nouveau_context.c
src/mesa/drivers/dri/radeon/radeon_common_context.c
src/mesa/drivers/dri/swrast/swrast.c

index a9ba93d24bb93eee0972a2ac59345d8ed7554ab1..08069d71dd1fd18af8ad0bb4e5ebf217aec7f415 100644 (file)
@@ -873,6 +873,9 @@ intelDestroyContext(__DRIcontext * driContextPriv)
 GLboolean
 intelUnbindContext(__DRIcontext * driContextPriv)
 {
+   /* Unset current context and dispath table */
+   _mesa_make_current(NULL, NULL, NULL);
+
    return GL_TRUE;
 }
 
index f481161d468e221b74af0cd2482faf16fd7a71a8..b1d415257da64676ee96be4fe946e44256aa7d34 100644 (file)
@@ -306,6 +306,9 @@ nouveau_context_make_current(__DRIcontext *dri_ctx, __DRIdrawable *dri_draw,
 GLboolean
 nouveau_context_unbind(__DRIcontext *dri_ctx)
 {
+       /* Unset current context and dispath table */
+       _mesa_make_current(NULL, NULL, NULL);
+
        return GL_TRUE;
 }
 
index 07f7cba354e9e6a7e2fe411cd91bc1c73218c191..b0340cee218a726839ff111e258602853ffa1569 100644 (file)
@@ -363,6 +363,9 @@ GLboolean radeonUnbindContext(__DRIcontext * driContextPriv)
                fprintf(stderr, "%s ctx %p\n", __FUNCTION__,
                        radeon->glCtx);
 
+       /* Unset current context and dispath table */
+       _mesa_make_current(NULL, NULL, NULL);
+
        return GL_TRUE;
 }
 
index f3903c2e380dd45e2fc8da6eb35018284cf2f61d..ff53ffd0debd430433b42e1d84e32cf56a0deb3f 100644 (file)
@@ -713,6 +713,10 @@ dri_unbind_context(__DRIcontext * cPriv)
 {
     TRACE;
     (void) cPriv;
+
+    /* Unset current context and dispath table */
+    _mesa_make_current(NULL, NULL, NULL);
+
     return GL_TRUE;
 }