Mesa (master): r200: Prevent TexGenMatrix from leaking when destroying r200 context.

Alex Deucher agd5f at kemper.freedesktop.org
Wed Aug 12 19:41:17 UTC 2009


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

Author: Pauli Nieminen <suokkos at gmail.com>
Date:   Tue Aug  4 14:42:20 2009 +0300

r200: Prevent TexGenMatrix from leaking when destroying r200 context.

Signed-off-by: Pauli Nieminen <suokkos at gmail.com>

---

 src/mesa/drivers/dri/r200/r200_context.c    |   12 ++++++++++++
 src/mesa/drivers/dri/radeon/radeon_screen.c |   10 +++++-----
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c
index 9a92a32..8cb287d 100644
--- a/src/mesa/drivers/dri/r200/r200_context.c
+++ b/src/mesa/drivers/dri/r200/r200_context.c
@@ -500,3 +500,15 @@ GLboolean r200CreateContext( const __GLcontextModes *glVisual,
 }
 
 
+void r200DestroyContext( __DRIcontextPrivate *driContextPriv )
+{
+	int i;
+	r200ContextPtr rmesa = (r200ContextPtr)driContextPriv->driverPrivate;
+	if (rmesa)
+	{
+		for ( i = 0 ; i < R200_MAX_TEXTURE_UNITS ; i++ ) {
+			_math_matrix_dtr( &rmesa->TexGenMatrix[i] );
+		}
+	}
+	radeonDestroyContext(driContextPriv);
+}
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index 507a620..89bb31e 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -1596,11 +1596,6 @@ static GLboolean radeonCreateContext(const __GLcontextModes * glVisual,
 		return r300CreateContext(glVisual, driContextPriv, sharedContextPriv);
 #endif
 
-#if RADEON_COMMON && defined(RADEON_COMMON_FOR_R200)
-	if (IS_R200_CLASS(screen))
-		return r200CreateContext(glVisual, driContextPriv, sharedContextPriv);
-#endif
-
 #if !RADEON_COMMON
 	(void)screen;
 	return r100CreateContext(glVisual, driContextPriv, sharedContextPriv);
@@ -1800,8 +1795,13 @@ getSwapInfo( __DRIdrawablePrivate *dPriv, __DRIswapInfo * sInfo )
 const struct __DriverAPIRec driDriverAPI = {
    .InitScreen      = radeonInitScreen,
    .DestroyScreen   = radeonDestroyScreen,
+#if RADEON_COMMON && defined(RADEON_COMMON_FOR_R200)
+   .CreateContext   = r200CreateContext,
+   .DestroyContext  = r200DestroyContext,
+#else
    .CreateContext   = radeonCreateContext,
    .DestroyContext  = radeonDestroyContext,
+#endif
    .CreateBuffer    = radeonCreateBuffer,
    .DestroyBuffer   = radeonDestroyBuffer,
    .SwapBuffers     = radeonSwapBuffers,




More information about the mesa-commit mailing list