From e3594963f3420c5e3e162a58bd710090d130e006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 2 Oct 2024 12:04:54 +0200 Subject: [PATCH] macOS: Reflect QWindow's color space after creation If an explicit color space has been set, we assume that we can apply that to the CAMetalLayer or IOSurface we use when blitting our content. If not we want to reflect the NSWindow's color space, which will in turn reflect the NSScreen color space. Task-number: QTBUG-129499 Change-Id: Idc465af39dafc80be0edd014abc55eb501ae1f89 Reviewed-by: Allan Sandfeld Jensen (cherry picked from commit a3a691c5a359ad1c3f76248c270273ec13fe96fd) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/platforms/cocoa/qcocoawindow.mm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index b4c8ae4ba1f..e5c643751f6 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -183,7 +183,16 @@ QCocoaWindow::~QCocoaWindow() QSurfaceFormat QCocoaWindow::format() const { - return window()->requestedFormat(); + auto format = window()->requestedFormat(); + if (auto *view = qnsview_cast(m_view); view.colorSpace) { + auto colorSpace = QColorSpace::fromIccProfile(QByteArray::fromNSData(view.colorSpace.ICCProfileData)); + if (!colorSpace.isValid()) { + qCWarning(lcQpaWindow) << "Failed to parse ICC profile for" << view.colorSpace + << "with ICC data" << view.colorSpace.ICCProfileData; + } + format.setColorSpace(colorSpace); + } + return format; } void QCocoaWindow::setGeometry(const QRect &rectIn)