Title: [145039] trunk/Source/WebKit2
Revision
145039
Author
[email protected]
Date
2013-03-06 21:58:57 -0800 (Wed, 06 Mar 2013)

Log Message

[wk2] Page overlays shouldn't dirty the entire layer when flushing if the main frame can't scroll
https://bugs.webkit.org/show_bug.cgi?id=111662
<rdar://problem/13355808>

Reviewed by Simon Fraser.

Instead of setNeedsDisplay()ing the whole page overlay layer every time through
TCADA::flushLayers, do it at scroll time instead. Repainting on scroll is
necessary to keep things painted in the right place when we scroll (the overlay
is fixed to the size of the view), but is quite wasteful in apps that don’t scroll.

This works with threaded scrolling because overlay installation forces us
into main-thread scrolling mode.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::scroll):
(WebKit::TiledCoreAnimationDrawingArea::flushLayers):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (145038 => 145039)


--- trunk/Source/WebKit2/ChangeLog	2013-03-07 05:55:29 UTC (rev 145038)
+++ trunk/Source/WebKit2/ChangeLog	2013-03-07 05:58:57 UTC (rev 145039)
@@ -1,5 +1,25 @@
 2013-03-06  Tim Horton  <[email protected]>
 
+        [wk2] Page overlays shouldn't dirty the entire layer when flushing if the main frame can't scroll
+        https://bugs.webkit.org/show_bug.cgi?id=111662
+        <rdar://problem/13355808>
+
+        Reviewed by Simon Fraser.
+
+        Instead of setNeedsDisplay()ing the whole page overlay layer every time through
+        TCADA::flushLayers, do it at scroll time instead. Repainting on scroll is
+        necessary to keep things painted in the right place when we scroll (the overlay
+        is fixed to the size of the view), but is quite wasteful in apps that don’t scroll.
+
+        This works with threaded scrolling because overlay installation forces us
+        into main-thread scrolling mode.
+
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+        (WebKit::TiledCoreAnimationDrawingArea::scroll):
+        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
+
+2013-03-06  Tim Horton  <[email protected]>
+
         [wk2] Page overlays should use the accelerated drawing setting instead of hardcoding it on
         https://bugs.webkit.org/show_bug.cgi?id=111654
         <rdar://problem/13364085>

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm (145038 => 145039)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm	2013-03-07 05:55:29 UTC (rev 145038)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm	2013-03-07 05:58:57 UTC (rev 145039)
@@ -110,6 +110,7 @@
 
 void TiledCoreAnimationDrawingArea::scroll(const IntRect& scrollRect, const IntSize& scrollDelta)
 {
+    m_pageOverlayLayer->setNeedsDisplay();
 }
 
 void TiledCoreAnimationDrawingArea::setRootCompositingLayer(GraphicsLayer* graphicsLayer)
@@ -307,7 +308,6 @@
     }
 
     if (m_pageOverlayLayer) {
-        m_pageOverlayLayer->setNeedsDisplay();
         if (TiledBacking* overlayTiledBacking = m_pageOverlayLayer->tiledBacking())
             overlayTiledBacking->setVisibleRect(enclosingIntRect(m_rootLayer.get().frame));
         m_pageOverlayLayer->flushCompositingStateForThisLayerOnly();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to