Summary: | [CSSRegions] RenderFlowThread::renderRegionForLine should use a faster search method | ||
---|---|---|---|
Product: | WebKit | Reporter: | Alexandru Chiculita <achicu> |
Component: | Layout and Rendering | Assignee: | Andrei Bucur <abucur> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | abucur, donggwan.kim, eric, esprehn+autocc, ojan.autocc, simon.fraser, webkit-bug-importer, WebkitBugTracker, webkit.review.bot |
Priority: | P2 | Keywords: | AdobeTracked, InRadar |
Version: | 528+ (Nightly build) | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Bug Depends on: | 113303 | ||
Bug Blocks: | 57312 | ||
Attachments: |
Description
Alexandru Chiculita
2011-08-24 23:17:47 PDT
Created attachment 158840 [details]
A sample from a client, that might prove to be a good test-case for this. Addmitedly, the algorithm is (very) naive, but it shouldn't take 5 minutes to finish, nonetheless.
Created attachment 196358 [details]
Patch
Comment on attachment 196358 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=196358&action=review > Source/WebCore/rendering/RenderFlowThread.cpp:968 > + if (interval.data()->isRenderRegionSet()) Is it possible we'd want to return a region set that's not the last region? The old code seemed to have allowed it. Comment on attachment 196358 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=196358&action=review Please handle expandToEncompassFlowThreadContentsIfNeeded() which hacks the flow thread portion rect. You'll want to make sure that interval gets correctly updated. > Source/WebCore/rendering/RenderFlowThread.cpp:827 > + m_regionIntervalTree.add(RegionIntervalTree::createInterval(regionRect.y(), regionRect.maxY(), region)); I think because of writing modes it would read better not to use y() and maxY() here. You could just use logicalHeight and logicalHeight + regionLogicalHeight, and I think that would read slightly better. >> Source/WebCore/rendering/RenderFlowThread.cpp:968 >> + if (interval.data()->isRenderRegionSet()) > > Is it possible we'd want to return a region set that's not the last region? The old code seemed to have allowed it. Yes, it will be possible to have multiple region sets. Your code is going to be applicable to region sets. Created attachment 196363 [details]
Patch
Comment on attachment 196363 [details]
Patch
r=me
Comment on attachment 196363 [details] Patch Clearing flags on attachment: 196363 Committed r147620: <http://trac.webkit.org/changeset/147620> All reviewed patches have been landed. Closing bug. |