diff options
author | Simon Sapin <simon.sapin@exyr.org> | 2019-12-08 11:09:51 +0100 |
---|---|---|
committer | Simon Sapin <simon.sapin@exyr.org> | 2019-12-10 18:41:14 +0100 |
commit | aade6030258ac644739cc3e7658c16f72fec5bd2 (patch) | |
tree | 4286719b281b6f1eae7ae9801c566036039ae273 /components/layout_thread_2020/lib.rs | |
parent | d717382c0c922e92165d9eead86c7b04e9ee4bc8 (diff) | |
download | servo-aade6030258ac644739cc3e7658c16f72fec5bd2.tar.gz servo-aade6030258ac644739cc3e7658c16f72fec5bd2.zip |
Support STYLO_THREADS=1
Diffstat (limited to 'components/layout_thread_2020/lib.rs')
-rw-r--r-- | components/layout_thread_2020/lib.rs | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/components/layout_thread_2020/lib.rs b/components/layout_thread_2020/lib.rs index 45202d51ad9..35b4c92c21b 100644 --- a/components/layout_thread_2020/lib.rs +++ b/components/layout_thread_2020/lib.rs @@ -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); } |