Fixed bug 5291 - SDL_SetRenderTarget unnecessarily changes target when current target is the native texture of the passed in texture

This commit is contained in:
Sam Lantinga 2020-12-09 06:42:31 -08:00
parent f2fff21762
commit 88cb4962cd

View File

@ -1879,12 +1879,6 @@ SDL_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture)
if (!SDL_RenderTargetSupported(renderer)) {
return SDL_Unsupported();
}
if (texture == renderer->target) {
/* Nothing to do! */
return 0;
}
FlushRenderCommands(renderer); /* time to send everything to the GPU! */
/* texture == NULL is valid and means reset the target to the window */
if (texture) {
@ -1901,6 +1895,13 @@ SDL_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture)
}
}
if (texture == renderer->target) {
/* Nothing to do! */
return 0;
}
FlushRenderCommands(renderer); /* time to send everything to the GPU! */
SDL_LockMutex(renderer->target_mutex);
if (texture && !renderer->target) {