Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp |
| diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp |
| index 43d57ebe4b042d11783e96ac70281c34fc84ca55..9286c96e1d93615e5853f7acddb1bcf26ed84250 100644 |
| --- a/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp |
| +++ b/third_party/WebKit/Source/core/layout/compositing/CompositingRequirementsUpdater.cpp |
| @@ -147,12 +147,15 @@ class CompositingRequirementsUpdater::RecursionData { |
| subtree_is_compositing_(false), |
| has_unisolated_composited_blending_descendant_(false), |
| testing_overlap_(true), |
| + has_composited_non_root_ancestor_(false), |
| has_composited_scrolling_ancestor_(false) {} |
| PaintLayer* compositing_ancestor_; |
| bool subtree_is_compositing_; |
| bool has_unisolated_composited_blending_descendant_; |
| bool testing_overlap_; |
| + // Ancestors may be composited but not have composited scrolling layer. |
| + bool has_composited_non_root_ancestor_; |
| bool has_composited_scrolling_ancestor_; |
| }; |
| @@ -274,7 +277,9 @@ void CompositingRequirementsUpdater::UpdateRecursive( |
| // TODO(chrishtr): use |hasCompositedScrollingAncestor| instead. |
| const bool ignore_lcd_text = |
| - current_recursion_data.has_composited_scrolling_ancestor_; |
| + current_recursion_data.has_composited_scrolling_ancestor_ || |
| + (layer->SticksToScroller() && |
|
flackr
2017/05/17 20:18:57
For clarity, can you calculate a named local bool
yigu
2017/05/18 18:00:35
Done.
|
| + current_recursion_data.has_composited_non_root_ancestor_); |
| direct_reasons |= |
| compositing_reason_finder_.DirectReasons(layer, ignore_lcd_text); |
| @@ -386,6 +391,10 @@ void CompositingRequirementsUpdater::UpdateRecursive( |
| // fact that there's an animation running behind this layer, meaning they |
| // can rely on the overlap map testing again. |
| child_recursion_data.testing_overlap_ = true; |
| + |
| + // Tell the descendants they have composited non-root ancestor. |
| + if (!layer->IsRootLayer()) |
| + child_recursion_data.has_composited_non_root_ancestor_ = true; |
|
flackr
2017/05/17 20:18:57
Couldn't we determine this by checking !child_recu
yigu
2017/05/18 18:00:35
Done.
|
| } |
| #if DCHECK_IS_ON() |