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 = 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() { 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 root_node = document.root_element().unwrap().as_node();
let box_tree = let build_box_tree = || BoxTreeRoot::construct(traversal.context(), root_node);
rayon_pool.install(|| 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) Some(box_tree)
} else { } else {
None None
@ -1096,8 +1100,12 @@ impl LayoutThread {
self.viewport_size.width.to_f32_px(), self.viewport_size.width.to_f32_px(),
self.viewport_size.height.to_f32_px(), self.viewport_size.height.to_f32_px(),
); );
let fragment_tree = let run_layout = || box_tree.layout(&layout_context, viewport_size);
rayon_pool.install(|| 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.box_tree_root.borrow_mut() = Some(box_tree);
*self.fragment_tree_root.borrow_mut() = Some(fragment_tree); *self.fragment_tree_root.borrow_mut() = Some(fragment_tree);
} }