r600g: Swap the util_blitter_destroy call order.
authorJosé Fonseca <jfonseca@vmware.com>
Wed, 3 Nov 2010 20:22:28 +0000 (20:22 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Wed, 3 Nov 2010 20:25:13 +0000 (20:25 +0000)
Trivial change that avoids a segmentation fault when the blitter state
happens to be bound when the context is destroyed.

The free calls should probably removed altogether in the future -- the
responsibility to destroy the state atoms lies with whoever created it,
and the safest thing for the pipe driver is to not touch any bound state
in its destructor.

src/gallium/drivers/r600/r600_pipe.c

index 55370f0..128c998 100644 (file)
@@ -80,12 +80,13 @@ static void r600_destroy_context(struct pipe_context *context)
        rctx->context.delete_depth_stencil_alpha_state(&rctx->context, rctx->custom_dsa_flush);
 
        r600_context_fini(&rctx->ctx);
+
+       util_blitter_destroy(rctx->blitter);
+
        for (int i = 0; i < R600_PIPE_NSTATES; i++) {
                free(rctx->states[i]);
        }
 
-       util_blitter_destroy(rctx->blitter);
-
        u_upload_destroy(rctx->upload_vb);
        u_upload_destroy(rctx->upload_ib);