summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorSam Lantinga <slouken@libsdl.org>2020-12-09 06:42:31 -0800
committerSam Lantinga <slouken@libsdl.org>2020-12-09 06:42:31 -0800
commitb79cdaf8a7a1629ca12480a3f570cc4e0bedd619 (patch)
treec2540514d428930cade80b8992b1882aaab045c0 /src/render
parent5de8d11461a4974159db53da18da87ca2a30c6fc (diff)
downloadsdl-b79cdaf8a7a1629ca12480a3f570cc4e0bedd619.tar.gz
Fixed bug 5291 - SDL_SetRenderTarget unnecessarily changes target when current target is the native texture of the passed in texture
Diffstat (limited to 'src/render')
-rw-r--r--src/render/SDL_render.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c
index 71604bc4a..c9b195a4e 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) {