From 4e58b19b0c1d3d46808b5cc42e147ac7da8a7e21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 20 May 2021 14:26:47 +0200 Subject: [PATCH] macOS: Restore logic to set wantsBestResolutionOpenGLSurface The logic was removed in 1fc7ca091b3fdda52381a383318a3a752ec21132 when we removed support for surface-backed views, based on the documentation for wantsBestResolutionOpenGLSurface noting that layer-backed views ignore the property. But in some cases, when plugin views are embedded into host views, and the host was built with a pre-10.14 SDK, AppKit seems to get confused, and we still need to set this property. Fixes: QTBUG-93770 Change-Id: Id67f2fcb8c090c0e01c05d00792eaef311146df1 Reviewed-by: Alexandru Croitor (cherry picked from commit 40878e75176880e95398604d9e63be2138cc642b) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/platforms/cocoa/qcocoaglcontext.mm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/plugins/platforms/cocoa/qcocoaglcontext.mm b/src/plugins/platforms/cocoa/qcocoaglcontext.mm index 7b0cc3fac37..40a7a6ef5e4 100644 --- a/src/plugins/platforms/cocoa/qcocoaglcontext.mm +++ b/src/plugins/platforms/cocoa/qcocoaglcontext.mm @@ -393,6 +393,14 @@ bool QCocoaGLContext::setDrawable(QPlatformSurface *surface) if (view == QT_IGNORE_DEPRECATIONS(m_context.view)) return true; + // We generally want high-DPI GL surfaces, unless the user has explicitly disabled them. + // According to the documentation, layer-backed views ignore wantsBestResolutionOpenGLSurface + // and configure their own backing surface at an appropriate resolution, but in some cases + // we've seen this fail (plugin views embedded in surface-backed hosts), so we do it anyways. + QT_IGNORE_DEPRECATIONS(view.wantsBestResolutionOpenGLSurface) = qt_mac_resolveOption(YES, + cocoaWindow->window(), "_q_mac_wantsBestResolutionOpenGLSurface", + "QT_MAC_WANTS_BEST_RESOLUTION_OPENGL_SURFACE"); + // Setting the drawable may happen on a separate thread as a result of // a call to makeCurrent, so we need to set up the observers before we // associate the view with the context. That way we will guarantee that