Hi everyone,
We're starting on incremental layout, in order to improve performance of
the layout benchmarks we are most focused on (`test_hammer_layout` and
`test_slam_layout`). It was also felt, based on past experience, that
having incremental layout from the start is important to get in early
(at least in some form) to avoid problems later.
We're trying to figure out what to do when an inline RenderBox of an
inline flow becomes non-inline. This is a vexing issue, as it violates
the invariant that a flow's descendants and the flow itself are the only
flows that need to be reconstructed from scratch when a box's style
changes. This is because the adjacent inlines turn into anonymous block
flows.
The code in Gecko that is responsible for this is WipeContainingBlock in
nsCSSFrameConstructor.cpp [1]. The code in WebKit that is responsible
for this is childBecameNonInline() in RenderInline.cpp [2].
I'm wondering if any layout gurus have any advice as to what to do here.
What is the most elegant way to handle this case? Is there anything we
should be aware of in order to optimize this path?
Thanks!
Patrick
[1]:
http://mxr.mozilla.org/mozilla-central/source/layout/base/nsCSSFrameConstructor.cpp#11280
[2]:
http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/rendering/RenderInline.cpp
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo