Title: [143537] trunk
Revision
143537
Author
simon.fra...@apple.com
Date
2013-02-20 16:48:45 -0800 (Wed, 20 Feb 2013)

Log Message

Zoomed, slow-scrolling pages keep recreating tiles when scrolled
https://bugs.webkit.org/show_bug.cgi?id=110379

Source/WebCore:

Reviewed by Tim Horton.

On slow-scrolling pages the TileCache makes the tiles the size of
the visible rect to minimize per-tile painting overhead. If the size
of that rect changes, the TileCache re-creates all the tiles.

This was a problem whem zoomed, because mapping the visible rect
through the scale transform and then rounding it would cause the
size to keep changing, causing lots of tile re-creation.

Fix by carrying the visibleRect around as a FloatRect, and doing
the same for the exposedRect. We then only expand to integers
when computing the tile size. This also fixes an issue where we could
sometimes make extra tiles because of fractional bits of tiles at the edges,
as shown by the test result change.

* platform/graphics/TiledBacking.h:
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::updateVisibleRect):
* platform/graphics/ca/mac/TileCache.h:
* platform/graphics/ca/mac/TileCache.mm:
(WebCore::TileCache::setVisibleRect):
(WebCore::TileCache::setExposedRect):
(WebCore::TileCache::prepopulateRect):
(WebCore::TileCache::computeTileCoverageRect):
(WebCore::TileCache::tileSizeForCoverageRect):
(WebCore::TileCache::blankPixelCountForTiles):
(WebCore::TileCache::revalidateTiles):
(WebCore::TileCache::ensureTilesForRect):
* platform/graphics/ca/mac/WebTileLayer.mm:
(-[WebTileLayer logFilledFreshTile]):

Source/WebKit2:

Reviewed by Tim Horton.

Make the visible rect and exposed rects passed through
the drawing area to the tile cache FloatRects instead of IntRects.

* UIProcess/API/mac/WKView.mm:
(-[WKView setFrameSize:]):
(-[WKView _updateWindowAndViewFrames]):
(-[WKView enableFrameSizeUpdates]):
(-[WKView setMinimumWidthForAutoLayout:]):
* UIProcess/WebPageProxy.h:
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::viewExposedRectChanged):
* WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::setExposedRect):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::viewExposedRectChanged):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
(TiledCoreAnimationDrawingArea):
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::setExposedRect):

LayoutTests:

Reviewed by Tim Horton.

This test now just has one tile, rather than four. There is an apparent issue
with the integral tile cache coverage rect being smaller than the visible rect.
This is caused by rounding when dumping the tile coverage rect.

* platform/mac-wk2/tiled-drawing/tile-size-slow-zoomed-expected.txt:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (143536 => 143537)


--- trunk/LayoutTests/ChangeLog	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/LayoutTests/ChangeLog	2013-02-21 00:48:45 UTC (rev 143537)
@@ -1,3 +1,16 @@
+2013-02-20  Simon Fraser  <simon.fra...@apple.com>
+
+        Zoomed, slow-scrolling pages keep recreating tiles when scrolled
+        https://bugs.webkit.org/show_bug.cgi?id=110379
+
+        Reviewed by Tim Horton.
+        
+        This test now just has one tile, rather than four. There is an apparent issue
+        with the integral tile cache coverage rect being smaller than the visible rect.
+        This is caused by rounding when dumping the tile coverage rect.
+
+        * platform/mac-wk2/tiled-drawing/tile-size-slow-zoomed-expected.txt:
+
 2013-02-20  Julien Chaffraix  <jchaffr...@webkit.org>
 
         [CSS Grid Layout] Implement the auto-placement algorithm without grid growth

Modified: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/tile-size-slow-zoomed-expected.txt (143536 => 143537)


