Browse Source

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

Sam Lantinga 4 years ago
parent
commit
88cb4962cd
1 changed files with 7 additions and 6 deletions
  1. 7 6
      src/render/SDL_render.c

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