Przeglądaj źródła

Backends: SDL_Renderer: use SDL_RenderIsClipEnabled() to pass NULL to SDL_RenderSetClipRect (#3926, #4582, #4633)

ocornut 4 lat temu
rodzic
commit
dde31030e9
1 zmienionych plików z 3 dodań i 1 usunięć
  1. 3 1
      backends/imgui_impl_sdlrenderer.cpp

+ 3 - 1
backends/imgui_impl_sdlrenderer.cpp

@@ -120,9 +120,11 @@ void ImGui_ImplSDLRenderer_RenderDrawData(ImDrawData* draw_data)
     struct BackupSDLRendererState
     {
         SDL_Rect    Viewport;
+        bool        ClipEnabled;
         SDL_Rect    ClipRect;
     };
     BackupSDLRendererState old = {};
+    old.ClipEnabled = SDL_RenderIsClipEnabled(bd->SDLRenderer);
     SDL_RenderGetViewport(bd->SDLRenderer, &old.Viewport);
     SDL_RenderGetClipRect(bd->SDLRenderer, &old.ClipRect);
 
@@ -183,7 +185,7 @@ void ImGui_ImplSDLRenderer_RenderDrawData(ImDrawData* draw_data)
 
     // Restore modified SDL_Renderer state
     SDL_RenderSetViewport(bd->SDLRenderer, &old.Viewport);
-    SDL_RenderSetClipRect(bd->SDLRenderer, &old.ClipRect);
+    SDL_RenderSetClipRect(bd->SDLRenderer, old.ClipEnabled ? &old.ClipRect : NULL);
 }
 
 // Called by Init/NewFrame/Shutdown