From eaf1da4d961fbbda9455f9af3b23d1af777f43fa Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Tue, 5 Mar 2019 17:34:47 +0100 Subject: BASELINE: Update Chromium to 73.0.3683.64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I76517dc277ba4e16bfd7e098fda3d079656b3b9f Reviewed-by: Michael BrĂ¼ning --- .../ca_renderer_layer_tree.h | 6 ++++- .../ca_renderer_layer_tree.mm | 26 +++++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) (limited to 'chromium/ui/accelerated_widget_mac') diff --git a/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.h b/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.h index a4e7fe3b401..42e274c4d47 100644 --- a/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.h +++ b/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.h @@ -81,6 +81,10 @@ class ACCELERATED_WIDGET_MAC_EXPORT CARendererLayerTree { bool AddContentLayer(CARendererLayerTree* tree, const CARendererLayerParams& params); + // Workaround for https://crbug.com/923427. Only allow any + // AVSampleBufferDisplayLayer if there is exactly one video quad. + void EnforceOnlyOneAVLayer(); + // Allocate CALayers for this layer and its children, and set their // properties appropriately. Re-use the CALayers from |old_layer| if // possible. If re-using a CALayer from |old_layer|, reset its |ca_layer| @@ -92,7 +96,7 @@ class ACCELERATED_WIDGET_MAC_EXPORT CARendererLayerTree { // Return true if the CALayer tree is just a video layer on a black or // transparent background, false otherwise. - bool WantsFullcreenLowPowerBackdrop(); + bool WantsFullcreenLowPowerBackdrop() const; std::vector clip_and_sorting_layers; base::scoped_nsobject ca_layer; diff --git a/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm b/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm index 1c5988fe068..c9b20cf4a63 100644 --- a/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm +++ b/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm @@ -238,7 +238,7 @@ void CARendererLayerTree::CommitScheduledCALayers( scale_factor_ = scale_factor; } -bool CARendererLayerTree::RootLayer::WantsFullcreenLowPowerBackdrop() { +bool CARendererLayerTree::RootLayer::WantsFullcreenLowPowerBackdrop() const { bool found_video_layer = false; for (auto& clip_layer : clip_and_sorting_layers) { for (auto& transform_layer : clip_layer.transform_layers) { @@ -271,6 +271,28 @@ bool CARendererLayerTree::RootLayer::WantsFullcreenLowPowerBackdrop() { return found_video_layer; } +void CARendererLayerTree::RootLayer::EnforceOnlyOneAVLayer() { + size_t video_layer_count = 0; + for (auto& clip_layer : clip_and_sorting_layers) { + for (auto& transform_layer : clip_layer.transform_layers) { + for (auto& content_layer : transform_layer.content_layers) { + if (content_layer.use_av_layer) + video_layer_count += 1; + } + } + } + if (video_layer_count <= 1) + return; + for (auto& clip_layer : clip_and_sorting_layers) { + for (auto& transform_layer : clip_layer.transform_layers) { + for (auto& content_layer : transform_layer.content_layers) { + if (content_layer.use_av_layer) + content_layer.use_av_layer = false; + } + } + } +} + id CARendererLayerTree::ContentsForSolidColorForTesting(SkColor color) { return SolidColorContents::Get(color)->GetContents(); } @@ -566,6 +588,8 @@ void CARendererLayerTree::RootLayer::CommitToCA(CALayer* superlayer, DLOG(ERROR) << "CARendererLayerTree root layer not attached to tree."; } + EnforceOnlyOneAVLayer(); + if (WantsFullcreenLowPowerBackdrop()) { const gfx::RectF bg_rect( ScaleSize(gfx::SizeF(pixel_size), 1 / scale_factor)); -- cgit v1.2.1