summaryrefslogtreecommitdiff
path: root/src/citra_qt/bootmanager.cpp
diff options
context:
space:
mode:
authorGravatar Kevin Hartman2014-08-29 22:23:12 -0700
committerGravatar Tony Wasserka2014-11-18 13:06:05 +0100
commit221a9b023d8c9ca55c093823e9efd6d13d0a54a2 (patch)
tree57a26a0e11416b366688d00c4a2c9216fa0cde78 /src/citra_qt/bootmanager.cpp
parentAdd a GUI logging channel. (diff)
downloadyuzu-221a9b023d8c9ca55c093823e9efd6d13d0a54a2.tar.gz
yuzu-221a9b023d8c9ca55c093823e9efd6d13d0a54a2.tar.xz
yuzu-221a9b023d8c9ca55c093823e9efd6d13d0a54a2.zip
Viewport scaling and display density independence
The view is scaled to be as large as possible, without changing the aspect, within the bounds of the window. On "retina" displays, or other displays where window units != pixels, the view should no longer draw incorrectly.
Diffstat (limited to 'src/citra_qt/bootmanager.cpp')
-rw-r--r--src/citra_qt/bootmanager.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/citra_qt/bootmanager.cpp b/src/citra_qt/bootmanager.cpp
index 20824692d..516e115fd 100644
--- a/src/citra_qt/bootmanager.cpp
+++ b/src/citra_qt/bootmanager.cpp
@@ -2,6 +2,12 @@
2#include <QKeyEvent> 2#include <QKeyEvent>
3#include <QApplication> 3#include <QApplication>
4 4
5#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
6// Required for screen DPI information
7#include <QScreen>
8#include <QWindow>
9#endif
10
5#include "common/common.h" 11#include "common/common.h"
6#include "bootmanager.hxx" 12#include "bootmanager.hxx"
7 13
@@ -176,6 +182,24 @@ void GRenderWindow::PollEvents() {
176 */ 182 */
177} 183}
178 184
185// On Qt 5.1+, this correctly gets the size of the framebuffer (pixels).
186//
187// Older versions get the window size (density independent pixels),
188// and hence, do not support DPI scaling ("retina" displays).
189// The result will be a viewport that is smaller than the extent of the window.
190void GRenderWindow::GetFramebufferSize(int* fbWidth, int* fbHeight)
191{
192#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
193 int pixelRatio = child->QPaintDevice::devicePixelRatio();
194
195 *fbWidth = child->QPaintDevice::width() * pixelRatio;
196 *fbHeight = child->QPaintDevice::height() * pixelRatio;
197#else
198 *fbWidth = child->QPaintDevice::width();
199 *fbHeight = child->QPaintDevice::height();
200#endif
201}
202
179void GRenderWindow::BackupGeometry() 203void GRenderWindow::BackupGeometry()
180{ 204{
181 geometry = ((QGLWidget*)this)->saveGeometry(); 205 geometry = ((QGLWidget*)this)->saveGeometry();