summaryrefslogtreecommitdiff
path: root/chromium/ui/accelerated_widget_mac
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-03-05 17:34:47 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-03-06 10:04:14 +0000
commiteaf1da4d961fbbda9455f9af3b23d1af777f43fa (patch)
tree95970599ecee31c4f7f940bc97ac98c61a3d0cad /chromium/ui/accelerated_widget_mac
parent38a9a29f4f9436cace7f0e7abf9c586057df8a4e (diff)
downloadqtwebengine-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.h6
-rw-r--r--chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm26
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));