diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-03-05 17:34:47 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-03-06 10:04:14 +0000 |
commit | eaf1da4d961fbbda9455f9af3b23d1af777f43fa (patch) | |
tree | 95970599ecee31c4f7f940bc97ac98c61a3d0cad /chromium/ui/accelerated_widget_mac | |
parent | 38a9a29f4f9436cace7f0e7abf9c586057df8a4e (diff) | |
download | qtwebengine-chromium-eaf1da4d961fbbda9455f9af3b23d1af777f43fa.tar.gz |
BASELINE: Update Chromium to 73.0.3683.64
Change-Id: I76517dc277ba4e16bfd7e098fda3d079656b3b9f
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/ui/accelerated_widget_mac')
-rw-r--r-- | chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.h | 6 | ||||
-rw-r--r-- | chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm | 26 |
2 files changed, 30 insertions, 2 deletions
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<ClipAndSortingLayer> clip_and_sorting_layers; base::scoped_nsobject<CALayer> 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)); |