--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/tile-size-slow-zoomed-expected.txt	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/tile-size-slow-zoomed-expected.txt	2013-02-21 00:48:45 UTC (rev 143537)
@@ -10,9 +10,9 @@
       (backgroundColor #FFFFFF)
       (transform [1.70 0.00 0.00 0.00] [0.00 1.70 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00])
       (visible rect 0.00, 0.00 461.76 x 344.12)
-      (tile cache coverage 0, 0 784 x 584)
-      (tile size 785 x 586)
-      (top left tile 0, 0 tiles grid 2 x 2)
+      (tile cache coverage 0, 0 461 x 344)
+      (tile size 785 x 585)
+      (top left tile 0, 0 tiles grid 1 x 1)
       (children 1
         (GraphicsLayer
           (visible rect 0.00, 0.00 0.00 x 0.00)

Modified: trunk/Source/WebCore/ChangeLog (143536 => 143537)


--- trunk/Source/WebCore/ChangeLog	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebCore/ChangeLog	2013-02-21 00:48:45 UTC (rev 143537)
@@ -1,3 +1,40 @@
+2013-02-20  Simon Fraser  <simon.fra...@apple.com>
+
+        Zoomed, slow-scrolling pages keep recreating tiles when scrolled
+        https://bugs.webkit.org/show_bug.cgi?id=110379
+
+        Reviewed by Tim Horton.
+
+        On slow-scrolling pages the TileCache makes the tiles the size of
+        the visible rect to minimize per-tile painting overhead. If the size
+        of that rect changes, the TileCache re-creates all the tiles.
+        
+        This was a problem whem zoomed, because mapping the visible rect
+        through the scale transform and then rounding it would cause the
+        size to keep changing, causing lots of tile re-creation.
+        
+        Fix by carrying the visibleRect around as a FloatRect, and doing
+        the same for the exposedRect. We then only expand to integers
+        when computing the tile size. This also fixes an issue where we could
+        sometimes make extra tiles because of fractional bits of tiles at the edges,
+        as shown by the test result change.
+
+        * platform/graphics/TiledBacking.h:
+        * platform/graphics/ca/GraphicsLayerCA.cpp:
+        (WebCore::GraphicsLayerCA::updateVisibleRect):
+        * platform/graphics/ca/mac/TileCache.h:
+        * platform/graphics/ca/mac/TileCache.mm:
+        (WebCore::TileCache::setVisibleRect):
+        (WebCore::TileCache::setExposedRect):
+        (WebCore::TileCache::prepopulateRect):
+        (WebCore::TileCache::computeTileCoverageRect):
+        (WebCore::TileCache::tileSizeForCoverageRect):
+        (WebCore::TileCache::blankPixelCountForTiles):
+        (WebCore::TileCache::revalidateTiles):
+        (WebCore::TileCache::ensureTilesForRect):
+        * platform/graphics/ca/mac/WebTileLayer.mm:
+        (-[WebTileLayer logFilledFreshTile]):
+
 2013-02-20  Julien Chaffraix  <jchaffr...@webkit.org>
 
         [CSS Grid Layout] Implement the auto-placement algorithm without grid growth

Modified: trunk/Source/WebCore/platform/graphics/TiledBacking.h (143536 => 143537)


--- trunk/Source/WebCore/platform/graphics/TiledBacking.h	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebCore/platform/graphics/TiledBacking.h	2013-02-21 00:48:45 UTC (rev 143537)
@@ -44,13 +44,13 @@
 public:
     virtual ~TiledBacking() { }
 
-    virtual void setVisibleRect(const IntRect&) = 0;
-    virtual IntRect visibleRect() const = 0;
+    virtual void setVisibleRect(const FloatRect&) = 0;
+    virtual FloatRect visibleRect() const = 0;
 
-    virtual void setExposedRect(const IntRect&) = 0;
+    virtual void setExposedRect(const FloatRect&) = 0;
     virtual void setClipsToExposedRect(bool) = 0;
 
-    virtual void prepopulateRect(const IntRect&) = 0;
+    virtual void prepopulateRect(const FloatRect&) = 0;
 
     virtual void setIsInWindow(bool) = 0;
 

Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp (143536 => 143537)


--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2013-02-21 00:48:45 UTC (rev 143537)
@@ -1621,7 +1621,7 @@
     if (m_layer->layerType() == PlatformCALayer::LayerTypeTileCacheLayer)
         tileArea = adjustTiledLayerVisibleRect(tiledBacking(), oldVisibleRect, m_sizeAtLastVisibleRectUpdate);
 
-    tiledBacking()->setVisibleRect(enclosingIntRect(tileArea));
+    tiledBacking()->setVisibleRect(tileArea);
 
     m_sizeAtLastVisibleRectUpdate = m_size;
 }

Modified: trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.h (143536 => 143537)


--- trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.h	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.h	2013-02-21 00:48:45 UTC (rev 143537)
@@ -26,6 +26,7 @@
 #ifndef TileCache_h
 #define TileCache_h
 
+#include "FloatRect.h"
 #include "IntPointHash.h"
 #include "IntRect.h"
 #include "TiledBacking.h"
@@ -76,10 +77,10 @@
     void setTileDebugBorderWidth(float);
     void setTileDebugBorderColor(CGColorRef);
 
-    virtual IntRect visibleRect() const OVERRIDE { return m_visibleRect; }
+    virtual FloatRect visibleRect() const OVERRIDE { return m_visibleRect; }
 
     unsigned blankPixelCount() const;
-    static unsigned blankPixelCountForTiles(const WebTileLayerList&, const IntRect&, const IntPoint&);
+    static unsigned blankPixelCountForTiles(const WebTileLayerList&, const FloatRect&, const IntPoint&);
 
     // Only public for the WebTileCacheMapLayer.
     void drawTileMapContents(CGContextRef, CGRect);
@@ -105,10 +106,10 @@
     TileCache(WebTileCacheLayer*);
 
     // TiledBacking member functions.
-    virtual void setVisibleRect(const IntRect&) OVERRIDE;
-    virtual void setExposedRect(const IntRect&) OVERRIDE;
+    virtual void setVisibleRect(const FloatRect&) OVERRIDE;
+    virtual void setExposedRect(const FloatRect&) OVERRIDE;
     virtual void setClipsToExposedRect(bool) OVERRIDE;
-    virtual void prepopulateRect(const IntRect&) OVERRIDE;
+    virtual void prepopulateRect(const FloatRect&) OVERRIDE;
     virtual void setIsInWindow(bool) OVERRIDE;
     virtual void setTileCoverage(TileCoverage) OVERRIDE;
     virtual TileCoverage tileCoverage() const OVERRIDE { return m_tileCoverage; }
@@ -130,8 +131,8 @@
     IntRect rectForTileIndex(const TileIndex&) const;
     void getTileIndexRangeForRect(const IntRect&, TileIndex& topLeft, TileIndex& bottomRight) const;
 
-    IntRect computeTileCoverageRect(const IntRect& previousVisibleRect) const;
-    IntSize tileSizeForCoverageRect(const IntRect&) const;
+    FloatRect computeTileCoverageRect(const FloatRect& previousVisibleRect) const;
+    IntSize tileSizeForCoverageRect(const FloatRect&) const;
 
     void scheduleTileRevalidation(double interval);
     void tileRevalidationTimerFired(Timer<TileCache>*);
@@ -142,7 +143,7 @@
     typedef unsigned TileValidationPolicyFlags;
 
     void revalidateTiles(TileValidationPolicyFlags foregroundValidationPolicy = 0, TileValidationPolicyFlags backgroundValidationPolicy = 0);
-    void ensureTilesForRect(const IntRect&);
+    void ensureTilesForRect(const FloatRect&);
     void updateTileCoverageMap();
 
     void removeAllTiles();
@@ -168,9 +169,9 @@
     RetainPtr<WebTiledScrollingIndicatorLayer> m_tiledScrollingIndicatorLayer; // Used for coverage visualization.
 
     IntSize m_tileSize;
-    IntRect m_visibleRect;
-    IntRect m_visibleRectAtLastRevalidate;
-    IntRect m_exposedRect; // The exposed area of containing platform views.
+    FloatRect m_visibleRect;
+    FloatRect m_visibleRectAtLastRevalidate;
+    FloatRect m_exposedRect; // The exposed area of containing platform views.
 
     typedef HashMap<TileIndex, TileInfo> TileMap;
     TileMap m_tiles;

Modified: trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.mm (143536 => 143537)


--- trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.mm	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.mm	2013-02-21 00:48:45 UTC (rev 143537)
@@ -297,7 +297,7 @@
     }
 }
 
