From 6656864135411d379c06e071c5a5e73b4e4baea5 Mon Sep 17 00:00:00 2001 From: Brian Date: Thu, 27 Dec 2007 19:18:12 -0700 Subject: [PATCH] fix leak, fix refcount error --- src/mesa/pipe/softpipe/sp_tile_cache.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/mesa/pipe/softpipe/sp_tile_cache.c b/src/mesa/pipe/softpipe/sp_tile_cache.c index ba1f71b..1dbcc5a 100644 --- a/src/mesa/pipe/softpipe/sp_tile_cache.c +++ b/src/mesa/pipe/softpipe/sp_tile_cache.c @@ -126,9 +126,17 @@ void sp_destroy_tile_cache(struct softpipe_tile_cache *tc) { uint pos; + for (pos = 0; pos < NUM_ENTRIES; pos++) { - assert(tc->entries[pos].x < 0); + //assert(tc->entries[pos].x < 0); + } + if (tc->surface) { + pipe_surface_reference(&tc->surface, NULL); + } + if (tc->tex_surf) { + pipe_surface_reference(&tc->tex_surf, NULL); } + FREE( tc ); } @@ -466,15 +474,12 @@ sp_get_cached_tile_tex(struct pipe_context *pipe, tc->tex_level != level || tc->tex_z != z) { /* get new surface (view into texture) */ - struct pipe_surface *ps; if (tc->tex_surf && tc->tex_surf->map) pipe_surface_unmap(tc->tex_surf); - ps = pipe->get_tex_surface(pipe, tc->texture, face, level, z); - pipe_surface_reference(&tc->tex_surf, ps); - - pipe_surface_map(ps); + tc->tex_surf = pipe->get_tex_surface(pipe, tc->texture, face, level, z); + pipe_surface_map(tc->tex_surf); tc->tex_face = face; tc->tex_level = level; -- 2.7.4