diff --git a/src/frontend/qt_sdl/Screen.cpp b/src/frontend/qt_sdl/Screen.cpp index d8af6624..019ce246 100644 --- a/src/frontend/qt_sdl/Screen.cpp +++ b/src/frontend/qt_sdl/Screen.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #ifndef _WIN32 #ifndef APPLE #include @@ -596,23 +597,20 @@ void ScreenPanelGL::drawScreenGL() glContext->SwapBuffers(); } -qreal ScreenPanelGL::devicePixelRatioFromScreen() const +qreal ScreenPanelGL::devicePixelRatioFromWindow() const { - const QScreen* screen_for_ratio = window()->windowHandle()->screen(); - if (!screen_for_ratio) - screen_for_ratio = QGuiApplication::primaryScreen(); - - return screen_for_ratio ? screen_for_ratio->devicePixelRatio() : static_cast(1); + QWindow* window = windowHandle(); + return window->devicePixelRatio(); } int ScreenPanelGL::scaledWindowWidth() const { - return std::max(static_cast(std::ceil(static_cast(width()) * devicePixelRatioFromScreen())), 1); + return std::max(static_cast(std::ceil(static_cast(width()) * devicePixelRatioFromWindow())), 1); } int ScreenPanelGL::scaledWindowHeight() const { - return std::max(static_cast(std::ceil(static_cast(height()) * devicePixelRatioFromScreen())), 1); + return std::max(static_cast(std::ceil(static_cast(height()) * devicePixelRatioFromWindow())), 1); } std::optional ScreenPanelGL::getWindowInfo() @@ -644,6 +642,7 @@ std::optional ScreenPanelGL::getWindowInfo() wi.display_connection = pni->nativeResourceForWindow("display", handle); wi.window_handle = pni->nativeResourceForWindow("surface", handle); + qApp->processEvents(); } else { @@ -654,7 +653,7 @@ std::optional ScreenPanelGL::getWindowInfo() wi.surface_width = static_cast(scaledWindowWidth()); wi.surface_height = static_cast(scaledWindowHeight()); - wi.surface_scale = static_cast(devicePixelRatioFromScreen()); + wi.surface_scale = static_cast(devicePixelRatioFromWindow()); return wi; } diff --git a/src/frontend/qt_sdl/Screen.h b/src/frontend/qt_sdl/Screen.h index b11df29b..79889a3f 100644 --- a/src/frontend/qt_sdl/Screen.h +++ b/src/frontend/qt_sdl/Screen.h @@ -23,6 +23,8 @@ #include "FrontendUtil.h" #include "duckstation/gl/context.h" +#include + #include #include #include @@ -133,7 +135,7 @@ public: void transferLayout(); protected: - qreal devicePixelRatioFromScreen() const; + qreal devicePixelRatioFromWindow() const; int scaledWindowWidth() const; int scaledWindowHeight() const;