For those who are not aware, juce plugin graphics on windows hosts may become blank and unresponsive. When one plugin becomes blank, all other juce instances are also (even from different vendors). In my case, the host is sawstudio. I was thinking it would be handy if an external program could instruct all loaded juce instances to repaint.
I wrote an autohotkey (although an exe or powershell would be better) to dllcall windows’ RedrawWindow function to the plugins, but now have found juce does not use that mechanism to repaint. Obviously this should be remedied within juce (which I’m not familiar with), but until then, being able to make the displays operational without having the disruption of shutting down and restarting my DAW would be an acceptable workaround.
Is there a utility that does this, or how would one go about doing it?
This issue is restricted to plugins built in JUCE - in my case TokyoDawn and Apulsoft. I use several other plugins (waves, fabfilter, etc…) that do not have this issue, and continue to display just fine when JUCE windows remain blank. I should mention these are all vst2. Also there are descriptions of similar issues on this forum on several different hosts.
Another symptom (or maybe suspicion) that I have seen is when a juce plugin is initially opened, its interface renders fine. Opening a second juce plugin, or instance (of the same one), greatly increases the likelihood of display failure.
One more thing, my objective in writing a utility (in addition to restoring my windows) is to help troubleshoot the problem. If I had found a way to restore functionality to the plugin displays or related to non-juce plugins, I would report it to sawstudio’s developer. AutoHotkey has a handy utility called windowspy, this reports the dll associated with a particular display window - since all of the failing displays are for juce plugins, I report it here.
I wanted to post a follow-up. I’m not absolutely positive this solves this issue as I haven’t done that much mixing since I applied these changes, but so-far applying these registry changes appears to work (notice that some of them were applied to the daw I use - which would be the process the plugins run under):
Windows Registry Editor Version 5.00
; 1. GLOBAL SYSTEM STABILITY (Applies to both 32/64-bit)
; Disables HAGS to prevent DPC Latency spikes and audio stutters
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers]
“HwSchMode”=dword:00000001
; Disables window animations to keep the GUI message thread responsive
[HKEY_CURRENT_USER\Control Panel\Desktop]
“UserPreferencesMask”=hex:90,12,03,80,10,00,00,00
“MinAnimate”=“0”
; Sets Visual Effects to “Best Performance”
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects]
“VisualFXSetting”=dword:00000002
; 2. DPI SCALING OVERRIDES (Fixes “Dark/Unresponsive” JUCE GUIs)
; Replace the paths below with your actual install locations
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
“C:\\SAWStudio\\SAWStudio.exe”=“~HIGHDPIAWARE”
“C:\\SAWStudio64\\SAWStudio64.exe”=“~HIGHDPIAWARE”
; 3. GPU PREFERENCES
; For 32-bit: Power Saving (1) is safer for legacy JUCE OpenGL
; For 64-bit: High Performance (2) is better for modern 4K plugins
[HKEY_CURRENT_USER\Software\Microsoft\DirectX\UserGpuPreferences]
“C:\\SAWStudio\\SAWStudio.exe”=“GpuPreference=1;”
“C:\\SAWStudio64\\SAWStudio64.exe”=“GpuPreference=2;”
…afterward, I had to:
Open Performance Options (sysdm.cpl > Advanced > Performance).
Manually check “Show window contents while dragging”.