Title: [107985] trunk/Source/WebCore
Revision
107985
Author
e...@google.com
Date
2012-02-16 15:30:55 -0800 (Thu, 16 Feb 2012)

Log Message

Handle dirty descendant visibility status in RenderLayer::updateLayerPositionsAfterScroll
https://bugs.webkit.org/show_bug.cgi?id=78286

Reviewed by Julien Chaffraix.

This is an unfortunate bandaid over a corner case where sometimes the
visible descendant status dirty flag is true when this function is
called from FrameView::repaintFixedElementsAfterScrolling. As it
should be cheap to refresh this flag when dirty in most cases (as it
early outs after finding any visible descendant), just lazily update
the dirty flag here to ensure correctness.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateLayerPositionsAfterScroll):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (107984 => 107985)


--- trunk/Source/WebCore/ChangeLog	2012-02-16 23:25:43 UTC (rev 107984)
+++ trunk/Source/WebCore/ChangeLog	2012-02-16 23:30:55 UTC (rev 107985)
@@ -1,3 +1,20 @@
+2012-02-16  Adrienne Walker  <e...@google.com>
+
+        Handle dirty descendant visibility status in RenderLayer::updateLayerPositionsAfterScroll
+        https://bugs.webkit.org/show_bug.cgi?id=78286
+
+        Reviewed by Julien Chaffraix.
+
+        This is an unfortunate bandaid over a corner case where sometimes the
+        visible descendant status dirty flag is true when this function is
+        called from FrameView::repaintFixedElementsAfterScrolling. As it
+        should be cheap to refresh this flag when dirty in most cases (as it
+        early outs after finding any visible descendant), just lazily update
+        the dirty flag here to ensure correctness.
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::updateLayerPositionsAfterScroll):
+
 2012-02-16  Adam Barth  <aba...@webkit.org>
 
         Chrome::*Geolocation* are just useless pass-throughs to ChromeClient and should be removed

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (107984 => 107985)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2012-02-16 23:25:43 UTC (rev 107984)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2012-02-16 23:30:55 UTC (rev 107985)
@@ -454,8 +454,9 @@
 
 void RenderLayer::updateLayerPositionsAfterScroll(UpdateLayerPositionsAfterScrollFlags flags)
 {
-    ASSERT(!m_visibleDescendantStatusDirty);
-    ASSERT(!m_visibleContentStatusDirty);
+    // FIXME: This shouldn't be needed, but there are some corner cases where
+    // these flags are still dirty. Update so that the check below is valid.
+    updateVisibilityStatus();
 
     // If we have no visible content and no visible descendants, there is no point recomputing
     // our rectangles as they will be empty. If our visibility changes, we are expected to
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to