Mesa (radeon-rewrite): r300: fix bo ref/unref, plugs DRI handle leaks

Dave Airlie airlied at kemper.freedesktop.org
Thu Feb 26 01:15:00 UTC 2009


Module: Mesa
Branch: radeon-rewrite
Commit: 2ebf9b95213b3d1e67dad16442cdd0d8571ef0b3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ebf9b95213b3d1e67dad16442cdd0d8571ef0b3

Author: Dave Airlie <airlied at redhat.com>
Date:   Tue Feb 24 12:04:49 2009 +1000

r300: fix bo ref/unref, plugs DRI handle leaks

---

 src/mesa/drivers/dri/r300/r300_tex.c      |    5 +++++
 src/mesa/drivers/dri/r300/r300_texstate.c |    8 +++++++-
 2 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c
index 27b9070..0f5afbf 100644
--- a/src/mesa/drivers/dri/r300/r300_tex.c
+++ b/src/mesa/drivers/dri/r300/r300_tex.c
@@ -270,6 +270,11 @@ static void r300DeleteTexture(GLcontext * ctx, struct gl_texture_object *texObj)
 				rmesa->hw.textures[i] = 0;
 	}
 
+	if (t->bo) {
+		radeon_bo_unref(t->bo);
+		t->bo = NULL;
+	}
+
 	if (t->mt) {
 		radeon_miptree_unreference(t->mt);
 		t->mt = 0;
diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c
index 4f145bd..ef13fed 100644
--- a/src/mesa/drivers/dri/r300/r300_texstate.c
+++ b/src/mesa/drivers/dri/r300/r300_texstate.c
@@ -433,9 +433,15 @@ void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
 	
 	_mesa_lock_texture(radeon->glCtx, texObj);
 	if (t->bo) {
+		radeon_bo_unref(t->bo);
 		t->bo = NULL;
 	}
+	if (rImage->bo) {
+		radeon_bo_unref(rImage->bo);
+		rImage->bo = NULL;
+	}
 	if (t->mt) {
+		radeon_miptree_unreference(t->mt);
 		t->mt = NULL;
 	}
 	if (rImage->mt) {
@@ -447,7 +453,7 @@ void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
 				   rb->width, rb->height, 1, 0, rb->cpp);
 	texImage->TexFormat = &_mesa_texformat_rgba8888_rev;
 	rImage->bo = rb->bo;
-	
+	radeon_bo_ref(rImage->bo);
 	t->bo = rb->bo;
 	radeon_bo_ref(t->bo);
 	t->tile_bits = 0;




More information about the mesa-commit mailing list