Title: [232206] trunk/Source/WebCore
- Revision
- 232206
- Author
- [email protected]
- Date
- 2018-05-25 14:42:52 -0700 (Fri, 25 May 2018)
Log Message
iBooks: text can disappear/flash during finger drag highlight
https://bugs.webkit.org/show_bug.cgi?id=185993
<rdar://problem/34026943>
Reviewed by Simon Fraser.
Reuse existing tiles when override rect is fully covered by the active grid.
Also, recover dropped tiles if override rect forces us to create new ones.
Unable to create a reproducible test case.
* platform/ios/LegacyTileCache.h:
* platform/ios/LegacyTileCache.mm:
(WebCore::LegacyTileCache::setOverrideVisibleRect):
* platform/ios/LegacyTileLayer.mm:
(-[LegacyTileHostLayer renderInContext:]):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (232205 => 232206)
--- trunk/Source/WebCore/ChangeLog 2018-05-25 21:42:22 UTC (rev 232205)
+++ trunk/Source/WebCore/ChangeLog 2018-05-25 21:42:52 UTC (rev 232206)
@@ -1,3 +1,22 @@
+2018-05-25 Zalan Bujtas <[email protected]>
+
+ iBooks: text can disappear/flash during finger drag highlight
+ https://bugs.webkit.org/show_bug.cgi?id=185993
+ <rdar://problem/34026943>
+
+ Reviewed by Simon Fraser.
+
+ Reuse existing tiles when override rect is fully covered by the active grid.
+ Also, recover dropped tiles if override rect forces us to create new ones.
+
+ Unable to create a reproducible test case.
+
+ * platform/ios/LegacyTileCache.h:
+ * platform/ios/LegacyTileCache.mm:
+ (WebCore::LegacyTileCache::setOverrideVisibleRect):
+ * platform/ios/LegacyTileLayer.mm:
+ (-[LegacyTileHostLayer renderInContext:]):
+
2018-05-25 Eric Carlson <[email protected]>
Encode ISOWebVTTCue "strings" when logging
Modified: trunk/Source/WebCore/platform/ios/LegacyTileCache.h (232205 => 232206)
--- trunk/Source/WebCore/platform/ios/LegacyTileCache.h 2018-05-25 21:42:22 UTC (rev 232205)
+++ trunk/Source/WebCore/platform/ios/LegacyTileCache.h 2018-05-25 21:42:52 UTC (rev 232206)
@@ -142,7 +142,8 @@
CALayer* hostLayer() const;
unsigned tileCapacityForGrid(LegacyTileGrid*);
Color colorForGridTileBorder(LegacyTileGrid*) const;
- void setOverrideVisibleRect(std::optional<FloatRect>);
+ bool setOverrideVisibleRect(const FloatRect&);
+ void clearOverrideVisibleRect() { m_overrideVisibleRect = std::nullopt; }
void doPendingRepaints();
Modified: trunk/Source/WebCore/platform/ios/LegacyTileCache.mm (232205 => 232206)
--- trunk/Source/WebCore/platform/ios/LegacyTileCache.mm 2018-05-25 21:42:22 UTC (rev 232205)
+++ trunk/Source/WebCore/platform/ios/LegacyTileCache.mm 2018-05-25 21:42:52 UTC (rev 232206)
@@ -99,9 +99,13 @@
return [layer convertRect:[m_window extendedVisibleRect] fromLayer:hostLayer()];
}
-void LegacyTileCache::setOverrideVisibleRect(std::optional<FloatRect> rect)
+bool LegacyTileCache::setOverrideVisibleRect(const FloatRect& rect)
{
m_overrideVisibleRect = rect;
+ auto coveredByExistingTiles = false;
+ if (activeTileGrid())
+ coveredByExistingTiles = activeTileGrid()->tilesCover(enclosingIntRect(m_overrideVisibleRect.value()));
+ return coveredByExistingTiles;
}
bool LegacyTileCache::tilesOpaque() const
Modified: trunk/Source/WebCore/platform/ios/LegacyTileLayer.mm (232205 => 232206)
--- trunk/Source/WebCore/platform/ios/LegacyTileLayer.mm 2018-05-25 21:42:22 UTC (rev 232205)
+++ trunk/Source/WebCore/platform/ios/LegacyTileLayer.mm 2018-05-25 21:42:52 UTC (rev 232206)
@@ -59,12 +59,15 @@
WebThreadLock();
CGRect dirtyRect = CGContextGetClipBoundingBox(context);
- _tileGrid->tileCache().setOverrideVisibleRect(WebCore::FloatRect(dirtyRect));
- _tileGrid->tileCache().doLayoutTiles();
+ auto useExistingTiles = _tileGrid->tileCache().setOverrideVisibleRect(WebCore::FloatRect(dirtyRect));
+ if (!useExistingTiles)
+ _tileGrid->tileCache().doLayoutTiles();
[super renderInContext:context];
- _tileGrid->tileCache().setOverrideVisibleRect(std::nullopt);
+ _tileGrid->tileCache().clearOverrideVisibleRect();
+ if (!useExistingTiles)
+ _tileGrid->tileCache().doLayoutTiles();
}
@end
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes