From 157570a1f22f06639bbf63dd55d30dca98143fe1 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sat, 27 Nov 2021 05:30:50 +0100 Subject: [PATCH] Handle screen orientation --- Source/utils/display.cpp | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/Source/utils/display.cpp b/Source/utils/display.cpp index f74a76336..e83dbe9d8 100644 --- a/Source/utils/display.cpp +++ b/Source/utils/display.cpp @@ -1,5 +1,7 @@ #include "utils/display.h" +#include + #ifdef __vita__ #include #endif @@ -61,27 +63,24 @@ void CalculatePreferdWindowSize(int &width, int &height) ErrSdl(); } - if (!*sgOptions.Graphics.integerScaling) { - float wFactor = (float)mode.w / width; - float hFactor = (float)mode.h / height; + if (mode.w < mode.h) { + std::swap(mode.w, mode.h); + } - if (wFactor > hFactor) { - width = mode.w * height / mode.h; - } else { - height = mode.h * width / mode.w; - } + if (*sgOptions.Graphics.integerScaling) { + int factor = std::min(mode.w / width, mode.h / height); + width = mode.w / factor; + height = mode.h / factor; return; } - int wFactor = mode.w / width; - int hFactor = mode.h / height; + float wFactor = (float)mode.w / width; + float hFactor = (float)mode.h / height; if (wFactor > hFactor) { - width = mode.w / hFactor; - height = mode.h / hFactor; + width = mode.w * height / mode.h; } else { - width = mode.w / wFactor; - height = mode.h / wFactor; + height = mode.h * width / mode.w; } } #endif