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