diff options
author | José Fonseca <[email protected]> | 2010-11-03 20:22:28 +0000 |
---|---|---|
committer | José Fonseca <[email protected]> | 2010-11-03 20:25:13 +0000 |
commit | 01b39b053b0cb6c7493b560b26734f3c4fa52efa (patch) | |
tree | 666a07d4d1ec92deed37ea51050184fc9dfb1668 /src/gallium/drivers/r600/r600_pipe.c | |
parent | b29ca2a561621425991727f8dc2145ae21f0f3b2 (diff) |
r600g: Swap the util_blitter_destroy call order.
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.
Diffstat (limited to 'src/gallium/drivers/r600/r600_pipe.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_pipe.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 55370f06fd8..128c998b931 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -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); |