-void TileCache::setVisibleRect(const IntRect& visibleRect)
+void TileCache::setVisibleRect(const FloatRect& visibleRect)
 {
     if (m_visibleRect == visibleRect)
         return;
@@ -306,7 +306,7 @@
     revalidateTiles();
 }
 
-void TileCache::setExposedRect(const IntRect& exposedRect)
+void TileCache::setExposedRect(const FloatRect& exposedRect)
 {
     if (m_exposedRect == exposedRect)
         return;
@@ -327,7 +327,7 @@
         revalidateTiles();
 }
 
-void TileCache::prepopulateRect(const IntRect& rect)
+void TileCache::prepopulateRect(const FloatRect& rect)
 {
     ensureTilesForRect(rect);
 }
@@ -417,9 +417,9 @@
     bottomRight.setY(max(bottomYRatio - 1, 0));
 }
 
-IntRect TileCache::computeTileCoverageRect(const IntRect& previousVisibleRect) const
+FloatRect TileCache::computeTileCoverageRect(const FloatRect& previousVisibleRect) const
 {
-    IntRect visibleRect = m_visibleRect;
+    FloatRect visibleRect = m_visibleRect;
 
     if (m_clipsToExposedRect)
         visibleRect.intersect(m_exposedRect);
@@ -433,8 +433,8 @@
     bool largeVisibleRectChange = !previousVisibleRect.isEmpty() && !visibleRect.intersects(previousVisibleRect);
     
     // FIXME: look at how far the document can scroll in each dimension.
-    int coverageHorizontalSize = visibleRect.width();
-    int coverageVerticalSize = visibleRect.height();
+    float coverageHorizontalSize = visibleRect.width();
+    float coverageVerticalSize = visibleRect.height();
     
     // Inflate the coverage rect so that it covers 2x of the visible width and 3x of the visible height.
     // These values were chosen because it's more common to have tall pages and to scroll vertically,
@@ -446,24 +446,24 @@
         coverageVerticalSize *= 3;
 
     // Don't extend coverage before 0 or after the end.
-    IntRect coverageBounds = bounds();
-    int coverageLeft = visibleRect.x() - (coverageHorizontalSize - visibleRect.width()) / 2;
+    FloatRect coverageBounds = bounds();
+    float coverageLeft = visibleRect.x() - (coverageHorizontalSize - visibleRect.width()) / 2;
     coverageLeft = min(coverageLeft, coverageBounds.maxX() - coverageHorizontalSize);
     coverageLeft = max(coverageLeft, coverageBounds.x());
 
-    int coverageTop = visibleRect.y() - (coverageVerticalSize - visibleRect.height()) / 2;
+    float coverageTop = visibleRect.y() - (coverageVerticalSize - visibleRect.height()) / 2;
     coverageTop = min(coverageTop, coverageBounds.maxY() - coverageVerticalSize);
     coverageTop = max(coverageTop, coverageBounds.y());
 
-    return IntRect(coverageLeft, coverageTop, coverageHorizontalSize, coverageVerticalSize);
+    return FloatRect(coverageLeft, coverageTop, coverageHorizontalSize, coverageVerticalSize);
 }
 
