Ver Fonte

Finish any drawing when destroying a software renderer

Fixes the SDL3 version of https://github.com/libsdl-org/sdl2-compat/issues/373
Sam Lantinga há 1 ano atrás
pai
commit
8f4c5e15f1
1 ficheiros alterados com 6 adições e 1 exclusões
  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_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);