RESOLVED FIXED 111124
RelevantRepaintedObjects heuristic should ensure there is some coverage in the bottom half of the relevant view rect
https://bugs.webkit.org/show_bug.cgi?id=111124
Summary RelevantRepaintedObjects heuristic should ensure there is some coverage in th...
Beth Dakin
Reported 2013-02-28 15:50:16 PST
The RelevantRepaintedObjects heuristic should ensure there is some coverage in the bottom half of the relevant view rect. Making sure we have coverage in both halfs helps to prevent cases where we have a fully loaded menu bar or masthead with no content beneath that. <rdar://problem/12257164>
Attachments
Patch (4.50 KB, patch)
2013-02-28 15:56 PST, Beth Dakin
simon.fraser: review+
Beth Dakin
Comment 1 2013-02-28 15:56:32 PST
Tim Horton
Comment 2 2013-02-28 16:00:24 PST
Comment on attachment 190828 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=190828&action=review > Source/WebCore/page/Page.cpp:1338 > + // both halfs helps to prevent cases where we have a fully loaded menu bar or masthead with halves.
Simon Fraser (smfr)
Comment 3 2013-02-28 16:13:09 PST
Comment on attachment 190828 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=190828&action=review > Source/WebCore/ChangeLog:12 > + We need two Regions now -- one for the top and another for the bottom. Make sure > + we have at least half of our desired coverage in both. This seems a bit western-centric. What about languages that might load a strip down one side first? > Source/WebCore/page/Page.cpp:1348 > + if (topRelevantRect.intersects(snappedPaintRect)) > + m_topRelevantPaintedRegion.unite(snappedPaintRect); > + else > + m_bottomRelevantPaintedRegion.unite(snappedPaintRect); Do you want to ignore coverage over the bottom rect if the paint rect happens to just touch the top rect?
Beth Dakin
Comment 4 2013-02-28 16:41:10 PST
(In reply to comment #3) > (From update of attachment 190828 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=190828&action=review > > > Source/WebCore/ChangeLog:12 > > + We need two Regions now -- one for the top and another for the bottom. Make sure > > + we have at least half of our desired coverage in both. > > This seems a bit western-centric. What about languages that might load a strip down one side first? > Hmm, good point. We should drum up some foreign language test cases and see if they would be improved by looking at left/right. > > Source/WebCore/page/Page.cpp:1348 > > + if (topRelevantRect.intersects(snappedPaintRect)) > > + m_topRelevantPaintedRegion.unite(snappedPaintRect); > > + else > > + m_bottomRelevantPaintedRegion.unite(snappedPaintRect); > > Do you want to ignore coverage over the bottom rect if the paint rect happens to just touch the top rect? Hmm, good point. I changed this code to be more precise: // If the rect straddles both Regions, split it appropriately. if (topRelevantRect.intersects(snappedPaintRect) && bottomRelevantRect.intersects(snappedPaintRect)) { IntRect topIntersection = snappedPaintRect; topIntersection.intersect(pixelSnappedIntRect(topRelevantRect)); m_topRelevantPaintedRegion.unite(topIntersection); IntRect bottomIntersection = snappedPaintRect; bottomIntersection.intersect(pixelSnappedIntRect(bottomRelevantRect)); m_bottomRelevantPaintedRegion.unite(bottomIntersection); } else if (topRelevantRect.intersects(snappedPaintRect)) m_topRelevantPaintedRegion.unite(snappedPaintRect); else m_bottomRelevantPaintedRegion.unite(snappedPaintRect);
Beth Dakin
Comment 5 2013-02-28 16:44:31 PST
Note You need to log in before you can comment on or make changes to this bug.