[Mesa-dev] [PATCH] mesa: fix-up and use _mesa_delete_renderbuffer()

Jose Fonseca jfonseca at vmware.com
Thu Aug 30 08:33:38 PDT 2012


Looks good to me.

Jose

----- Original Message -----
> _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.
> ---
>  src/mesa/drivers/dri/intel/intel_fbo.c     |    2 +-
>  src/mesa/drivers/dri/nouveau/nouveau_fbo.c |    2 +-
>  src/mesa/drivers/dri/radeon/radeon_fbo.c   |    2 +-
>  src/mesa/drivers/dri/swrast/swrast.c       |    2 +-
>  src/mesa/main/renderbuffer.c               |    6 +++++-
>  src/mesa/state_tracker/st_cb_fbo.c         |    2 +-
>  src/mesa/swrast/s_renderbuffer.c           |    2 +-
>  7 files changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c
> b/src/mesa/drivers/dri/intel/intel_fbo.c
> index ad78e0a..c522b48 100644
> --- a/src/mesa/drivers/dri/intel/intel_fbo.c
> +++ b/src/mesa/drivers/dri/intel/intel_fbo.c
> @@ -95,7 +95,7 @@ intel_delete_renderbuffer(struct gl_renderbuffer
> *rb)
>  
>     intel_miptree_release(&irb->mt);
>  
> -   free(irb);
> +   _mesa_delete_renderbuffer(rb);
>  }
>  
>  /**
> diff --git a/src/mesa/drivers/dri/nouveau/nouveau_fbo.c
> b/src/mesa/drivers/dri/nouveau/nouveau_fbo.c
> index 50eb182..3be958b 100644
> --- a/src/mesa/drivers/dri/nouveau/nouveau_fbo.c
> +++ b/src/mesa/drivers/dri/nouveau/nouveau_fbo.c
> @@ -107,7 +107,7 @@ nouveau_renderbuffer_del(struct gl_renderbuffer
> *rb)
>  	struct nouveau_surface *s = &to_nouveau_renderbuffer(rb)->surface;
>  
>  	nouveau_surface_ref(NULL, s);
> -	FREE(rb);
> +	_mesa_delete_renderbuffer(rb);
>  }
>  
>  static struct gl_renderbuffer *
> diff --git a/src/mesa/drivers/dri/radeon/radeon_fbo.c
> b/src/mesa/drivers/dri/radeon/radeon_fbo.c
> index 9032a32..2267a10 100644
> --- a/src/mesa/drivers/dri/radeon/radeon_fbo.c
> +++ b/src/mesa/drivers/dri/radeon/radeon_fbo.c
> @@ -67,7 +67,7 @@ radeon_delete_renderbuffer(struct gl_renderbuffer
> *rb)
>    if (rrb && rrb->bo) {
>      radeon_bo_unref(rrb->bo);
>    }
> -  free(rrb);
> +  _mesa_delete_renderbuffer(rb);
>  }
>  
>  #if defined(RADEON_R100)
> diff --git a/src/mesa/drivers/dri/swrast/swrast.c
> b/src/mesa/drivers/dri/swrast/swrast.c
> index 9aed2f6e..f0ff0b0 100644
> --- a/src/mesa/drivers/dri/swrast/swrast.c
> +++ b/src/mesa/drivers/dri/swrast/swrast.c
> @@ -268,7 +268,7 @@ swrast_delete_renderbuffer(struct gl_renderbuffer
> *rb)
>      TRACE;
>  
>      free(xrb->Base.Buffer);
> -    free(xrb);
> +    _mesa_delete_renderbuffer(rb);
>  }
>  
>  /* see bytes_per_line in libGL */
> diff --git a/src/mesa/main/renderbuffer.c
> b/src/mesa/main/renderbuffer.c
> index 1bb09bf..26f53d1 100644
> --- a/src/mesa/main/renderbuffer.c
> +++ b/src/mesa/main/renderbuffer.c
> @@ -75,11 +75,15 @@ _mesa_new_renderbuffer(struct gl_context *ctx,
> GLuint name)
>  /**
>   * Delete a gl_framebuffer.
>   * 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
>  _mesa_delete_renderbuffer(struct gl_renderbuffer *rb)
>  {
> -   /* no-op */
> +   _glthread_DESTROY_MUTEX(rb->Mutex);
> +   free(rb);
>  }
>  
>  
> diff --git a/src/mesa/state_tracker/st_cb_fbo.c
> b/src/mesa/state_tracker/st_cb_fbo.c
> index 40e3677..01aba8e 100644
> --- a/src/mesa/state_tracker/st_cb_fbo.c
> +++ b/src/mesa/state_tracker/st_cb_fbo.c
> @@ -232,7 +232,7 @@ st_renderbuffer_delete(struct gl_renderbuffer
> *rb)
>     pipe_surface_reference(&strb->surface, NULL);
>     pipe_resource_reference(&strb->texture, NULL);
>     free(strb->data);
> -   free(strb);
> +   _mesa_delete_renderbuffer(rb);
>  }
>  
>  
> diff --git a/src/mesa/swrast/s_renderbuffer.c
> b/src/mesa/swrast/s_renderbuffer.c
> index d8a7467..e468bdb 100644
> --- a/src/mesa/swrast/s_renderbuffer.c
> +++ b/src/mesa/swrast/s_renderbuffer.c
> @@ -174,7 +174,7 @@ soft_renderbuffer_delete(struct gl_renderbuffer
> *rb)
>        free(srb->Buffer);
>        srb->Buffer = NULL;
>     }
> -   free(srb);
> +   _mesa_delete_renderbuffer(rb);
>  }
>  
>  
> --
> 1.7.3.4
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 


More information about the mesa-dev mailing list