Title: [150093] trunk/Source
Revision
150093
Author
timothy_hor...@apple.com
Date
2013-05-14 17:18:02 -0700 (Tue, 14 May 2013)

Log Message

[wk2] Not updating tiled backing coverage when main frame scrollability changes
https://bugs.webkit.org/show_bug.cgi?id=116123
<rdar://problem/13836559>

Reviewed by Simon Fraser.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
(TiledCoreAnimationDrawingArea):
Add updateMainFrameClipsToExposedRect.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
(WebKit::TiledCoreAnimationDrawingArea::flushLayers):
Remove m_clipsToExposedRect. We don't actually need it.

(WebKit::TiledCoreAnimationDrawingArea::mainFrameScrollabilityChanged):
Call updateMainFrameClipsToExposedRect so that we can always update
tiled backing coverage and can factor out our calls to setClipsToExposedRect.

(WebKit::TiledCoreAnimationDrawingArea::updateMainFrameClipsToExposedRect):
Factor out setClipsToExposedRect calls to here, and also call
FrameView::adjustTiledBackingCoverage so that the FrameView's tiled
backing is informed to allow overdraw in the UI-process-scrolling case.

(WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):
Use updateMainFrameClipsToExposedRect.

Export FrameView::adjustTiledBackingCoverage.

* WebCore.exp.in:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (150092 => 150093)


--- trunk/Source/WebCore/ChangeLog	2013-05-15 00:15:30 UTC (rev 150092)
+++ trunk/Source/WebCore/ChangeLog	2013-05-15 00:18:02 UTC (rev 150093)
@@ -1,3 +1,15 @@
+2013-05-14  Tim Horton  <timothy_hor...@apple.com>
+
+        [wk2] Not updating tiled backing coverage when main frame scrollability changes
+        https://bugs.webkit.org/show_bug.cgi?id=116123
+        <rdar://problem/13836559>
+
+        Reviewed by Simon Fraser.
+
+        Export FrameView::adjustTiledBackingCoverage.
+
+        * WebCore.exp.in:
+
 2013-05-14  Alexey Proskuryakov  <a...@apple.com>
 
         [Mac] Add a testing shim for secure event input functions

Modified: trunk/Source/WebCore/WebCore.exp.in (150092 => 150093)


--- trunk/Source/WebCore/WebCore.exp.in	2013-05-15 00:15:30 UTC (rev 150092)
+++ trunk/Source/WebCore/WebCore.exp.in	2013-05-15 00:18:02 UTC (rev 150093)
@@ -1154,6 +1154,7 @@
 __ZN7WebCore9FrameView24forceLayoutForPaginationERKNS_9FloatSizeES3_fNS_19AdjustViewSizeOrNotE
 __ZN7WebCore9FrameView24paintContentsForSnapshotEPNS_15GraphicsContextERKNS_7IntRectENS0_18SelectionInSnaphotENS0_26CoordinateSpaceForSnapshotE
 __ZN7WebCore9FrameView26adjustPageHeightDeprecatedEPffff
+__ZN7WebCore9FrameView26adjustTiledBackingCoverageEv
 __ZN7WebCore9FrameView29setShouldUpdateWhileOffscreenEb
 __ZN7WebCore9FrameView37setScrollingPerformanceLoggingEnabledEb
 __ZN7WebCore9FrameView37updateLayoutAndStyleIfNeededRecursiveEv

Modified: trunk/Source/WebKit2/ChangeLog (150092 => 150093)


--- trunk/Source/WebKit2/ChangeLog	2013-05-15 00:15:30 UTC (rev 150092)
+++ trunk/Source/WebKit2/ChangeLog	2013-05-15 00:18:02 UTC (rev 150093)
@@ -1,3 +1,32 @@
+2013-05-14  Tim Horton  <timothy_hor...@apple.com>
+
+        [wk2] Not updating tiled backing coverage when main frame scrollability changes
+        https://bugs.webkit.org/show_bug.cgi?id=116123
+        <rdar://problem/13836559>
+
+        Reviewed by Simon Fraser.
+
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
+        (TiledCoreAnimationDrawingArea):
+        Add updateMainFrameClipsToExposedRect.
+
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
+        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
+        Remove m_clipsToExposedRect. We don't actually need it.
+
+        (WebKit::TiledCoreAnimationDrawingArea::mainFrameScrollabilityChanged):
+        Call updateMainFrameClipsToExposedRect so that we can always update
+        tiled backing coverage and can factor out our calls to setClipsToExposedRect.
+
+        (WebKit::TiledCoreAnimationDrawingArea::updateMainFrameClipsToExposedRect):
+        Factor out setClipsToExposedRect calls to here, and also call
+        FrameView::adjustTiledBackingCoverage so that the FrameView's tiled
+        backing is informed to allow overdraw in the UI-process-scrolling case.
+
+        (WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):
+        Use updateMainFrameClipsToExposedRect.
+
 2013-05-14  Alexey Proskuryakov  <a...@apple.com>
 
         [Mac] Add a testing shim for secure event input functions

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h (150092 => 150093)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h	2013-05-15 00:15:30 UTC (rev 150092)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h	2013-05-15 00:18:02 UTC (rev 150093)
@@ -110,6 +110,7 @@
     void updateDebugInfoLayer(bool showLayer);
 
     void updateIntrinsicContentSizeTimerFired(WebCore::Timer<TiledCoreAnimationDrawingArea>*);
