From 8f4c5e15f1f6d3a0886f2be78e8555f42fa7e455 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Thu, 20 Feb 2025 08:49:47 -0800
Subject: [PATCH] Finish any drawing when destroying a software renderer
Fixes the SDL3 version of https://github.com/libsdl-org/sdl2-compat/issues/373
---
src/render/SDL_render.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c
index 33cc29fa5f950..47470d1cfff64 100644
--- a/src/render/SDL_render.c
+++ b/src/render/SDL_render.c
@@ -5214,7 +5214,12 @@ void SDL_DestroyRendererWithoutFreeing(SDL_Renderer *renderer)
SDL_RemoveWindowRenderer(renderer->window, renderer);
}
- SDL_DiscardAllCommands(renderer);
+ if (renderer->software) {
+ // Make sure all drawing to a surface is complete
+ FlushRenderCommands(renderer);
+ } else {
+ SDL_DiscardAllCommands(renderer);
+ }
if (renderer->debug_char_texture_atlas) {
SDL_DestroyTexture(renderer->debug_char_texture_atlas);