mesa: fix-up and use _mesa_delete_renderbuffer()

_mesa_delete_renderbuffer() should free the mutex (though that may be a
no-op) and then free the renderbuffer object itself.  Subclasses of
gl_renderbuffer can use this function too.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
(cherry picked from commit 8472bb4508)
This commit is contained in:
Brian Paul 2012-08-30 09:27:16 -06:00 committed by Andreas Boll
parent a8f8287154
commit dca04373c2
7 changed files with 11 additions and 7 deletions

View file

@ -95,7 +95,7 @@ intel_delete_renderbuffer(struct gl_renderbuffer *rb)
intel_miptree_release(&irb->mt); intel_miptree_release(&irb->mt);
free(irb); _mesa_delete_renderbuffer(rb);
} }
/** /**

View file

@ -107,7 +107,7 @@ nouveau_renderbuffer_del(struct gl_renderbuffer *rb)
struct nouveau_surface *s = &to_nouveau_renderbuffer(rb)->surface; struct nouveau_surface *s = &to_nouveau_renderbuffer(rb)->surface;
nouveau_surface_ref(NULL, s); nouveau_surface_ref(NULL, s);
FREE(rb); _mesa_delete_renderbuffer(rb);
} }
static struct gl_renderbuffer * static struct gl_renderbuffer *

View file

@ -67,7 +67,7 @@ radeon_delete_renderbuffer(struct gl_renderbuffer *rb)
if (rrb && rrb->bo) { if (rrb && rrb->bo) {
radeon_bo_unref(rrb->bo); radeon_bo_unref(rrb->bo);
} }
free(rrb); _mesa_delete_renderbuffer(rb);
} }
#if defined(RADEON_R100) #if defined(RADEON_R100)

View file

@ -268,7 +268,7 @@ swrast_delete_renderbuffer(struct gl_renderbuffer *rb)
TRACE; TRACE;
free(xrb->Base.Buffer); free(xrb->Base.Buffer);
free(xrb); _mesa_delete_renderbuffer(rb);
} }
/* see bytes_per_line in libGL */ /* see bytes_per_line in libGL */

View file

@ -75,11 +75,15 @@ _mesa_new_renderbuffer(struct gl_context *ctx, GLuint name)
/** /**
* Delete a gl_framebuffer. * Delete a gl_framebuffer.
* This is the default function for renderbuffer->Delete(). * This is the default function for renderbuffer->Delete().
* Drivers which subclass gl_renderbuffer should probably implement their
* own delete function. But the driver might also call this function to
* free the object in the end.
*/ */
void void
_mesa_delete_renderbuffer(struct gl_renderbuffer *rb) _mesa_delete_renderbuffer(struct gl_renderbuffer *rb)
{ {
/* no-op */ _glthread_DESTROY_MUTEX(rb->Mutex);
free(rb);
} }

View file

@ -232,7 +232,7 @@ st_renderbuffer_delete(struct gl_renderbuffer *rb)
pipe_surface_reference(&strb->surface, NULL); pipe_surface_reference(&strb->surface, NULL);
pipe_resource_reference(&strb->texture, NULL); pipe_resource_reference(&strb->texture, NULL);
free(strb->data); free(strb->data);
free(strb); _mesa_delete_renderbuffer(rb);
} }

View file

@ -174,7 +174,7 @@ soft_renderbuffer_delete(struct gl_renderbuffer *rb)
free(srb->Buffer); free(srb->Buffer);
srb->Buffer = NULL; srb->Buffer = NULL;
} }
free(srb); _mesa_delete_renderbuffer(rb);
} }