[GTK][WPE] Incorrect tile coverage when resizing a layer out of the visible area
authormagomez@igalia.com <magomez@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 13 Nov 2018 08:58:09 +0000 (08:58 +0000)
committermagomez@igalia.com <magomez@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 13 Nov 2018 08:58:09 +0000 (08:58 +0000)
https://bugs.webkit.org/show_bug.cgi?id=191545

Reviewed by Žan Doberšek.

Keep track of layer size changes even if they happen when the layer is not in the visible
area, so we can update edge tiles when the layer gets visible.

* platform/graphics/texmap/coordinated/TiledBackingStore.cpp:
(WebCore::TiledBackingStore::createTiles):
* platform/graphics/texmap/coordinated/TiledBackingStore.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@238126 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/texmap/coordinated/TiledBackingStore.cpp
Source/WebCore/platform/graphics/texmap/coordinated/TiledBackingStore.h

index 9b405d4..48d3f0c 100644 (file)
@@ -1,3 +1,17 @@
+2018-11-13  Miguel Gomez  <magomez@igalia.com>
+
+        [GTK][WPE] Incorrect tile coverage when resizing a layer out of the visible area
+        https://bugs.webkit.org/show_bug.cgi?id=191545
+
+        Reviewed by Žan Doberšek.
+
+        Keep track of layer size changes even if they happen when the layer is not in the visible
+        area, so we can update edge tiles when the layer gets visible.
+
+        * platform/graphics/texmap/coordinated/TiledBackingStore.cpp:
+        (WebCore::TiledBackingStore::createTiles):
+        * platform/graphics/texmap/coordinated/TiledBackingStore.h:
+
 2018-11-12  Rob Buis  <rbuis@igalia.com>
 
         Content-Type parameter values should allow empty quoted strings
index e0b0102..3be4311 100644 (file)
@@ -139,7 +139,6 @@ bool TiledBackingStore::visibleAreaIsCovered() const
 void TiledBackingStore::createTiles(const IntRect& visibleRect, const IntRect& scaledContentsRect, float coverAreaMultiplier)
 {
     // Update our backing store geometry.
-    const IntRect previousRect = m_rect;
     m_rect = scaledContentsRect;
     m_trajectoryVector = m_pendingTrajectoryVector;
     m_visibleRect = visibleRect;
@@ -184,8 +183,10 @@ void TiledBackingStore::createTiles(const IntRect& visibleRect, const IntRect& s
 
     // Resize tiles at the edge in case the contents size has changed, but only do so
     // after having dropped tiles outside the keep rect.
-    if (previousRect != m_rect)
+    if (m_previousRect != m_rect) {
+        m_previousRect = m_rect;
         resizeEdgeTiles();
+    }
 
     // Search for the tile position closest to the viewport center that does not yet contain a tile.
     // Which position is considered the closest depends on the tileDistance function.
index 75faee6..f70a2d0 100644 (file)
@@ -91,6 +91,7 @@ private:
     IntRect m_coverRect;
     IntRect m_keepRect;
     IntRect m_rect;
+    IntRect m_previousRect;
 
     float m_contentsScale;