Browse Source

NSViewComponentPeer: Fix occasional rendering artefacts

When clearing deferredRepaints in drawRect, dirty regions in the 'next'
frame could be incorrectly removed while drawing the 'current' frame.
Now, deferredRepaints is cleared in setNeedsDisplayRectangles, as it
was before 9d50ab6c59.
v7.0.9
reuk 2 years ago
parent
commit
70d99d1cc4
No known key found for this signature in database GPG Key ID: FCB43929F012EE5C
1 changed files with 5 additions and 2 deletions
  1. +5
    -2
      modules/juce_gui_basics/native/juce_NSViewComponentPeer_mac.mm

+ 5
- 2
modules/juce_gui_basics/native/juce_NSViewComponentPeer_mac.mm View File

@@ -951,8 +951,6 @@ public:
if (r.size.width < 1.0f || r.size.height < 1.0f)
return;
deferredRepaints.subtract ({ convertToRectFloat (r) });
auto cg = []
{
if (@available (macOS 10.10, *))
@@ -1114,6 +1112,11 @@ public:
[view setNeedsDisplayInRect: makeNSRect (i)];
lastRepaintTime = Time::getMillisecondCounter();
#if JUCE_COREGRAPHICS_RENDER_WITH_MULTIPLE_PAINT_CALLS
if (metalRenderer == nullptr)
#endif
deferredRepaints.clear();
}
void performAnyPendingRepaintsNow() override


Loading…
Cancel
Save