-IntSize TileCache::tileSizeForCoverageRect(const IntRect& coverageRect) const
+IntSize TileCache::tileSizeForCoverageRect(const FloatRect& coverageRect) const
 {
     if (m_tileCoverage & CoverageForSlowScrolling) {
-        IntSize tileSize = coverageRect.size();
+        FloatSize tileSize = coverageRect.size();
         tileSize.scale(m_scale);
-        return tileSize;
+        return expandedIntSize(tileSize);
     }
 
     return IntSize(defaultTileCacheWidth, defaultTileCacheHeight);
@@ -495,21 +495,21 @@
     return blankPixelCountForTiles(tiles, m_visibleRect, IntPoint(0,0));
 }
 
-unsigned TileCache::blankPixelCountForTiles(const WebTileLayerList& tiles, const IntRect& visibleRect, const IntPoint& tileTranslation)
+unsigned TileCache::blankPixelCountForTiles(const WebTileLayerList& tiles, const FloatRect& visibleRect, const IntPoint& tileTranslation)
 {
     Region paintedVisibleTiles;
 
     for (WebTileLayerList::const_iterator it = tiles.begin(), end = tiles.end(); it != end; ++it) {
         const WebTileLayer* tileLayer = it->get();
 
-        IntRect visiblePart(CGRectOffset([tileLayer frame], tileTranslation.x(), tileTranslation.y()));
+        FloatRect visiblePart(CGRectOffset([tileLayer frame], tileTranslation.x(), tileTranslation.y()));
         visiblePart.intersect(visibleRect);
 
         if (!visiblePart.isEmpty())
-            paintedVisibleTiles.unite(visiblePart);
+            paintedVisibleTiles.unite(enclosingIntRect(visiblePart));
     }
 
-    Region uncoveredRegion(visibleRect);
+    Region uncoveredRegion(enclosingIntRect(visibleRect));
     uncoveredRegion.subtract(paintedVisibleTiles);
 
     return uncoveredRegion.totalArea();
@@ -581,7 +581,7 @@
     if (!platformLayer)
         return;
 
-    IntRect visibleRect = m_visibleRect;
+    FloatRect visibleRect = m_visibleRect;
 
     if (m_clipsToExposedRect)
         visibleRect.intersect(m_exposedRect);
@@ -591,7 +591,7 @@
     
     TileValidationPolicyFlags validationPolicy = m_isInWindow ? foregroundValidationPolicy : backgroundValidationPolicy;
     
-    IntRect tileCoverageRect = computeTileCoverageRect(m_visibleRectAtLastRevalidate);
+    FloatRect tileCoverageRect = computeTileCoverageRect(m_visibleRectAtLastRevalidate);
     FloatRect scaledRect(tileCoverageRect);
     scaledRect.scale(m_scale);
     IntRect coverageRectInTileCoords(enclosingIntRect(scaledRect));
@@ -750,7 +750,7 @@
         updateTileCoverageMap();
 }
 
