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

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

Issue 512293002: Fix paint invalidation when composited layers change from paints-into-ancestor to self-painting. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 4 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/CompositedLayerMapping.cpp
diff --git a/Source/core/rendering/compositing/CompositedLayerMapping.cpp b/Source/core/rendering/compositing/CompositedLayerMapping.cpp
index 2bee39b3bbe77d163122873f20ebb097d53a526e..ff353377186130438ae2f4fbca7e372222f28611 100644
--- a/Source/core/rendering/compositing/CompositedLayerMapping.cpp
+++ b/Source/core/rendering/compositing/CompositedLayerMapping.cpp
@@ -1890,12 +1890,15 @@ bool CompositedLayerMapping::updateRequiresOwnBackingStoreForAncestorReasons(con
&& (compositingAncestorLayer->compositedLayerMapping()->mainGraphicsLayer()->drawsContent()
|| compositingAncestorLayer->compositedLayerMapping()->paintsIntoCompositedAncestor());
- if (paintsIntoCompositedAncestor() != previousPaintsIntoCompositedAncestor)
- compositor()->paintInvalidationOnCompositingChange(&m_owningLayer);
-
- // FIXME: this is bogus. We need to make this assignment before the check above.
m_requiresOwnBackingStoreForAncestorReasons = !canPaintIntoAncestor;
pdr. 2014/08/28 20:21:13 This code is really only tracking changes to m_req
chrishtr 2014/08/28 20:27:56 That would invalidate more than necessary. Only if
+ if (paintsIntoCompositedAncestor() != previousPaintsIntoCompositedAncestor) {
+ // Back out the change temporarily while invalidating with respect to the old container.
+ m_requiresOwnBackingStoreForAncestorReasons = !m_requiresOwnBackingStoreForAncestorReasons;
+ compositor()->paintInvalidationOnCompositingChange(&m_owningLayer);
+ m_requiresOwnBackingStoreForAncestorReasons = !m_requiresOwnBackingStoreForAncestorReasons;
+ }
+
return m_requiresOwnBackingStoreForAncestorReasons != previousRequiresOwnBackingStoreForAncestorReasons;
}
@@ -1913,8 +1916,12 @@ bool CompositedLayerMapping::updateRequiresOwnBackingStoreForIntrinsicReasons()
|| renderer->hasReflection()
|| renderer->hasFilter();
- if (paintsIntoCompositedAncestor() != previousPaintsIntoCompositedAncestor)
+ if (paintsIntoCompositedAncestor() != previousPaintsIntoCompositedAncestor) {
+ // Back out the change temporarily while invalidating with respect to the old container.
+ m_requiresOwnBackingStoreForIntrinsicReasons = !m_requiresOwnBackingStoreForIntrinsicReasons;
compositor()->paintInvalidationOnCompositingChange(&m_owningLayer);
+ m_requiresOwnBackingStoreForIntrinsicReasons = !m_requiresOwnBackingStoreForIntrinsicReasons;
+ }
return m_requiresOwnBackingStoreForIntrinsicReasons != previousRequiresOwnBackingStoreForIntrinsicReasons;
}

Powered by Google App Engine
This is Rietveld 408576698