Index: content/browser/compositor/browser_compositor_view_private_mac.mm |
diff --git a/content/browser/compositor/browser_compositor_view_private_mac.mm b/content/browser/compositor/browser_compositor_view_private_mac.mm |
index 97914d7e614592d2b6417acad506ba7359f20f4a..f10960927681c3ac501a0aea76b104af5e21777a 100644 |
--- a/content/browser/compositor/browser_compositor_view_private_mac.mm |
+++ b/content/browser/compositor/browser_compositor_view_private_mac.mm |
@@ -27,11 +27,14 @@ |
// Disable the fade-in animation as the layer and view are added. |
ScopedCAActionDisabler disabler; |
- // Make this view host a transparent layer. |
- background_layer_.reset([[CALayer alloc] init]); |
- [background_layer_ setContentsGravity:kCAGravityTopLeft]; |
- [self setLayer:background_layer_]; |
- [self setWantsLayer:YES]; |
+ // Add a flipped transparent layer as a child, so that we don't need to |
+ // fiddle with the position of sub-layers -- they will always be at the |
+ // origin. |
+ flipped_layer_.reset([[CALayer alloc] init]); |
+ [flipped_layer_ setGeometryFlipped:YES]; |
+ [flipped_layer_ setAnchorPoint:CGPointMake(0, 0)]; |
+ [flipped_layer_ |
+ setAutoresizingMask:kCALayerWidthSizable|kCALayerHeightSizable]; |
compositor_.reset(new ui::Compositor(self, content::GetContextFactory())); |
} |
@@ -41,9 +44,9 @@ |
- (void)setClient:(content::BrowserCompositorViewMacClient*)client { |
// Disable the fade-out as layers are removed. |
ScopedCAActionDisabler disabler; |
- [self removeFromSuperview]; |
// Reset all state. |
+ [flipped_layer_ removeFromSuperlayer]; |
[accelerated_layer_ removeFromSuperlayer]; |
[accelerated_layer_ resetClient]; |
accelerated_layer_.reset(); |
@@ -56,7 +59,10 @@ |
if (client_) { |
DCHECK(compositor_); |
compositor_->SetRootLayer(client_->BrowserCompositorRootLayer()); |
- [client_->BrowserCompositorSuperview() addSubview:self]; |
+ CALayer* background_layer = [client_->BrowserCompositorSuperview() layer]; |
+ DCHECK(background_layer); |
+ [flipped_layer_ setBounds:[background_layer bounds]]; |
+ [background_layer addSublayer:flipped_layer_]; |
} else { |
compositor_->SetRootLayer(NULL); |
} |
@@ -111,7 +117,7 @@ |
initWithIOSurface:iosurface |
withScaleFactor:scale_factor |
withClient:helper_.get()]); |
- [[self layer] addSublayer:accelerated_layer_]; |
+ [flipped_layer_ addSublayer:accelerated_layer_]; |
} |
{ |
@@ -163,7 +169,7 @@ |
// Disable the fade-in animation as the layer is added. |
ScopedCAActionDisabler disabler; |
software_layer_.reset([[SoftwareLayer alloc] init]); |
- [[self layer] addSublayer:software_layer_]; |
+ [flipped_layer_ addSublayer:software_layer_]; |
} |
SkImageInfo info; |