gallium: Always unreference bitmap cache texture before resetting the cache.
authorMichel Dänzer <michel@tungstengraphics.com>
Tue, 27 May 2008 16:00:59 +0000 (17:00 +0100)
committerMichel Dänzer <michel@tungstengraphics.com>
Tue, 27 May 2008 16:00:59 +0000 (17:00 +0100)
Fixes assertion failure with tunnel2 demo.

src/mesa/state_tracker/st_cb_bitmap.c

index 3a102df67f1f1541bd22d91ff11f6e151c7839db..593938f8cf53ae9ab46ca2f68d4e4a10420b1feb 100644 (file)
@@ -567,8 +567,9 @@ void
 st_flush_bitmap_cache(struct st_context *st)
 {
    if (!st->bitmap.cache->empty) {
+      struct bitmap_cache *cache = st->bitmap.cache;
+
       if (st->ctx->DrawBuffer) {
-         struct bitmap_cache *cache = st->bitmap.cache;
          struct pipe_context *pipe = st->pipe;
          struct pipe_screen *screen = pipe->screen;
 
@@ -592,10 +593,11 @@ st_flush_bitmap_cache(struct st_context *st)
                           st->ctx->Current.RasterPos[2],
                           BITMAP_CACHE_WIDTH, BITMAP_CACHE_HEIGHT,
                           cache->texture);
-
-         /* release/free the texture */
-         pipe_texture_reference(&cache->texture, NULL);
       }
+
+      /* release/free the texture */
+      pipe_texture_reference(&cache->texture, NULL);
+
       reset_cache(st);
    }
 }