Different dirty region repaint behavior on similar machines

i get very different repaint behaviors on quite similar machines: both MacBook Pro M1.
i modified the WidgetsDemo of a vanilla JUCE checkout to flash one component in random colors when it is being repainted. on one machine the entire window with all its components is redrawn if one component is marked dirty. on the other machine – as expected – only components within the dirty region are repainted.
did anyone experience similar behavior? could i have changed a setting ages ago and have forgot about it?

  • Are the OS versions the same?
  • Are the displays the same, i.e. using the internal display in both cases?
  • Is the system display scaling setting the same on both machines?
  • Are you building the program separately on each machine? Do you get different results if you copy and run exactly the same binary on each machine (i.e. build on one machine and copy to the other)?

thanks for your fast reply!

  • OS versions differ only in minor release: 14.4.1 (on the machine with confined repaints) vs. 14.2.1 on the other. however i’m pretty sure the behavior was there before some updates
  • displays are the same
  • scaling is the same
  • i tried running the executable that does work fine on one machine on the broken one and it stays broken
    what’s more: when investigating with Quartz Debug it seems any JUCE application exhibits this. i’ve tried it now with PaulXStretch and DecentSampler

Yes, we’ve seen this as well. The whole window gets repainted for any repaint call.
Only happened on Jules’s machine though, not mine. Never got the the bottom of it.

Might related:

That doesn’t bode well!

1 Like

Yes, this does look similar, especially if the issue is only present on the 14.2 machine, and not on 14.4. The issue in the linked post was a macOS bug fixed in 14.3:

ah cool. would be great if it is just this. will update my machine next week and report back!

i can confirm that after updating to macOS 14.4.1 the problems seem to be fixed. thank you!

1 Like