Post copied from github for visibility.
Detailed steps on how to reproduce the bug
With the new Direct2D renderer for Windows in JUCE 8 (tested with 8.0.2), we are seeing undesirable graphical issues with standalone apps when moving the window around.
The whole GUI seems to repaint from scratch on V-Blank when moving the window this way (which doesn’t happen with an OpenGL context). This works okay so long as GUI is fast to render, but for complicated GUIs this can cause jittery movement at best, or the GUI to flash stroboscopically at worse. The latter in particular seems to occur if anything within the GUI is repainting on a timer, be that a visualisation or a meter of some kind.
https://github.com/user-attachments/assets/94f86e74-0375-468f-9be1-d91bb11c1503
This behaviour can be seen to some extent in the DemoRunner, and the Projucer feels laggy to move around as well but does not flash (presumably as nothing is repainting itself between VBlanks). To make the flashing more obvious, it helps to go to the Settings tab and back to the demo before moving the window.
This behaviour is worse in debug builds (as expected), though can be seen in release builds.
Plugin GUIs do not seem to suffer from the same issue, presumably because their window handles are managed differently by their hosts. Using a different renderer (software or OpenGL) also does not exhibit the same problem.
Obviously, we cannot move to JUCE 8 until this is resolved.
System specs used for the videos above (though all systems we’ve tried exhibit the same issue depending on performance):
Windows 11,
Intel Core i7 13700k,
Integrated Intel UHD graphics,
32GB RAM
Display: 3840x2160 at 150% scaling factor
What is the expected behaviour?
The window should drag without fully repainting, or at least move without flashing as with the other rendering contexts (software, or with a global OpenGL context).
Operating systems
Windows
What versions of the operating systems?
Tested on Windows 11.
Architectures
x86_64
Plug-in formats (if applicable)
Standalone
Testing on the develop
branch
The bug is present on the develop
branch