Title: [156200] trunk/Source/WebCore
Revision
156200
Author
[email protected]
Date
2013-09-20 14:47:38 -0700 (Fri, 20 Sep 2013)

Log Message

Ensure that TileController tile coverage is updated on scrolling even when we don't have scrollbars
https://bugs.webkit.org/show_bug.cgi?id=121700
<rdar://problem/15030589>

Reviewed by Dean Jackson.

r155660 introduced a bug where we wouldn't make scrollbars on long pages. However,
that revealed a fundamental flaw in the TiledBacking update logic; it relied on the
GraphicsLayer flushes triggered by scrollbars updates in order to update the main
TileController's tile coverage. No scrollbars meant no tile coverage updates.

Fix by explicitly triggering a flush when the FrameView is scrolled (we get
notified about this on the main thread after the scrolling thread has moved
layers around).

No test since this will only be exposed for a short time while scrollbars are
broken.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::frameViewDidScroll):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (156199 => 156200)


--- trunk/Source/WebCore/ChangeLog	2013-09-20 21:17:43 UTC (rev 156199)
+++ trunk/Source/WebCore/ChangeLog	2013-09-20 21:47:38 UTC (rev 156200)
@@ -1,3 +1,26 @@
+2013-09-20  Simon Fraser  <[email protected]>
+
+        Ensure that TileController tile coverage is updated on scrolling even when we don't have scrollbars
+        https://bugs.webkit.org/show_bug.cgi?id=121700
+        <rdar://problem/15030589>
+
+        Reviewed by Dean Jackson.
+
+        r155660 introduced a bug where we wouldn't make scrollbars on long pages. However,
+        that revealed a fundamental flaw in the TiledBacking update logic; it relied on the
+        GraphicsLayer flushes triggered by scrollbars updates in order to update the main
+        TileController's tile coverage. No scrollbars meant no tile coverage updates.
+        
+        Fix by explicitly triggering a flush when the FrameView is scrolled (we get
+        notified about this on the main thread after the scrolling thread has moved
+        layers around).
+        
+        No test since this will only be exposed for a short time while scrollbars are
+        broken.
+
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::frameViewDidScroll):
+
 2013-09-20  Zoltan Horvath  <[email protected]>
 
         Refactoring LineBreaker and RenderTextInfo out of RenderBlock.h

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (156199 => 156200)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2013-09-20 21:17:43 UTC (rev 156199)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2013-09-20 21:47:38 UTC (rev 156200)
@@ -1319,8 +1319,11 @@
 
     // If there's a scrolling coordinator that manages scrolling for this frame view,
     // it will also manage updating the scroll layer position.
-    if (hasCoordinatedScrolling())
+    if (hasCoordinatedScrolling()) {
+        // We have to schedule a flush in order for the main TiledBacking to update its tile coverage.
+        scheduleLayerFlushNow();
         return;
+    }
 
     FrameView& frameView = m_renderView.frameView();
     IntPoint scrollPosition = frameView.scrollPosition();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to