Parcourir la source

Finish any drawing when destroying a software renderer

Fixes the SDL3 version of https://github.com/libsdl-org/sdl2-compat/issues/373
Sam Lantinga il y a 1 mois
Parent
commit
8f4c5e15f1
1 fichiers modifiés avec 6 ajouts et 1 suppressions
  1. 6 1
      src/render/SDL_render.c

+ 6 - 1
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);