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

Unified Diff: Source/core/rendering/RenderLayerCompositor.cpp

Issue 14651028: Promote RenderLayers that have a transition on opacity, transform, or filter (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 7 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
« no previous file with comments | « Source/core/rendering/RenderLayerCompositor.h ('k') | Tools/DumpRenderTree/chromium/DumpRenderTree.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderLayerCompositor.cpp
diff --git a/Source/core/rendering/RenderLayerCompositor.cpp b/Source/core/rendering/RenderLayerCompositor.cpp
index 5086bf0565a519c69586194f462a344dd3a44dc7..5f7b4ab1229906167ddc7693dfacb90864c32f86 100644
--- a/Source/core/rendering/RenderLayerCompositor.cpp
+++ b/Source/core/rendering/RenderLayerCompositor.cpp
@@ -1527,6 +1527,7 @@ bool RenderLayerCompositor::requiresOwnBackingStore(const RenderLayer* layer, co
|| requiresCompositingForFrame(renderer)
|| requiresCompositingForBackfaceVisibilityHidden(renderer)
|| requiresCompositingForAnimation(renderer)
+ || requiresCompositingForTransition(renderer)
|| requiresCompositingForFilters(renderer)
|| requiresCompositingForBlending(renderer)
|| requiresCompositingForPosition(renderer, layer)
@@ -1575,6 +1576,9 @@ CompositingReasons RenderLayerCompositor::directReasonsForCompositing(const Rend
if (requiresCompositingForAnimation(renderer))
directReasons |= CompositingReasonAnimation;
+ if (requiresCompositingForTransition(renderer))
+ directReasons |= CompositingReasonTransition;
+
if (requiresCompositingForFilters(renderer))
directReasons |= CompositingReasonFilters;
@@ -1629,6 +1633,9 @@ const char* RenderLayerCompositor::logReasonsForCompositing(const RenderLayer* l
if (reasons & CompositingReasonAnimation)
return "animation";
+ if (reasons & CompositingReasonTransition)
+ return "transition";
+
if (reasons & CompositingReasonFilters)
return "filters";
@@ -1842,6 +1849,21 @@ bool RenderLayerCompositor::requiresCompositingForAnimation(RenderObject* render
return false;
}
+bool RenderLayerCompositor::requiresCompositingForTransition(RenderObject* renderer) const
+{
+ if (!(m_compositingTriggers & ChromeClient::AnimationTrigger))
+ return false;
+
+ if (Settings* settings = m_renderView->document()->settings()) {
+ if (!settings->acceleratedCompositingForTransitionEnabled())
+ return false;
+ }
+
+ return renderer->style()->transitionForProperty(CSSPropertyOpacity)
+ || renderer->style()->transitionForProperty(CSSPropertyWebkitFilter)
+ || renderer->style()->transitionForProperty(CSSPropertyWebkitTransform);
+}
+
CompositingReasons RenderLayerCompositor::subtreeReasonsForCompositing(RenderObject* renderer, bool hasCompositedDescendants, bool has3DTransformedDescendants) const
{
CompositingReasons subtreeReasons = CompositingReasonNone;
« no previous file with comments | « Source/core/rendering/RenderLayerCompositor.h ('k') | Tools/DumpRenderTree/chromium/DumpRenderTree.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698