Take care of texObj reference in _mesa_free_framebuffer_data()
authorBrian <brian@yutani.localnet.net>
Tue, 6 Mar 2007 16:49:15 +0000 (09:49 -0700)
committerBrian <brian@yutani.localnet.net>
Tue, 6 Mar 2007 16:49:15 +0000 (09:49 -0700)
src/mesa/main/framebuffer.c

index 3fe70f449c286a655897dc859dfc9644b2f503db..dabc96d91d921bfdc71a00278664144802e23cf1 100644 (file)
@@ -223,16 +223,21 @@ _mesa_free_framebuffer_data(struct gl_framebuffer *fb)
    for (i = 0; i < BUFFER_COUNT; i++) {
       struct gl_renderbuffer_attachment *att = &fb->Attachment[i];
       if (att->Renderbuffer) {
-         struct gl_renderbuffer *rb = att->Renderbuffer;
-         /* remove framebuffer's reference to renderbuffer */
-         _mesa_dereference_renderbuffer(&rb);
-         if (rb && rb->Name == 0) {
-            /* delete window system renderbuffer */
-            _mesa_dereference_renderbuffer(&rb);
+         _mesa_dereference_renderbuffer(&att->Renderbuffer);
+      }
+      if (att->Texture) {
+         /* render to texture */
+         att->Texture->RefCount--;
+         if (att->Texture->RefCount == 0) {
+            GET_CURRENT_CONTEXT(ctx);
+            if (ctx) {
+               ctx->Driver.DeleteTexture(ctx, att->Texture);
+            }
          }
       }
       att->Type = GL_NONE;
       att->Renderbuffer = NULL;
+      att->Texture = NULL;
    }
 
    /* unbind depth/stencil to decr ref counts */