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

Unified Diff: Source/core/paint/DeprecatedPaintLayer.cpp

Issue 1149303002: Add a dirty bit for updateDescendantDependentFlags. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: try again. Created 5 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/paint/DeprecatedPaintLayer.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/paint/DeprecatedPaintLayer.cpp
diff --git a/Source/core/paint/DeprecatedPaintLayer.cpp b/Source/core/paint/DeprecatedPaintLayer.cpp
index df5e4e0e0d7c89755b6f7f0906f0d214079927ea..81f29ebe4fcb059286468123362ea893c1637fc0 100644
--- a/Source/core/paint/DeprecatedPaintLayer.cpp
+++ b/Source/core/paint/DeprecatedPaintLayer.cpp
@@ -651,6 +651,7 @@ LayoutRect DeprecatedPaintLayer::computePaintInvalidationRect(const LayoutObject
void DeprecatedPaintLayer::dirtyVisibleContentStatus()
{
+ compositor()->setNeedsUpdateDescendantDependentFlags();
m_visibleContentStatusDirty = true;
if (parent())
parent()->dirtyAncestorChainVisibleDescendantStatus();
@@ -667,10 +668,11 @@ void DeprecatedPaintLayer::potentiallyDirtyVisibleContentStatus(EVisibility visi
void DeprecatedPaintLayer::dirtyAncestorChainVisibleDescendantStatus()
{
+ compositor()->setNeedsUpdateDescendantDependentFlags();
+
for (DeprecatedPaintLayer* layer = this; layer; layer = layer->parent()) {
if (layer->m_visibleDescendantStatusDirty)
break;
-
layer->m_visibleDescendantStatusDirty = true;
}
}
@@ -697,22 +699,6 @@ void DeprecatedPaintLayer::updateScrollingStateAfterCompositingChange()
}
}
-// The descendant-dependent flags system is badly broken because we clean dirty
-// bits in upward tree walks, which means we need to call updateDescendantDependentFlags
-// at every node in the tree to fully clean all the dirty bits. While we'll in
-// the process of fixing this issue, updateDescendantDependentFlagsForEntireSubtree
-// provides a big hammer for actually cleaning all the dirty bits in a subtree.
-//
-// FIXME: Remove this function once the descendant-dependent flags system keeps
-// its dirty bits scoped to subtrees.
-void DeprecatedPaintLayer::updateDescendantDependentFlagsForEntireSubtree()
-{
- updateDescendantDependentFlags();
-
- for (DeprecatedPaintLayer* child = firstChild(); child; child = child->nextSibling())
- child->updateDescendantDependentFlagsForEntireSubtree();
-}
-
void DeprecatedPaintLayer::updateDescendantDependentFlags()
{
if (m_visibleDescendantStatusDirty) {
« no previous file with comments | « Source/core/paint/DeprecatedPaintLayer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698