+    void updateMainFrameClipsToExposedRect();
     
     void invalidateAllPageOverlays();
 
@@ -131,7 +132,6 @@
     bool m_hasRootCompositingLayer;
 
     WebCore::FloatRect m_exposedRect;
-    bool m_clipsToExposedRect;
 
     WebCore::IntSize m_lastSentIntrinsicContentSize;
     WebCore::Timer<TiledCoreAnimationDrawingArea> m_updateIntrinsicContentSizeTimer;

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


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm	2013-05-15 00:15:30 UTC (rev 150092)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm	2013-05-15 00:18:02 UTC (rev 150093)
@@ -70,7 +70,6 @@
     , m_layerTreeStateIsFrozen(false)
     , m_layerFlushScheduler(this)
     , m_isPaintingSuspended(!parameters.isVisible)
-    , m_clipsToExposedRect(false)
     , m_updateIntrinsicContentSizeTimer(this, &TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeTimerFired)
 {
     Page* page = m_webPage->corePage();
@@ -350,7 +349,7 @@
     }
 
     IntRect visibleRect = enclosingIntRect(m_rootLayer.get().frame);
-    if (m_clipsToExposedRect)
+    if (!m_webPage->mainFrameIsScrollable())
         visibleRect.intersect(enclosingIntRect(m_exposedRect));
     for (PageOverlayLayerMap::iterator it = m_pageOverlayLayers.begin(), end = m_pageOverlayLayers.end(); it != end; ++it) {
         GraphicsLayer* layer = it->value.get();
@@ -402,14 +401,9 @@
             tiledBacking->setExposedRect(exposedRect);
 }
 
-void TiledCoreAnimationDrawingArea::mainFrameScrollabilityChanged(bool isScrollable)
+void TiledCoreAnimationDrawingArea::mainFrameScrollabilityChanged(bool)
 {
-    m_clipsToExposedRect = !isScrollable;
-    mainFrameTiledBacking()->setClipsToExposedRect(!isScrollable);
-
-    for (PageOverlayLayerMap::iterator it = m_pageOverlayLayers.begin(), end = m_pageOverlayLayers.end(); it != end; ++it)
-        if (TiledBacking* tiledBacking = it->value->tiledBacking())
-            tiledBacking->setClipsToExposedRect(!isScrollable);
+    updateMainFrameClipsToExposedRect();
 }
 
 void TiledCoreAnimationDrawingArea::updateGeometry(const IntSize& viewSize, const IntSize& layerPosition)
@@ -515,6 +509,28 @@
         m_layerHostingContext->setColorSpace(colorSpace.get());
 }
 
+void TiledCoreAnimationDrawingArea::updateMainFrameClipsToExposedRect()
+{
+    bool isScrollable = m_webPage->mainFrameIsScrollable();
+
+    if (TiledBacking* tiledBacking = mainFrameTiledBacking())
+        tiledBacking->setClipsToExposedRect(!isScrollable);
+
+    for (PageOverlayLayerMap::iterator it = m_pageOverlayLayers.begin(), end = m_pageOverlayLayers.end(); it != end; ++it)
+        if (TiledBacking* tiledBacking = it->value->tiledBacking())
+            tiledBacking->setClipsToExposedRect(!isScrollable);
+
+    Frame* frame = m_webPage->corePage()->mainFrame();
+    if (!frame)
+        return;
+
+    FrameView* frameView = frame->view();
+    if (!frameView)
+        return;
+
+    frameView->adjustTiledBackingCoverage();
+}
+
 void TiledCoreAnimationDrawingArea::setRootCompositingLayer(CALayer *layer)
 {
     ASSERT(!m_layerTreeStateIsFrozen);
@@ -536,9 +552,10 @@
     if (TiledBacking* tiledBacking = mainFrameTiledBacking()) {
         tiledBacking->setAggressivelyRetainsTiles(m_webPage->corePage()->settings()->aggressiveTileRetentionEnabled());
         tiledBacking->setExposedRect(m_exposedRect);
-        tiledBacking->setClipsToExposedRect(!m_webPage->mainFrameIsScrollable());
     }
 
+    updateMainFrameClipsToExposedRect();
+
     updateDebugInfoLayer(m_webPage->corePage()->settings()->showTiledScrollingIndicator());
 
     [CATransaction commit];
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to