summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qnsview_drawing.mm
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2019-09-19 18:09:52 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2019-09-23 11:46:29 +0000
commit04dcc902eb64d94653a12005f3aedf32be1011c3 (patch)
treed1443f59af0a135bd495685acd8cc6fb34b65349 /src/plugins/platforms/cocoa/qnsview_drawing.mm
parent6db83e2584a30b1339adba18279fbfd527a10ce7 (diff)
macOS: Handle backing property changes in a single place
Change-Id: I70d57632a1756f74249f64d4d4c405cb3120a179 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'src/plugins/platforms/cocoa/qnsview_drawing.mm')
-rw-r--r--src/plugins/platforms/cocoa/qnsview_drawing.mm20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/plugins/platforms/cocoa/qnsview_drawing.mm b/src/plugins/platforms/cocoa/qnsview_drawing.mm
index d2e6f848a0..de93e03685 100644
--- a/src/plugins/platforms/cocoa/qnsview_drawing.mm
+++ b/src/plugins/platforms/cocoa/qnsview_drawing.mm
@@ -211,17 +211,21 @@
- (void)viewDidChangeBackingProperties
{
- CALayer *layer = self.layer;
- if (!layer)
- return;
+ qCDebug(lcQpaDrawing) << "Backing properties changed for" << self;
- layer.contentsScale = self.window.backingScaleFactor;
+ if (CALayer *layer = self.layer) {
+ layer.contentsScale = self.window.backingScaleFactor;
- // Metal layers must be manually updated on e.g. screen change
- if ([layer isKindOfClass:CAMetalLayer.class]) {
- [self updateMetalLayerDrawableSize:static_cast<CAMetalLayer* >(layer)];
- [self setNeedsDisplay:YES];
+ // Metal layers must be manually updated on e.g. screen change
+ if ([layer isKindOfClass:CAMetalLayer.class])
+ [self updateMetalLayerDrawableSize:static_cast<CAMetalLayer* >(layer)];
}
+
+ // Ideally we would plumb this situation through QPA in a way that lets
+ // clients invalidate their own caches, recreate QBackingStore, etc.
+ // For now we trigger an expose, and let QCocoaBackingStore deal with
+ // buffer invalidation internally.
+ [self setNeedsDisplay:YES];
}
@end