Closed
Bug 245131
Opened 20 years ago
Closed 20 years ago
[FIXr]Don't flush reflows on document in window when looking for scrollinfo for window
Categories
(Core :: DOM: Core & HTML, defect, P1)
Tracking
()
RESOLVED
FIXED
mozilla1.8alpha3
People
(Reporter: bzbarsky, Assigned: bzbarsky)
References
Details
(Keywords: perf)
Attachments
(3 files, 1 obsolete file)
10.86 KB,
patch
|
roc
:
review+
jst
:
superreview+
|
Details | Diff | Splinter Review |
2.04 KB,
image/gif
|
Details | |
2.06 KB,
image/gif
|
Details |
As I understand it, the scrollinfo for the root scrolling view in a window doesn't really depend on the document that lives inside it. So we should be able to just flush reflows for the _parent_ when getting scrollinfo...
Assignee | ||
Comment 1•20 years ago
|
||
Assignee | ||
Comment 2•20 years ago
|
||
Comment on attachment 149660 [details] [diff] [review] Proposed patch roc, what do you think? Note that there're several callers of this GetScrollInfo method, which get various data off the view. I _think_ they're all OK with this change...
Attachment #149660 -
Flags: review?(roc)
Assignee | ||
Updated•20 years ago
|
Priority: -- → P1
Summary: Don't flush reflows on document in window when looking for scrollinfo for window → [FIX]Don't flush reflows on document in window when looking for scrollinfo for window
Target Milestone: --- → mozilla1.8alpha2
For the callers ScrollTo, ScrollBy, ScrollByLines, ScrollByPages, don't we need to flush layout of the current document before we scroll it? Otherwise the document might be shorter than it's supposed to be, and the scroll would be inappropriately clamped. OTOH I *don't* think we need to layout the parent for these, except for ScrollByPages where we probably should. For GetScrollMaxXY, we definitely should layout the current document to find out what the correct values of its width and height are. We also need to layout the parent. And for GetScrollXY, we need to layout the current document in case its height decreases, clamping the scroll position. We don't need to layout the parent. So I don't see how we can avoid laying out the current document here...
Assignee | ||
Comment 4•20 years ago
|
||
Hmm.. yeah... laying out the current document is the problem. Specifically, the DHTML testcase I'm looking at (bug 186442) uses some sort of DHTML library that checks window.scrollX/window.scrollY to make sure that the snoflakes stay in the "visible area". It ends up getting these properties for each snowflake. So on that testcase, if we have 100 snowflakes we would end up doing 100 separate reflows to reposition them (200, actually, since we end up with separate reflows for setting .left and .top). Further, the whole thing defeats the lazy style reresolution optimization I've been working on. So not having to flush on each of those gets makes that testcase run easily twice as fast, possibly 3-4 times (since a single reflow of multiple frames is much faster than a whole bunch of reflows). Note that in that testcase the scroll position is always 0... Can we at least attempt to optimize GetScrollXY for cases where the scroll position obviously can't decrease? Can it decrease if it's already smaller than the window size? If not, it may be worth it to just special-case 0....
Zero is definitely an easy case, and also extremely common, so it makes sense to special case it. I'm trying to think of a reasonable situation where layout can actually decrease the document height or width, but I can't.
Assignee | ||
Comment 6•20 years ago
|
||
Well... layout of the _parent_ can certainly decrease the document width or height. In any case, I guess what I'll do is hoist the flush out of GetScrollInfo to callers. Does that seem reasonable? Then GetScrollXY can check whether it got (0,0) and if not, flush and reget.
> Well... layout of the _parent_ can certainly decrease the document width or > height. Sure, I meant layout of the child :-) There are some weird cases like a tiny image which is smaller than the placeholder. Delayed stylesheet loading of course (do we ever render these days before the stylesheet has loaded?). > In any case, I guess what I'll do is hoist the flush out of GetScrollInfo to > callers. Does that seem reasonable? Then GetScrollXY can check whether it > got (0,0) and if not, flush and reget. Sounds like a good plan.
Attachment #149660 -
Flags: review?(roc) → review-
Assignee | ||
Comment 8•20 years ago
|
||
Attachment #149660 -
Attachment is obsolete: true
Assignee | ||
Comment 9•20 years ago
|
||
Comment on attachment 153134 [details] [diff] [review] Updated to review comments roc, jst, would you review?
Attachment #153134 -
Flags: superreview?(jst)
Attachment #153134 -
Flags: review?(roc)
Comment 10•20 years ago
|
||
Comment on attachment 153134 [details] [diff] [review] Updated to review comments sr=jst
Attachment #153134 -
Flags: superreview?(jst) → superreview+
Attachment #153134 -
Flags: review?(roc) → review+
Assignee | ||
Updated•20 years ago
|
Summary: [FIX]Don't flush reflows on document in window when looking for scrollinfo for window → [FIXr]Don't flush reflows on document in window when looking for scrollinfo for window
Assignee | ||
Comment 11•20 years ago
|
||
Checked in.
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Target Milestone: mozilla1.8alpha2 → mozilla1.8alpha3
Comment 12•20 years ago
|
||
We use heavy amounts of DHTML in our newsgroup. This seems to have had a dramatic effect on performance (positive)see attachments Analysis based on a branch build of Thunderbird prior to this patch vs the latest trunk build. Platform is Win98 1.4 gig P3-s I am using this bug to request inclusion in Thunderbird branch builds, and I assume Firefox would benefit as well. If this is not an appropriate way to make this request..then sorry for the spam.
Comment 13•20 years ago
|
||
Assignee | ||
Comment 14•20 years ago
|
||
Someone would need to merge the patch to branch. It depends on quite a number of changes that have happened on the trunk. And I'd like this to get some trunk testing before we even think of putting this on branch.
Comment 15•20 years ago
|
||
Comment 16•20 years ago
|
||
http://bugzilla.mozilla.org/show_bug.cgi?id=232714 is one good example,also you might want to look through my MM tracking bug http://bugzilla.mozilla.org/show_bug.cgi?id=240183 The newsgroup I referred to is snews://secnews.netscape.com.netscape.test.multimedia port #563 Some old NC users, but they are coming along
Updated•5 years ago
|
Component: DOM → DOM: Core & HTML
You need to log in
before you can comment on or make changes to this bug.
Description
•