summaryrefslogtreecommitdiffstats
path: root/ui/shader.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui/shader.c')
-rw-r--r--ui/shader.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/ui/shader.c b/ui/shader.c
index e8b8d321b7..ab448c41d4 100644
--- a/ui/shader.c
+++ b/ui/shader.c
@@ -130,15 +130,17 @@ static GLuint qemu_gl_create_link_program(GLuint vert, GLuint frag)
static GLuint qemu_gl_create_compile_link_program(const GLchar *vert_src,
const GLchar *frag_src)
{
- GLuint vert_shader, frag_shader, program;
+ GLuint vert_shader, frag_shader, program = 0;
vert_shader = qemu_gl_create_compile_shader(GL_VERTEX_SHADER, vert_src);
frag_shader = qemu_gl_create_compile_shader(GL_FRAGMENT_SHADER, frag_src);
if (!vert_shader || !frag_shader) {
- return 0;
+ goto end;
}
program = qemu_gl_create_link_program(vert_shader, frag_shader);
+
+end:
glDeleteShader(vert_shader);
glDeleteShader(frag_shader);
@@ -170,5 +172,8 @@ void qemu_gl_fini_shader(QemuGLShader *gls)
if (!gls) {
return;
}
+ glDeleteProgram(gls->texture_blit_prog);
+ glDeleteProgram(gls->texture_blit_flip_prog);
+ glDeleteProgram(gls->texture_blit_vao);
g_free(gls);
}