mesa: Branch 'master' - 5 commits
Brian Paul
brianp at kemper.freedesktop.org
Tue Mar 6 23:27:24 UTC 2007
src/mesa/drivers/x11/xm_api.c | 6 ++----
src/mesa/drivers/x11/xm_buffer.c | 12 ++++++++++++
src/mesa/main/fbobject.c | 2 --
src/mesa/main/framebuffer.c | 7 +++++++
4 files changed, 21 insertions(+), 6 deletions(-)
New commits:
diff-tree 0af1c6b5d1e2a5560f92b93b5429f70b49449ddb (from parents)
Merge: e69da9d02ecdf47d930276783f8b8df1a3cd99dd fa8961069c5a99f118deeb5c0217e7c7e1de5f1a
Author: Brian <brian at yutani.localnet.net>
Date: Tue Mar 6 16:27:23 2007 -0700
Merge branch 'master' of git+ssh://brianp@git.freedesktop.org/git/mesa/mesa
diff-tree e69da9d02ecdf47d930276783f8b8df1a3cd99dd (from 1a6baf092b4c31d5fd30c934f1a17d69c9689f12)
Author: Brian <brian at yutani.localnet.net>
Date: Tue Mar 6 16:26:22 2007 -0700
explicit calls to _mesa_unreference_framebuffer() not always needed now
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index 6608eef..f7e870b 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -1014,7 +1014,6 @@ _mesa_BindFramebufferEXT(GLenum target,
*/
if (bindReadBuf) {
- _mesa_unreference_framebuffer(&ctx->ReadBuffer);
_mesa_reference_framebuffer(&ctx->ReadBuffer, newFb);
}
@@ -1022,7 +1021,6 @@ _mesa_BindFramebufferEXT(GLenum target,
/* check if old FB had any texture attachments */
check_end_texture_render(ctx, ctx->DrawBuffer);
/* check if time to delete this framebuffer */
- _mesa_unreference_framebuffer(&ctx->DrawBuffer);
_mesa_reference_framebuffer(&ctx->DrawBuffer, newFb);
if (newFb->Name != 0) {
/* check if newly bound framebuffer has any texture attachments */
diff-tree 1a6baf092b4c31d5fd30c934f1a17d69c9689f12 (from 955906aa647d0d233b422c979e1ee81dc32abb87)
Author: Brian <brian at yutani.localnet.net>
Date: Tue Mar 6 16:26:02 2007 -0700
unreference old framebuffer, if needed, in _mesa_reference_framebuffer()
diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c
index c97d2f0..3136a95 100644
--- a/src/mesa/main/framebuffer.c
+++ b/src/mesa/main/framebuffer.c
@@ -253,6 +253,13 @@ _mesa_reference_framebuffer(struct gl_fr
struct gl_framebuffer *fb)
{
assert(ptr);
+ if (*ptr == fb) {
+ /* no change */
+ return;
+ }
+ if (*ptr) {
+ _mesa_unreference_framebuffer(ptr);
+ }
assert(!*ptr);
assert(fb);
_glthread_LOCK_MUTEX(fb->Mutex);
diff-tree 955906aa647d0d233b422c979e1ee81dc32abb87 (from 37fd6be41134df46cb9dad7f9201188ff9707629)
Author: Brian <brian at yutani.localnet.net>
Date: Tue Mar 6 16:25:07 2007 -0700
fix renderbuffer mem leak
diff --git a/src/mesa/drivers/x11/xm_buffer.c b/src/mesa/drivers/x11/xm_buffer.c
index a358ec2..747971a 100644
--- a/src/mesa/drivers/x11/xm_buffer.c
+++ b/src/mesa/drivers/x11/xm_buffer.c
@@ -418,6 +418,18 @@ xmesa_delete_framebuffer(struct gl_frame
XMesaDestroyImage( b->rowimage );
}
+ /* Note that XMesaBuffer renderbuffers normally have a refcount of 2
+ * (creation + binding) so we need to explicitly delete/unbind them here.
+ */
+ if (b->frontxrb) {
+ _mesa_unreference_renderbuffer((struct gl_renderbuffer **) &b->frontxrb);
+ ASSERT(b->frontxrb == NULL);
+ }
+ if (b->backxrb) {
+ _mesa_unreference_renderbuffer((struct gl_renderbuffer **) &b->backxrb);
+ ASSERT(b->backxrb == NULL);
+ }
+
_mesa_free_framebuffer_data(fb);
_mesa_free(fb);
}
diff-tree 37fd6be41134df46cb9dad7f9201188ff9707629 (from a510bc3ee1a696da120c09ee4ec33dc033f671ac)
Author: Brian <brian at yutani.localnet.net>
Date: Tue Mar 6 16:24:48 2007 -0700
formatting fix
diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c
index a42de72..776928d 100644
--- a/src/mesa/drivers/x11/xm_api.c
+++ b/src/mesa/drivers/x11/xm_api.c
@@ -383,8 +383,7 @@ create_xmesa_buffer(XMesaDrawable d, Buf
/*
* Front renderbuffer
*/
- b->frontxrb = xmesa_new_renderbuffer(NULL, 0, &vis->mesa_visual,
- GL_FALSE);
+ b->frontxrb = xmesa_new_renderbuffer(NULL, 0, &vis->mesa_visual, GL_FALSE);
if (!b->frontxrb) {
_mesa_free(b);
return NULL;
@@ -399,8 +398,7 @@ create_xmesa_buffer(XMesaDrawable d, Buf
* Back renderbuffer
*/
if (vis->mesa_visual.doubleBufferMode) {
- b->backxrb = xmesa_new_renderbuffer(NULL, 0, &vis->mesa_visual,
- GL_TRUE);
+ b->backxrb = xmesa_new_renderbuffer(NULL, 0, &vis->mesa_visual, GL_TRUE);
if (!b->backxrb) {
/* XXX free front xrb too */
_mesa_free(b);
More information about the mesa-commit
mailing list