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); |