Chromium Code Reviews| Index: ui/accelerated_widget_mac/ca_renderer_layer_tree.mm |
| diff --git a/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm b/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm |
| index f47d93f139909ea4369ec0fdc087d9a77320a6c8..a139dc7d073b8da3a68b78e593dce4d946774f1f 100644 |
| --- a/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm |
| +++ b/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm |
| @@ -11,7 +11,6 @@ |
| #include "base/command_line.h" |
| #include "base/lazy_instance.h" |
| -#include "base/mac/mac_util.h" |
| #include "base/mac/sdk_forward_declarations.h" |
| #include "base/trace_event/trace_event.h" |
| #include "third_party/skia/include/core/SkColor.h" |
| @@ -201,9 +200,11 @@ bool AVSampleBufferDisplayLayerEnqueueIOSurface( |
| } |
| CARendererLayerTree::CARendererLayerTree( |
| - bool allow_av_sample_buffer_display_layer) |
| + bool allow_av_sample_buffer_display_layer, |
| + bool allow_solid_color_layers) |
| : allow_av_sample_buffer_display_layer_( |
| - allow_av_sample_buffer_display_layer) {} |
| + allow_av_sample_buffer_display_layer), |
| + allow_solid_color_layers_(allow_solid_color_layers) {} |
| CARendererLayerTree::~CARendererLayerTree() {} |
| bool CARendererLayerTree::ScheduleCALayer(const CARendererLayerParams& params) { |
| @@ -287,6 +288,9 @@ bool AVSampleBufferDisplayLayerEnqueueIOSurface( |
| return true; |
| } |
| +id CARendererLayerTree::ContentsForSolidColorForTesting(SkColor color) { |
| + return SolidColorContents::Get(color)->GetContents(); |
| +} |
| CARendererLayerTree::RootLayer::RootLayer() {} |
| @@ -366,7 +370,7 @@ bool AVSampleBufferDisplayLayerEnqueueIOSurface( |
| // across processes. To make colors consistent across both solid color and |
| // IOSurface-backed layers, use a cache of solid-color IOSurfaces as contents. |
| // https://crbug.com/633805 |
| - if (base::mac::IsAtLeastOS10_12()) { |
|
ccameron
2016/09/30 22:14:18
I was testing this on 10.11, so I screwed up this
|
| + if (!io_surface && !tree->allow_solid_color_layers_) { |
| solid_color_contents = SolidColorContents::Get(background_color); |
| ContentLayer::contents_rect = gfx::RectF(0, 0, 1, 1); |
| } |
| @@ -673,6 +677,8 @@ bool AVSampleBufferDisplayLayerEnqueueIOSurface( |
| [ca_layer setContents:static_cast<id>(io_surface.get())]; |
| } else if (solid_color_contents) { |
| [ca_layer setContents:solid_color_contents->GetContents()]; |
| + } else { |
| + [ca_layer setContents:nil]; |
| } |
| if ([ca_layer respondsToSelector:(@selector(setContentsScale:))]) |
| [ca_layer setContentsScale:scale_factor]; |
| @@ -715,7 +721,7 @@ bool AVSampleBufferDisplayLayerEnqueueIOSurface( |
| // Yellow represents an AV layer that changed this frame. |
| color.reset(CGColorCreateGenericRGB(1, 1, 0, 1)); |
| } else if (io_surface) { |
| - // Pink represents a CALayer that changed this frame. |
| + // Magenta represents a CALayer that changed this frame. |
| color.reset(CGColorCreateGenericRGB(1, 0, 1, 1)); |
| } else if (solid_color_contents) { |
| // Cyan represents a solid color IOSurface-backed layer. |