Fixed bug 5291 - SDL_SetRenderTarget unnecessarily changes target when current target is the native texture of the passed in texture
diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c
index 71604bc..c9b195a 100644
--- a/src/render/SDL_render.c
+++ b/src/render/SDL_render.c
@@ -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) {