Support STYLO_THREADS=1

This commit is contained in:
Simon Sapin 2019-12-08 11:09:51 +01:00
parent d717382c0c
commit aade603025

View file

@ -1076,14 +1076,18 @@ impl LayoutThread {
};
let rayon_pool = STYLE_THREAD_POOL.pool();
let rayon_pool = rayon_pool.as_ref().unwrap();
let rayon_pool = rayon_pool.as_ref();
let box_tree = if token.should_traverse() {
driver::traverse_dom(&traversal, token, Some(rayon_pool));
driver::traverse_dom(&traversal, token, rayon_pool);
let root_node = document.root_element().unwrap().as_node();
let box_tree =
rayon_pool.install(|| BoxTreeRoot::construct(traversal.context(), root_node));
let build_box_tree = || BoxTreeRoot::construct(traversal.context(), root_node);
let box_tree = if let Some(pool) = rayon_pool {
pool.install(build_box_tree)
} else {
build_box_tree()
};
Some(box_tree)
} else {
None
@ -1096,8 +1100,12 @@ impl LayoutThread {
self.viewport_size.width.to_f32_px(),
self.viewport_size.height.to_f32_px(),
);
let fragment_tree =
rayon_pool.install(|| box_tree.layout(&layout_context, viewport_size));
let run_layout = || box_tree.layout(&layout_context, viewport_size);
let fragment_tree = if let Some(pool) = rayon_pool {
pool.install(run_layout)
} else {
run_layout()
};
*self.box_tree_root.borrow_mut() = Some(box_tree);
*self.fragment_tree_root.borrow_mut() = Some(fragment_tree);
}