summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoawindow.mm
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@digia.com>2013-05-13 15:34:05 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-05-15 05:06:15 +0200
commit1caa0c023f4fa60446094e53f22ee79771130e2f (patch)
tree94e3f6f7ceea932243f25ea7bd15314b92622e1f /src/plugins/platforms/cocoa/qcocoawindow.mm
parentb911e058fae9274ee1144ec67bad76ef0c1e0a84 (diff)
Cocoa: Fix Open GL resolution in high-dpi
We permanently enable 'wantsBestResolutionOpenGLSurface' when creating an Open GL window/surface. We were enabling it once we would detect a high-dpi Cocoa backend, whitout ever turning it off. Leaving it 'on' on non-high-dpi displays should not change anything. Task-number: QTBUG-31000 Change-Id: I3d0c77f7b36f3c22dacd04a50fcc5a7d88af32c0 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoawindow.mm')
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index 999439d618..ac30338c39 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -220,6 +220,16 @@ QCocoaWindow::QCocoaWindow(QWindow *tlw)
} else {
m_qtView = [[QNSView alloc] initWithQWindow:tlw platformWindow:this];
m_contentView = m_qtView;
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+ // Enable high-dpi OpenGL for retina displays. Enabling has the side
+ // effect that Cocoa will start calling glViewport(0, 0, width, height),
+ // overriding any glViewport calls in application code. This is usually not a
+ // problem, except if the appilcation wants to have a "custom" viewport.
+ // (like the hellogl example)
+ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7
+ && tlw->surfaceType() == QSurface::OpenGLSurface)
+ [m_contentView setWantsBestResolutionOpenGLSurface:YES];
+#endif
}
setGeometry(tlw->geometry());
recreateWindow(parent());