diff options
author | Brian <brian.paul@tungstengraphics.com> | 2007-12-26 07:16:12 -0700 |
---|---|---|
committer | Brian <brian.paul@tungstengraphics.com> | 2008-01-01 10:21:21 -0700 |
commit | 6128c938650f3937ba54dd7225d258d753e16ade (patch) | |
tree | 36711132b7a8d5aa03b9066ee6bad0ba06f8ce50 | |
parent | 1631a9513d32ddcc5467225ad25d0e7a154af895 (diff) |
unref const buffers during context destroy
-rw-r--r-- | src/mesa/state_tracker/st_context.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index 1d26da474e..668ac139f7 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -51,6 +51,7 @@ #include "st_extensions.h" #include "st_program.h" #include "pipe/p_context.h" +#include "pipe/p_winsys.h" #include "pipe/draw/draw_context.h" #include "pipe/cso_cache/cso_cache.h" @@ -136,6 +137,9 @@ struct st_context *st_create_context(struct pipe_context *pipe, static void st_destroy_context_priv( struct st_context *st ) { + struct pipe_winsys *ws = st->pipe->winsys; + uint i; + draw_destroy(st->draw); st_destroy_atoms( st ); st_destroy_draw( st ); @@ -146,6 +150,12 @@ static void st_destroy_context_priv( struct st_context *st ) _mesa_delete_program_cache(st->ctx, st->pixel_xfer.cache); + for (i = 0; i < Elements(st->state.constants); i++) { + if (st->state.constants[i].buffer) { + ws->buffer_reference(ws, &st->state.constants[i].buffer, NULL); + } + } + st->pipe->destroy( st->pipe ); free( st ); } |