Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1236)

Unified Diff: Source/core/rendering/compositing/CompositingReasonFinder.cpp

Issue 298723011: Make 'will-change: contents' suppress compositing in subtree (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
« no previous file with comments | « Source/core/rendering/compositing/CompositingReasonFinder.h ('k') | Source/core/rendering/style/RenderStyle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698