Skip to content

Commit

Permalink
render: Fix internal state getting out of sync when destroying a text…
Browse files Browse the repository at this point in the history
…ure that was just rendered and then creating a new one, in the GL and GLES2 backends. Fixes bug #4433.
  • Loading branch information
slime73 committed Dec 22, 2018
1 parent 0a70590 commit dc34436
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/render/opengl/SDL_render_gl.c
Expand Up @@ -1388,6 +1388,13 @@ GL_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture)

GL_ActivateRenderer(renderer);

if (renderdata->drawstate.texture == texture) {
renderdata->drawstate.texture = NULL;
}
if (renderdata->drawstate.target == texture) {
renderdata->drawstate.target = NULL;
}

if (!data) {
return;
}
Expand Down
7 changes: 7 additions & 0 deletions src/render/opengles2/SDL_render_gles2.c
Expand Up @@ -1766,6 +1766,13 @@ GLES2_DestroyTexture(SDL_Renderer *renderer, SDL_Texture *texture)

GLES2_ActivateRenderer(renderer);

if (data->drawstate.texture == texture) {
data->drawstate.texture = NULL;
}
if (data->drawstate.target == texture) {
data->drawstate.target = NULL;
}

/* Destroy the texture */
if (tdata) {
data->glDeleteTextures(1, &tdata->texture);
Expand Down

0 comments on commit dc34436

Please sign in to comment.