From 5b2f9d4019e5ff0ebc5977576f20225701c39345 Mon Sep 17 00:00:00 2001 From: reuk Date: Thu, 9 May 2024 16:12:44 +0100 Subject: [PATCH] GraphicsContext: Avoid attempting to paint empty rectangles in all renderers --- .../juce_graphics/native/juce_CoreGraphicsContext_mac.mm | 3 +++ .../native/juce_Direct2DGraphicsContext_windows.cpp | 6 ++++++ modules/juce_graphics/native/juce_RenderingHelpers.h | 6 ++++++ 3 files changed, 15 insertions(+) diff --git a/modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm b/modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm index d9fb5e90ec..873458c78f 100644 --- a/modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm +++ b/modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm @@ -524,6 +524,9 @@ void CoreGraphicsContext::fillRect (const Rectangle& r) void CoreGraphicsContext::fillCGRect (const CGRect& cgRect, bool replaceExistingContents) { + if (CGRectIsEmpty (cgRect)) + return; + if (replaceExistingContents) { CGContextSetBlendMode (context.get(), kCGBlendModeCopy); diff --git a/modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp b/modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp index ed27321201..0fce545030 100644 --- a/modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp +++ b/modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp @@ -1167,6 +1167,9 @@ void Direct2DGraphicsContext::setInterpolationQuality (Graphics::ResamplingQuali void Direct2DGraphicsContext::fillRect (const Rectangle& r, bool replaceExistingContents) { + if (r.isEmpty()) + return; + if (replaceExistingContents) clipToRectangle (r); @@ -1187,6 +1190,9 @@ void Direct2DGraphicsContext::fillRect (const Rectangle& r, bool replaceExi void Direct2DGraphicsContext::fillRect (const Rectangle& r) { + if (r.isEmpty()) + return; + auto fill = [] (Rectangle rect, ComSmartPtr deviceContext, ComSmartPtr brush) { if (brush != nullptr) diff --git a/modules/juce_graphics/native/juce_RenderingHelpers.h b/modules/juce_graphics/native/juce_RenderingHelpers.h index 5fdf236803..a38c53934a 100644 --- a/modules/juce_graphics/native/juce_RenderingHelpers.h +++ b/modules/juce_graphics/native/juce_RenderingHelpers.h @@ -2180,6 +2180,9 @@ public: void fillRect (Rectangle r, bool replaceContents) { + if (r.isEmpty()) + return; + if (clip != nullptr) { if (transform.isOnlyTranslated) @@ -2201,6 +2204,9 @@ public: void fillRect (Rectangle r) { + if (r.isEmpty()) + return; + if (clip != nullptr) { if (transform.isOnlyTranslated)