Finish any drawing when destroying a software renderer

Fixes the SDL3 version of https://github.com/libsdl-org/sdl2-compat/issues/373
This commit is contained in:
Sam Lantinga 2025-02-20 08:49:47 -08:00
parent 1a853973ab
commit 8f4c5e15f1

View file

@ -5214,7 +5214,12 @@ void SDL_DestroyRendererWithoutFreeing(SDL_Renderer *renderer)
SDL_RemoveWindowRenderer(renderer->window, 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) { if (renderer->debug_char_texture_atlas) {
SDL_DestroyTexture(renderer->debug_char_texture_atlas); SDL_DestroyTexture(renderer->debug_char_texture_atlas);