diff --git a/include/SDL3/SDL_render.h b/include/SDL3/SDL_render.h index a830f3b2b9..432cacfc4d 100644 --- a/include/SDL3/SDL_render.h +++ b/include/SDL3/SDL_render.h @@ -2385,8 +2385,7 @@ extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_RenderReadPixels(SDL_Renderer *ren * should not be done; you are only required to change back the rendering * target to default via `SDL_SetRenderTarget(renderer, NULL)` afterwards, as * textures by themselves do not have a concept of backbuffers. Calling - * SDL_RenderPresent while rendering to a texture will still update the screen - * with any current drawing that has been done _to the window itself_. + * SDL_RenderPresent while rendering to a texture will fail. * * \param renderer the rendering context. * \returns true on success or false on failure; call SDL_GetError() for more diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c index 6958eeb6f7..5ab1bf7eb0 100644 --- a/src/render/SDL_render.c +++ b/src/render/SDL_render.c @@ -5276,9 +5276,8 @@ bool SDL_RenderPresent(SDL_Renderer *renderer) CHECK_RENDERER_MAGIC(renderer, false); - SDL_Texture *target = renderer->target; - if (target) { - SDL_SetRenderTarget(renderer, NULL); + if (renderer->target) { + return SDL_SetError("You can't present on a render target"); } SDL_RenderLogicalPresentation(renderer); @@ -5299,10 +5298,6 @@ bool SDL_RenderPresent(SDL_Renderer *renderer) presented = false; } - if (target) { - SDL_SetRenderTarget(renderer, target); - } - if (renderer->simulate_vsync || (!presented && renderer->wanted_vsync)) { SDL_SimulateRenderVSync(renderer);