layout: Don't panic if requestAnimationFrame() is called before first layout.

Closes #7115.
This commit is contained in:
Patrick Walton 2015-08-14 15:10:16 -07:00 committed by Ms2ger
parent 14b921ee29
commit a516042edb
3 changed files with 40 additions and 9 deletions

View file

@ -1276,14 +1276,23 @@ impl LayoutTask {
&self.url,
reflow_info.goal);
{
// Perform an abbreviated style recalc that operates without access to the DOM.
let mut root_flow = (*rw_data.root_flow.as_ref().unwrap()).clone();
let animations = &*rw_data.running_animations;
profile(time::ProfilerCategory::LayoutStyleRecalc,
self.profiler_metadata(),
self.time_profiler_chan.clone(),
|| animation::recalc_style_for_animations(root_flow.deref_mut(), animations));
match rw_data.root_flow.as_ref() {
None => {
// We haven't performed a single layout yet! Do nothing.
return
}
Some(ref root_flow) => {
// Perform an abbreviated style recalc that operates without access to the DOM.
let mut root_flow = (*root_flow).clone();
let animations = &*rw_data.running_animations;
profile(time::ProfilerCategory::LayoutStyleRecalc,
self.profiler_metadata(),
self.time_profiler_chan.clone(),
|| {
animation::recalc_style_for_animations(root_flow.deref_mut(),
animations)
});
}
}
self.perform_post_style_recalc_layout_passes(&reflow_info,