1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Windows: Make OpenGLContext::getRenderingScale() insensitive to Component transforms

This makes it consistent between Windows and MacOS. This is restoring
the behaviour prior to 7e404118b5.
This commit is contained in:
attila 2023-10-26 15:48:00 +02:00 committed by Attila Szarvas
parent 17d81f9c1d
commit c456f67c3f

View file

@ -459,17 +459,17 @@ public:
const auto localBounds = component.getLocalBounds();
const auto newArea = peer->getComponent().getLocalArea (&component, localBounds).withZeroOrigin() * displayScale;
#if JUCE_WINDOWS && JUCE_WIN_PER_MONITOR_DPI_AWARE
// Some hosts (Pro Tools 2022.7) do not take the current DPI into account when sizing
// plugin editor windows. Instead of querying the OS for the DPI of the editor window,
// we approximate based on the physical size of the window that was actually provided
// for the context to draw into. This may break if the OpenGL context's component is
// scaled differently in its width and height - but in this case, a single scale factor
// isn't that helpful anyway.
const auto newScale = (float) newArea.getWidth() / (float) localBounds.getWidth();
#else
const auto newScale = (float) displayScale;
#endif
const auto newScale = [&]
{
#if JUCE_WINDOWS && JUCE_WIN_PER_MONITOR_DPI_AWARE
// Some hosts (Pro Tools 2022.7) do not take the window scaling into account when sizing
// plugin editor windows. The displayScale however seems to be correctly reported even in
// such cases.
return (float) displayScale * Desktop::getInstance().getGlobalScaleFactor();
#else
return (float) displayScale;
#endif
}();
areaAndScale.set ({ newArea, newScale }, [&]
{