| Index: content/browser/renderer_host/render_widget_host_view_mac.mm
|
| diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
|
| index 6454008032fe52e94f797a2e9d20eeb5e6612be2..82255825b061d603f6d5bb7ab7924a237d65cb66 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_mac.mm
|
| +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
|
| @@ -513,14 +513,25 @@ RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget)
|
| cocoa_view_ = [[[RenderWidgetHostViewCocoa alloc]
|
| initWithRenderWidgetHostViewMac:this] autorelease];
|
|
|
| + // Make this view host a solid white layer when there is no content ready to
|
| + // draw.
|
| background_layer_.reset([[CALayer alloc] init]);
|
| [background_layer_
|
| setBackgroundColor:CGColorGetConstantColor(kCGColorWhite)];
|
| - [background_layer_ setGeometryFlipped:YES];
|
| - [background_layer_ setContentsGravity:kCAGravityTopLeft];
|
| [cocoa_view_ setLayer:background_layer_];
|
| [cocoa_view_ setWantsLayer:YES];
|
|
|
| + if (!IsDelegatedRendererEnabled()) {
|
| + // 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_
|
| + setAutoresizingMask:kCALayerWidthSizable|kCALayerHeightSizable];
|
| + [background_layer_ addSublayer:flipped_layer_];
|
| + }
|
| +
|
| if (IsDelegatedRendererEnabled()) {
|
| root_layer_.reset(new ui::Layer(ui::LAYER_TEXTURED));
|
| delegated_frame_host_.reset(new DelegatedFrameHost(this));
|
| @@ -653,7 +664,7 @@ void RenderWidgetHostViewMac::EnsureSoftwareLayer() {
|
|
|
| // Disable the fade-in animation as the layer is added.
|
| ScopedCAActionDisabler disabler;
|
| - [background_layer_ addSublayer:software_layer_];
|
| + [flipped_layer_ addSublayer:software_layer_];
|
| }
|
|
|
| void RenderWidgetHostViewMac::DestroySoftwareLayer() {
|
| @@ -681,7 +692,7 @@ void RenderWidgetHostViewMac::EnsureCompositedIOSurfaceLayer() {
|
|
|
| // Disable the fade-in animation as the layer is added.
|
| ScopedCAActionDisabler disabler;
|
| - [background_layer_ addSublayer:compositing_iosurface_layer_];
|
| + [flipped_layer_ addSublayer:compositing_iosurface_layer_];
|
| }
|
|
|
| void RenderWidgetHostViewMac::DestroyCompositedIOSurfaceLayer(
|
| @@ -1754,7 +1765,7 @@ void RenderWidgetHostViewMac::AcceleratedSurfaceBuffersSwapped(
|
| [remote_layer_host_ setContextId:context_id];
|
| [remote_layer_host_
|
| setAutoresizingMask:kCALayerMaxXMargin|kCALayerMaxYMargin];
|
| - [background_layer_ addSublayer:remote_layer_host_];
|
| + [flipped_layer_ addSublayer:remote_layer_host_];
|
| }
|
|
|
| // Ack the frame immediately. Any GPU back pressure will be applied by
|
| @@ -2192,7 +2203,7 @@ void RenderWidgetHostViewMac::PauseForPendingResizeOrRepaintsAndDraw() {
|
|
|
| // Synchronized resizing does not yet work with browser compositor.
|
| // http://crbug.com/388005
|
| - if (delegated_frame_host_)
|
| + if (IsDelegatedRendererEnabled())
|
| return;
|
|
|
| // Pausing for one view prevents others from receiving frames.
|
|
|