Chromium Code Reviews| Index: Source/core/rendering/compositing/CompositingReasonFinder.cpp |
| diff --git a/Source/core/rendering/compositing/CompositingReasonFinder.cpp b/Source/core/rendering/compositing/CompositingReasonFinder.cpp |
| index 37a3458487cb4d6337cce40626f43963d4ef6c0e..4eeca79afea82c6e1f5012f1bcd92344da58e867 100644 |
| --- a/Source/core/rendering/compositing/CompositingReasonFinder.cpp |
| +++ b/Source/core/rendering/compositing/CompositingReasonFinder.cpp |
| @@ -110,10 +110,10 @@ CompositingReasons CompositingReasonFinder::styleDeterminedReasons(RenderObject* |
| if (style->backfaceVisibility() == BackfaceVisibilityHidden) |
| directReasons |= CompositingReasonBackfaceVisibilityHidden; |
| - if (style->shouldCompositeForCurrentAnimations()) |
| + if (requiresCompositingForAnimation(renderer)) |
|
abarth-chromium
2014/06/06 17:18:29
Why not pass in the RenderStyle given that these a
ajuma
2014/06/06 17:50:09
Good point. CL up to fix this: https://codereview.
|
| directReasons |= CompositingReasonActiveAnimation; |
| - if (style->hasWillChangeCompositingHint()) |
| + if (style->hasWillChangeCompositingHint() && !style->subtreeWillChangeContents()) |
| directReasons |= CompositingReasonWillChangeCompositingHint; |
| ASSERT(!(directReasons & ~CompositingReasonComboAllStyleDeterminedReasons)); |
| @@ -166,6 +166,14 @@ CompositingReasons CompositingReasonFinder::nonStyleDeterminedDirectReasons(cons |
| return directReasons; |
| } |
| +bool CompositingReasonFinder::requiresCompositingForAnimation(RenderObject* renderer) const |
| +{ |
| + if (renderer->style()->subtreeWillChangeContents()) |
| + return renderer->style()->isRunningAnimationOnCompositor(); |
| + |
| + return renderer->style()->shouldCompositeForCurrentAnimations(); |
| +} |
| + |
| bool CompositingReasonFinder::requiresCompositingForPosition(RenderObject* renderer, const RenderLayer* layer, RenderLayer::ViewportConstrainedNotCompositedReason* viewportConstrainedNotCompositedReason) const |
| { |
| return requiresCompositingForPositionSticky(renderer, layer) || requiresCompositingForPositionFixed(renderer, layer, viewportConstrainedNotCompositedReason); |