Presenting while drawing to a render target should fail.

People are adding present calls while rendering to render targets, not understanding that this doesn't make sense, and wondering why they get flicker on some systems. If there are programs that relied on the previous behavior we can add a hint to control this.

Fixes https://github.com/libsdl-org/SDL/issues/12432
This commit is contained in:
Sam Lantinga
2025-03-04 08:46:13 -08:00
parent debbe1cf75
commit 5d20bbf348
2 changed files with 3 additions and 9 deletions

View File

@@ -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);