summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/state_tracker/st_cb_program.c9
-rw-r--r--src/mesa/state_tracker/st_context.c6
2 files changed, 10 insertions, 5 deletions
diff --git a/src/mesa/state_tracker/st_cb_program.c b/src/mesa/state_tracker/st_cb_program.c
index 3154fc85aa4..f951a928ead 100644
--- a/src/mesa/state_tracker/st_cb_program.c
+++ b/src/mesa/state_tracker/st_cb_program.c
@@ -89,8 +89,12 @@ static void st_use_program( GLcontext *ctx,
+/**
+ * Called via ctx->Driver.NewProgram() to allocate a new vertex or
+ * fragment program.
+ */
static struct gl_program *st_new_program( GLcontext *ctx,
- GLenum target,
+ GLenum target,
GLuint id )
{
switch (target) {
@@ -118,7 +122,8 @@ static struct gl_program *st_new_program( GLcontext *ctx,
}
default:
- return _mesa_new_program(ctx, target, id);
+ assert(0);
+ return NULL;
}
}
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index b407fd884bc..4081722bc71 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -158,9 +158,6 @@ static void st_destroy_context_priv( struct st_context *st )
{
uint i;
- st_reference_fragprog(st, &st->fp, NULL);
- st_reference_vertprog(st, &st->vp, NULL);
-
draw_destroy(st->draw);
st_destroy_atoms( st );
st_destroy_draw( st );
@@ -195,6 +192,9 @@ void st_destroy_context( struct st_context *st )
/* need to unbind and destroy CSO objects before anything else */
cso_release_all(st->cso_context);
+ st_reference_fragprog(st, &st->fp, NULL);
+ st_reference_vertprog(st, &st->vp, NULL);
+
_mesa_delete_program_cache(st->ctx, st->pixel_xfer.cache);
_mesa_free_context_data(ctx);