From 5ddb7c3d0af7e20e08b010ae9aa0d23d73d3879e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Mon, 2 Mar 2015 14:50:55 +1000 Subject: [PATCH] renderer: split destroy program out from free programs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Split out from Marc-André's larger patchset. --- src/vrend_renderer.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c index 7122a22..e7cc3ef 100644 --- a/src/vrend_renderer.c +++ b/src/vrend_renderer.c @@ -855,28 +855,32 @@ static struct vrend_linked_shader_program *lookup_shader_program(struct vrend_co return 0; } +static void vrend_destroy_program(struct vrend_linked_shader_program *ent) +{ + int i; + glDeleteProgram(ent->id); + list_del(&ent->head); + + for (i = PIPE_SHADER_VERTEX; i <= PIPE_SHADER_GEOMETRY; i++) { + free(ent->shadow_samp_mask_locs[i]); + free(ent->shadow_samp_add_locs[i]); + free(ent->samp_locs[i]); + free(ent->const_locs[i]); + free(ent->ubo_locs[i]); + } + free(ent->attrib_locs); + free(ent); +} + static void vrend_free_programs(struct vrend_sub_context *sub) { struct vrend_linked_shader_program *ent, *tmp; - int i; + if (LIST_IS_EMPTY(&sub->programs)) return; LIST_FOR_EACH_ENTRY_SAFE(ent, tmp, &sub->programs, head) { - glDeleteProgram(ent->id); - list_del(&ent->head); - - for (i = PIPE_SHADER_VERTEX; i <= PIPE_SHADER_GEOMETRY; i++) { -// vrend_shader_state_reference(&ent->ss[i], NULL); - free(ent->shadow_samp_mask_locs[i]); - free(ent->shadow_samp_add_locs[i]); - free(ent->samp_locs[i]); - free(ent->const_locs[i]); - free(ent->ubo_locs[i]); - - } - free(ent->attrib_locs); - free(ent); + vrend_destroy_program(ent); } }