From d77dae186de4dbf9cf13be0cfe62c78b2d3ddaeb Mon Sep 17 00:00:00 2001 From: ed Date: Tue, 17 Mar 2020 15:59:10 +0000 Subject: [PATCH] Windows: Fixed an OpenGL scale issue in high-DPI plug-ins --- modules/juce_opengl/opengl/juce_OpenGLContext.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/juce_opengl/opengl/juce_OpenGLContext.cpp b/modules/juce_opengl/opengl/juce_OpenGLContext.cpp index 5e60c6d8d9..de094a58f3 100644 --- a/modules/juce_opengl/opengl/juce_OpenGLContext.cpp +++ b/modules/juce_opengl/opengl/juce_OpenGLContext.cpp @@ -296,15 +296,17 @@ public: { if (auto* peer = component.getPeer()) { + auto localBounds = component.getLocalBounds(); + auto displayScale = Desktop::getInstance().getDisplays().findDisplayForRect (component.getTopLevelComponent()->getScreenBounds()).scale; + + auto newArea = peer->getComponent().getLocalArea (&component, localBounds).withZeroOrigin() * displayScale; + #if JUCE_WINDOWS && JUCE_WIN_PER_MONITOR_DPI_AWARE auto newScale = getScaleFactorForWindow (nativeContext->getNativeHandle()); #else - auto newScale = Desktop::getInstance().getDisplays().findDisplayForRect (component.getTopLevelComponent()->getScreenBounds()).scale; + auto newScale = displayScale; #endif - auto localBounds = component.getLocalBounds(); - auto newArea = peer->getComponent().getLocalArea (&component, localBounds).withZeroOrigin() * newScale; - if (scale != newScale || viewportArea != newArea) { scale = newScale;