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..19a36177f3d016a9d9ec43a792885503cccd75df 100644 |
--- a/Source/core/rendering/compositing/CompositedLayerMapping.cpp |
+++ b/Source/core/rendering/compositing/CompositedLayerMapping.cpp |
@@ -1890,11 +1890,13 @@ 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; |
+ 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 +1915,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; |
} |