From 941aea658fe8948e842763612cef7b34b8633448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 19 Mar 2018 16:59:24 +0100 Subject: [PATCH] macOS: Do layer updates via the CALayerDelegate protocol MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The updateLayer function is only called when the layer is a _NSViewBackingLayer instance, which is what the default implementation of [NSView makeBackingLayer] returns. Once we move to optionally returning a CAMetalLayer, we need to use the more generic displayLayer: API, so we do that now as a first step. This matches the way we draw and send expose events on iOS. Change-Id: I49721ff005ca9dfddebff645705f96b5ab46abb4 Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qnsview.mm | 2 +- src/plugins/platforms/cocoa/qnsview_drawing.mm | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index 5ac55c523b..7c23c03218 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -74,7 +74,7 @@ - (BOOL)isTransparentForUserInput; @end -@interface QT_MANGLE_NAMESPACE(QNSView) (Drawing) +@interface QT_MANGLE_NAMESPACE(QNSView) (Drawing) @end @interface QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper) : NSObject diff --git a/src/plugins/platforms/cocoa/qnsview_drawing.mm b/src/plugins/platforms/cocoa/qnsview_drawing.mm index e0a97106fd..7d65eedd17 100644 --- a/src/plugins/platforms/cocoa/qnsview_drawing.mm +++ b/src/plugins/platforms/cocoa/qnsview_drawing.mm @@ -137,17 +137,14 @@ } } -- (BOOL)wantsUpdateLayer +- (void)displayLayer:(CALayer *)layer { - return YES; -} + Q_ASSERT(layer == self.layer); -- (void)updateLayer -{ if (!m_platformWindow) return; - qCDebug(lcQpaDrawing) << "[QNSView updateLayer]" << m_platformWindow->window(); + qCDebug(lcQpaDrawing) << "[QNSView displayLayer]" << m_platformWindow->window(); // FIXME: Find out if there's a way to resolve the dirty rect like in drawRect: [self updateRegion:QRectF::fromCGRect(self.bounds).toRect()];