Commit 88cb4962cda589c04f8046e81be35a565bd52e52

Sam Lantinga 2020-12-09T06:42:31

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) {