Mesa (master): dri: Unset current context and dispatch table when unbinding

Kristian Høgsberg krh at kemper.freedesktop.org
Wed Sep 8 13:06:12 UTC 2010


Module: Mesa
Branch: master
Commit: b4bb6680200b5a898583392f4c831c02f41e63f7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b4bb6680200b5a898583392f4c831c02f41e63f7

Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Wed Sep  8 08:52:54 2010 -0400

dri: Unset current context and dispatch table when unbinding

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 at bitplanet.net>

---

 src/mesa/drivers/dri/intel/intel_context.c         |    3 +++
 src/mesa/drivers/dri/nouveau/nouveau_context.c     |    3 +++
 .../drivers/dri/radeon/radeon_common_context.c     |    3 +++
 src/mesa/drivers/dri/swrast/swrast.c               |    4 ++++
 4 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
index a9ba93d..08069d7 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -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;
 }
 
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c
index f481161..b1d4152 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_context.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c
@@ -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;
 }
 
diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c
index 07f7cba..b0340ce 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common_context.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c
@@ -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;
 }
 
diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c
index f3903c2..ff53ffd 100644
--- a/src/mesa/drivers/dri/swrast/swrast.c
+++ b/src/mesa/drivers/dri/swrast/swrast.c
@@ -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;
 }
 




More information about the mesa-commit mailing list