From: Marek Olšák Date: Thu, 23 Feb 2012 21:45:45 +0000 (+0100) Subject: r600g: release query buffers in destroy_query X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=eabcecc26baf225dc50f1d400a80ea4c78831390;p=mesa.git r600g: release query buffers in destroy_query This fixes a memory leak introduced with the rework. Reviewed-by: Alex Deucher Reviewed-by: Christian König --- diff --git a/src/gallium/drivers/r600/r600_query.c b/src/gallium/drivers/r600/r600_query.c index a896f03b0d8..25731c290f6 100644 --- a/src/gallium/drivers/r600/r600_query.c +++ b/src/gallium/drivers/r600/r600_query.c @@ -264,6 +264,15 @@ static struct pipe_query *r600_create_query(struct pipe_context *ctx, unsigned q static void r600_destroy_query(struct pipe_context *ctx, struct pipe_query *query) { struct r600_query *rquery = (struct r600_query*)query; + struct r600_query_buffer *prev = rquery->buffer.previous; + + /* Release all query buffers. */ + while (prev) { + struct r600_query_buffer *qbuf = prev; + prev = prev->previous; + pipe_resource_reference((struct pipe_resource**)&qbuf->buf, NULL); + FREE(qbuf); + } pipe_resource_reference((struct pipe_resource**)&rquery->buffer.buf, NULL); FREE(query);