-void TileCache::ensureTilesForRect(const IntRect& rect)
+void TileCache::ensureTilesForRect(const FloatRect& rect)
 {
     if (m_unparentsOffscreenTiles && !m_isInWindow)
         return;

Modified: trunk/Source/WebCore/platform/graphics/ca/mac/WebTileLayer.mm (143536 => 143537)


--- trunk/Source/WebCore/platform/graphics/ca/mac/WebTileLayer.mm	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/WebTileLayer.mm	2013-02-21 00:48:45 UTC (rev 143537)
@@ -78,7 +78,7 @@
 
 - (void)logFilledFreshTile
 {
-    IntRect visiblePart(enclosingIntRect([self frame]));
+    FloatRect visiblePart([self frame]);
     visiblePart.intersect(_tileCache->visibleRect());
 
     if ([self paintCount] == 1 && !visiblePart.isEmpty())

Modified: trunk/Source/WebKit2/ChangeLog (143536 => 143537)


--- trunk/Source/WebKit2/ChangeLog	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebKit2/ChangeLog	2013-02-21 00:48:45 UTC (rev 143537)
@@ -1,3 +1,32 @@
+2013-02-20  Simon Fraser  <simon.fra...@apple.com>
+
+        Zoomed, slow-scrolling pages keep recreating tiles when scrolled
+        https://bugs.webkit.org/show_bug.cgi?id=110379
+
+        Reviewed by Tim Horton.
+
+        Make the visible rect and exposed rects passed through
+        the drawing area to the tile cache FloatRects instead of IntRects.
+
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView setFrameSize:]):
+        (-[WKView _updateWindowAndViewFrames]):
+        (-[WKView enableFrameSizeUpdates]):
+        (-[WKView setMinimumWidthForAutoLayout:]):
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/mac/WebPageProxyMac.mm:
+        (WebKit::WebPageProxy::viewExposedRectChanged):
+        * WebProcess/WebPage/DrawingArea.h:
+        (WebKit::DrawingArea::setExposedRect):
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::viewExposedRectChanged):
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/WebPage.messages.in:
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
+        (TiledCoreAnimationDrawingArea):
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+        (WebKit::TiledCoreAnimationDrawingArea::setExposedRect):
+
 2013-02-20  Dirk Schulze  <k...@webkit.org>
 
         Enable CANVAS_PATH flag

Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (143536 => 143537)


