WebKit Bugzilla
Attachment 341324 Details for
Bug 185993
: iBooks: text can disappear/flash during finger drag highlight
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-185993-20180525140454.patch (text/plain), 3.70 KB, created by
zalan
on 2018-05-25 14:04:55 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
zalan
Created:
2018-05-25 14:04:55 PDT
Size:
3.70 KB
patch
obsolete
>Subversion Revision: 232154 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 27918bac55cec3c0e9bd22107f36edbfc7ed2ff8..7f97de9bd3857d6b80a6fdaffa5a8ba869dc5f8e 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,22 @@ >+2018-05-25 Zalan Bujtas <zalan@apple.com> >+ >+ iBooks: text can disappear/flash during finger drag highlight >+ https://bugs.webkit.org/show_bug.cgi?id=185993 >+ <rdar://problem/34026943> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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-24 Zalan Bujtas <zalan@apple.com> > > [LFC] Implement position computation for inflow positioned elements >diff --git a/Source/WebCore/platform/ios/LegacyTileCache.h b/Source/WebCore/platform/ios/LegacyTileCache.h >index 40343b5b513b47166686e40ffd9cd96a05cf28ba..ee55b7461dae82f594bfd296ab389467bb71f162 100644 >--- a/Source/WebCore/platform/ios/LegacyTileCache.h >+++ b/Source/WebCore/platform/ios/LegacyTileCache.h >@@ -142,7 +142,8 @@ public: > 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(); > >diff --git a/Source/WebCore/platform/ios/LegacyTileCache.mm b/Source/WebCore/platform/ios/LegacyTileCache.mm >index 3a02c15ec8aab0aaab71cb2cddd7f02f0ac8f4db..42b4ad68abdeb21c49188fd27cdf2c11dee2cf16 100644 >--- a/Source/WebCore/platform/ios/LegacyTileCache.mm >+++ b/Source/WebCore/platform/ios/LegacyTileCache.mm >@@ -99,9 +99,13 @@ FloatRect LegacyTileCache::visibleRectInLayer(CALayer *layer) const > 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 >diff --git a/Source/WebCore/platform/ios/LegacyTileLayer.mm b/Source/WebCore/platform/ios/LegacyTileLayer.mm >index ad146756a90314ffce1344c3b51f825500f22e5b..8aad67c5e6d2f8a979f86a8f2cc150b531d487a3 100644 >--- a/Source/WebCore/platform/ios/LegacyTileLayer.mm >+++ b/Source/WebCore/platform/ios/LegacyTileLayer.mm >@@ -59,12 +59,15 @@ - (void)renderInContext:(CGContextRef)context > 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 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 185993
: 341324