summaryrefslogtreecommitdiff
path: root/render_sdl.c
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2018-06-28 09:27:05 -0700
committerMichael Pavone <pavone@retrodev.com>2018-06-28 09:27:05 -0700
commit5f1a3e5c10bd84d5049b1a8a56c5aace468761cb (patch)
tree324045c83ac9f6d1475be867ee7b0dba642290c9 /render_sdl.c
parente1d177b8429e4eb59f5a6e853009dbf97ab95068 (diff)
Fix a number of other memory errors (mostly leaks again) identified by valgrind
Diffstat (limited to 'render_sdl.c')
-rwxr-xr-xrender_sdl.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/render_sdl.c b/render_sdl.c
index d743de2..3296581 100755
--- a/render_sdl.c
+++ b/render_sdl.c
@@ -541,6 +541,15 @@ static void gl_setup()
un_height = glGetUniformLocation(program, "height");
at_pos = glGetAttribLocation(program, "pos");
}
+
+static void gl_teardown()
+{
+ glDeleteProgram(program);
+ glDeleteShader(vshader);
+ glDeleteShader(fshader);
+ glDeleteBuffers(2, buffers);
+ glDeleteTextures(3, textures);
+}
#endif
static uint8_t texture_init;
@@ -588,6 +597,12 @@ static void render_quit()
{
render_close_audio();
free_surfaces();
+#ifndef DISABLE_OPENGL
+ if (render_gl) {
+ gl_teardown();
+ SDL_GL_DeleteContext(main_context);
+ }
+#endif
}
static float config_aspect()
@@ -866,6 +881,7 @@ static int32_t handle_event(SDL_Event *event)
if (on_context_destroyed) {
on_context_destroyed();
}
+ gl_teardown();
SDL_GL_DeleteContext(main_context);
main_context = SDL_GL_CreateContext(main_window);
gl_setup();
@@ -1148,6 +1164,7 @@ void render_config_updated(void)
if (on_context_destroyed) {
on_context_destroyed();
}
+ gl_teardown();
SDL_GL_DeleteContext(main_context);
} else {
#endif