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 55370f06fd82382cd4fad5ca766fe72ea3737eed..128c998b9319025f6ec82f992c773e91c21b7446 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);