diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2018-07-30 21:28:42 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2018-08-03 20:49:05 +0000 |
commit | 68f20bb8f4b74e313e1d44a7d7e78af6d8b5b3ea (patch) | |
tree | e9d47b3823dc6728f4843e715935234027791a78 /src/plugins/platforms/cocoa/qcocoawindow.mm | |
parent | 144d33df72e5ca905b1d64134784923d5cd0733f (diff) |
macOS: Make screen property changes more verbose and granular
We only update the properties that have actually changed.
Change-Id: If711530c6118d2550d5a0e968ee02c903b44fd04
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoawindow.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoawindow.mm | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index 98e808bdf3..3148501006 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -1218,11 +1218,21 @@ void QCocoaWindow::windowDidChangeScreen() const bool wasRunningDisplayLink = static_cast<QCocoaScreen *>(screen())->isRunningDisplayLink(); - if (QCocoaScreen *cocoaScreen = QCocoaIntegration::instance()->screenForNSScreen(m_view.window.screen)) { - QWindowSystemInterface::handleWindowScreenChanged<QWindowSystemInterface::SynchronousDelivery>(window(), cocoaScreen->screen()); + if (QCocoaScreen *newScreen = QCocoaIntegration::instance()->screenForNSScreen(m_view.window.screen)) { + if (newScreen == screen()) { + // Screen properties have changed. Will be handled by + // NSApplicationDidChangeScreenParametersNotification + // in QCocoaIntegration::updateScreens(). + return; + } + + qCDebug(lcQpaWindow) << window() << "moved to" << newScreen; + QWindowSystemInterface::handleWindowScreenChanged<QWindowSystemInterface::SynchronousDelivery>(window(), newScreen->screen()); if (hasPendingUpdateRequest() && wasRunningDisplayLink) requestUpdate(); // Restart display-link on new screen + } else { + qCWarning(lcQpaWindow) << "Failed to get QCocoaScreen for" << m_view.window.screen; } } |