From eabcecc26baf225dc50f1d400a80ea4c78831390 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 23 Feb 2012 22:45:45 +0100 Subject: [PATCH] r600g: release query buffers in destroy_query MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This fixes a memory leak introduced with the rework. Reviewed-by: Alex Deucher Reviewed-by: Christian König --- src/gallium/drivers/r600/r600_query.c | 9 +++++++++ 1 file changed, 9 insertions(+) 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); -- 2.30.2