diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index fc3a9d31fcb872b391a72f67d03bf28bc27750b7..46f6933f028f20f2c754dd1ecd43f29a618410c9 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -190,24 +190,34 @@ static void GLES2_DestroyRenderer(SDL_Renderer *renderer) { GLES2_DriverContext *rdata = (GLES2_DriverContext *)renderer->driverdata; - GLES2_ProgramCacheEntry *entry; - GLES2_ProgramCacheEntry *next; /* Deallocate everything */ if (rdata) { GLES2_ActivateRenderer(renderer); - entry = rdata->program_cache.head; - while (entry) { - glDeleteShader(entry->vertex_shader->id); - glDeleteShader(entry->fragment_shader->id); - SDL_free(entry->vertex_shader); - SDL_free(entry->fragment_shader); - glDeleteProgram(entry->id); - next = entry->next; - SDL_free(entry); - entry = next; - } + { + GLES2_ShaderCacheEntry *entry; + GLES2_ShaderCacheEntry *next; + entry = rdata->shader_cache.head; + while (entry) + { + glDeleteShader(entry->id); + next = entry->next; + SDL_free(entry); + entry = next; + } + } + { + GLES2_ProgramCacheEntry *entry; + GLES2_ProgramCacheEntry *next; + entry = rdata->program_cache.head; + while (entry) { + glDeleteProgram(entry->id); + next = entry->next; + SDL_free(entry); + entry = next; + } + } if (rdata->context) { SDL_GL_DeleteContext(rdata->context); }