[BUG] [FIXED in develop] JUCE 8 Direct2D standalone app repaint flashing

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

1 Like
1 Like