--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2013-02-21 00:48:45 UTC (rev 143537)
@@ -382,7 +382,7 @@
 
     if (![self frameSizeUpdatesDisabled]) {
         if (_data->_expandsToFitContentViaAutoLayout)
-            _data->_page->viewExposedRectChanged(enclosingIntRect([self visibleRect]));
+            _data->_page->viewExposedRectChanged([self visibleRect]);
         [self _setDrawingAreaSize:size];
     }
 }
@@ -398,7 +398,7 @@
     
     _data->_page->windowAndViewFramesChanged(enclosingIntRect(windowFrameInScreenCoordinates), enclosingIntRect(viewFrameInWindowCoordinates), IntPoint(accessibilityPosition));
     if (_data->_expandsToFitContentViaAutoLayout)
-        _data->_page->viewExposedRectChanged(enclosingIntRect([self visibleRect]));
+        _data->_page->viewExposedRectChanged([self visibleRect]);
 }
 
 - (void)renewGState
@@ -3202,7 +3202,7 @@
     
     if (!(--_data->_frameSizeUpdatesDisabledCount)) {
         if (_data->_expandsToFitContentViaAutoLayout)
-            _data->_page->viewExposedRectChanged(enclosingIntRect([self visibleRect]));
+            _data->_page->viewExposedRectChanged([self visibleRect]);
         [self _setDrawingAreaSize:[self frame].size];
     }
 }
@@ -3263,7 +3263,7 @@
     _data->_page->setMinimumLayoutWidth(minimumLayoutWidth);
 
     if (expandsToFit)
-        _data->_page->viewExposedRectChanged(enclosingIntRect([self visibleRect]));
+        _data->_page->viewExposedRectChanged([self visibleRect]);
 
     _data->_page->setMainFrameIsScrollable(!expandsToFit);
 }

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (143536 => 143537)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2013-02-21 00:48:45 UTC (rev 143537)
@@ -382,7 +382,7 @@
 #if PLATFORM(MAC)
     void updateWindowIsVisible(bool windowIsVisible);
     void windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates, const WebCore::IntPoint& accessibilityViewCoordinates);
-    void viewExposedRectChanged(const WebCore::IntRect& exposedRect);
+    void viewExposedRectChanged(const WebCore::FloatRect& exposedRect);
     void setMainFrameIsScrollable(bool);
 
     void setComposition(const String& text, Vector<WebCore::CompositionUnderline> underlines, uint64_t selectionStart, uint64_t selectionEnd, uint64_t replacementRangeStart, uint64_t replacementRangeEnd);

Modified: trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm (143536 => 143537)


--- trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm	2013-02-21 00:48:45 UTC (rev 143537)
@@ -137,7 +137,7 @@
     process()->send(Messages::WebPage::WindowAndViewFramesChanged(windowFrameInScreenCoordinates, viewFrameInWindowCoordinates, accessibilityViewCoordinates), m_pageID);
 }
 
-void WebPageProxy::viewExposedRectChanged(const IntRect& exposedRect)
+void WebPageProxy::viewExposedRectChanged(const FloatRect& exposedRect)
 {
     if (!isValid())
         return;

Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h (143536 => 143537)


--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h	2013-02-21 00:48:45 UTC (rev 143537)
@@ -84,7 +84,7 @@
     virtual void updatePreferences(const WebPreferencesStore&) { }
     virtual void mainFrameContentSizeChanged(const WebCore::IntSize&) { }
 
-    virtual void setExposedRect(const WebCore::IntRect&) { }
+    virtual void setExposedRect(const WebCore::FloatRect&) { }
     virtual void mainFrameScrollabilityChanged(bool) { }
 
 #if USE(ACCELERATED_COMPOSITING)

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (143536 => 143537)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2013-02-21 00:48:45 UTC (rev 143537)
@@ -2911,7 +2911,7 @@
 }
 #endif
 
