gallium: fix surface memleak in bitmap code
authorBrian Paul <brian.paul@tungstengraphics.com>
Thu, 3 Jul 2008 16:12:00 +0000 (10:12 -0600)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 3 Jul 2008 16:12:37 +0000 (10:12 -0600)
Found w/ tunnel2.c demo.

src/mesa/state_tracker/st_cb_bitmap.c

index f3bc3b85841afba1959aaffdb4d2ddf297cc0725..de86832342cff2228abdd5edfb8e2d6664cec06f 100644 (file)
@@ -541,6 +541,9 @@ reset_cache(struct st_context *st)
    cache->ymin = 1000000;
    cache->ymax = -1000000;
 
+   if (cache->surf)
+      screen->tex_surface_release(screen, &cache->surf);
+
    assert(!cache->texture);
 
    /* allocate a new texture */
@@ -588,6 +591,8 @@ st_flush_bitmap_cache(struct st_context *st)
           * So unmap and release the texture surface before drawing.
           */
          screen->surface_unmap(screen, cache->surf);
+         cache->buffer = NULL;
+
          screen->tex_surface_release(screen, &cache->surf);
 
          draw_bitmap_quad(st->ctx,