diff options
author | Michael Pavone <pavone@retrodev.com> | 2018-06-28 09:27:05 -0700 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2018-06-28 09:27:05 -0700 |
commit | 5f1a3e5c10bd84d5049b1a8a56c5aace468761cb (patch) | |
tree | 324045c83ac9f6d1475be867ee7b0dba642290c9 /render_sdl.c | |
parent | e1d177b8429e4eb59f5a6e853009dbf97ab95068 (diff) |
Fix a number of other memory errors (mostly leaks again) identified by valgrind
Diffstat (limited to 'render_sdl.c')
-rwxr-xr-x | render_sdl.c | 17 |
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 |