diff options
author | Sam Lantinga <slouken@libsdl.org> | 2020-12-09 06:42:31 -0800 |
---|---|---|
committer | Sam Lantinga <slouken@libsdl.org> | 2020-12-09 06:42:31 -0800 |
commit | b79cdaf8a7a1629ca12480a3f570cc4e0bedd619 (patch) | |
tree | c2540514d428930cade80b8992b1882aaab045c0 /src/render | |
parent | 5de8d11461a4974159db53da18da87ca2a30c6fc (diff) | |
download | sdl-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.c | 13 |
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) { |