Open Bug 260191 Opened 17 years ago Updated 13 years ago

XUL window reflow inefficiency

Categories

(Core :: XUL, defect)

x86
Windows XP
defect
Not set
normal

Tracking

()

People

(Reporter: bernd_mozilla, Unassigned)

Details

(Keywords: perf, testcase, Whiteboard: [reflow-refactor])

Attachments

(2 files)

592 bytes, application/vnd.mozilla.xul+xml
Details
261 bytes, application/vnd.mozilla.xul+xml
Details
if you look at the reflow log of a simple xul window:
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  xmlns:html="http://www.w3.org/1999/xhtml" orient="vertical"
  style="width: 300px">

</window>

you will see that it reflows its children tree times with an initial reflow.
This is IHMO wrong and the intial reflow is the most expensive reflow (like
style change) it forbids any reflow optimization. One would expect a initial
reflow and then a resize reflow. But these two unconstrained initial reflows are
too much.

VP 0249B480 r=0 a=7344,3456 c=7344,3456 cnt=849
 root 0249B588 r=0 a=7344,3456 c=7344,3456 cnt=850
  place 0249BE84 r=0 a=UC,UC c=UC,UC cnt=851
  place 0249BE84 d=0,0
  place 0249BE84 r=0 a=UC,UC c=UC,UC cnt=852
  place 0249BE84 d=0,0
  place 0249BE84 r=0 a=UC,UC c=UC,UC cnt=853
  place 0249BE84 d=0,0
  area 0249BDCC r=0 a=UC,UC c=UC,UC cnt=854
  area 0249BDCC d=0,0
  area 0249BDCC r=0 a=UC,UC c=UC,UC cnt=855
  area 0249BDCC d=0,0
  area 0249BDCC r=0 a=0,UC c=0,0 cnt=856
  area 0249BDCC d=0,0
  place 0249BE84 r=0 a=7344,UC c=7344,0 cnt=857
  place 0249BE84 d=0,0
 root 0249B588 d=7344,3456
VP 0249B480 d=7344,3456

I believe this happens at the RefreshSizeCache function

http://lxr.mozilla.org/seamonkey/source/layout/xul/base/src/nsBoxToBlockAdaptor.cpp#299

The function itself is not a problem but the callers:

nsBoxToBlockAdaptor::GetPrefSize
nsBoxToBlockAdaptor::GetMinSize
nsBoxToBlockAdaptor::GetAscent


If we now look at nsSprocketLayout::Layout

 we see it first call GetAscent
and later the GetPrefSize and GetMinSize and there are the two bogus reflows
Attached file xul window only
Keywords: perf
Summary: XUL window reflow reflow ineffciency → XUL window reflow ineffciency
the mew comment at
http://lxr.mozilla.org/seamonkey/source/layout/xul/base/src/nsBoxToBlockAdaptor.cpp#311
is completely wrong for normal frames, it might be with xul frames but html
frames can show on every reflow the MEW.
Summary: XUL window reflow ineffciency → XUL window reflow inefficiency
Whiteboard: [reflow-refactor]
QA Contact: xptoolkit.xul
Component: XP Toolkit/Widgets: XUL → XUL
QA Contact: xptoolkit.xul → xptoolkit.widgets
You need to log in before you can comment on or make changes to this bug.