-void WebPage::viewExposedRectChanged(const IntRect& exposedRect)
+void WebPage::viewExposedRectChanged(const FloatRect& exposedRect)
 {
     m_drawingArea->setExposedRect(exposedRect);
 }

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (143536 => 143537)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2013-02-21 00:48:45 UTC (rev 143537)
@@ -721,7 +721,7 @@
     void drawPagesToPDFFromPDFDocument(CGContextRef, PDFDocument *, const PrintInfo&, uint32_t first, uint32_t count);
 #endif
 
-    void viewExposedRectChanged(const WebCore::IntRect& exposedRect);
+    void viewExposedRectChanged(const WebCore::FloatRect& exposedRect);
     void setMainFrameIsScrollable(bool);
 
     void unapplyEditCommand(uint64_t commandID);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (143536 => 143537)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2013-02-21 00:48:45 UTC (rev 143537)
@@ -256,7 +256,7 @@
 
     SetWindowIsVisible(bool windowIsVisible)
     WindowAndViewFramesChanged(WebCore::IntRect windowFrameInScreenCoordinates, WebCore::IntRect viewFrameInWindowCoordinates, WebCore::IntPoint accessibilityViewCoordinates)
-    ViewExposedRectChanged(WebCore::IntRect exposedRect)
+    ViewExposedRectChanged(WebCore::FloatRect exposedRect)
     SetMainFrameIsScrollable(bool isScrollable)
     RegisterUIProcessAccessibilityTokens(CoreIPC::DataReference elemenToken, CoreIPC::DataReference windowToken)
     GetStringSelectionForPasteboard() -> (WTF::String stringValue)

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


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h	2013-02-21 00:48:45 UTC (rev 143537)
@@ -30,6 +30,7 @@
 
 #include "DrawingArea.h"
 #include "LayerTreeContext.h"
+#include <WebCore/FloatRect.h>
 #include <WebCore/GraphicsLayerClient.h>
 #include <WebCore/LayerFlushScheduler.h>
 #include <WebCore/LayerFlushSchedulerClient.h>
@@ -72,7 +73,7 @@
     virtual void updatePreferences(const WebPreferencesStore&) OVERRIDE;
     virtual void mainFrameContentSizeChanged(const WebCore::IntSize&) OVERRIDE;
 
-    virtual void setExposedRect(const WebCore::IntRect&) OVERRIDE;
+    virtual void setExposedRect(const WebCore::FloatRect&) OVERRIDE;
     virtual void mainFrameScrollabilityChanged(bool) OVERRIDE;
 
     virtual void dispatchAfterEnsuringUpdatedScrollPosition(const Function<void ()>&) OVERRIDE;
@@ -120,7 +121,7 @@
     bool m_isPaintingSuspended;
     bool m_hasRootCompositingLayer;
 
-    WebCore::IntRect m_exposedRect;
+    WebCore::FloatRect m_exposedRect;
 
     WebCore::IntSize m_lastSentIntrinsicContentSize;
     bool m_inUpdateGeometry;

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


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm	2013-02-21 00:45:36 UTC (rev 143536)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm	2013-02-21 00:48:45 UTC (rev 143537)
@@ -339,7 +339,7 @@
         m_webPage->corePage()->resumeScriptedAnimations();
 }
 
-void TiledCoreAnimationDrawingArea::setExposedRect(const IntRect& exposedRect)
+void TiledCoreAnimationDrawingArea::setExposedRect(const FloatRect& exposedRect)
 {
     // FIXME: This should be mapped through the scroll offset, but we need to keep it up to date.
     m_exposedRect = exposedRect;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to