mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Properly use STYLE_THREAD_POOL in layout 2020
This commit is contained in:
parent
1446756774
commit
6f49dc2356
1 changed files with 12 additions and 11 deletions
|
@ -88,7 +88,7 @@ use style::context::{SharedStyleContext, ThreadLocalStyleContextCreationInfo};
|
||||||
use style::dom::{TDocument, TElement, TNode};
|
use style::dom::{TDocument, TElement, TNode};
|
||||||
use style::driver;
|
use style::driver;
|
||||||
use style::error_reporting::RustLogReporter;
|
use style::error_reporting::RustLogReporter;
|
||||||
use style::global_style_data::GLOBAL_STYLE_DATA;
|
use style::global_style_data::{GLOBAL_STYLE_DATA, STYLE_THREAD_POOL};
|
||||||
use style::invalidation::element::restyle_hints::RestyleHint;
|
use style::invalidation::element::restyle_hints::RestyleHint;
|
||||||
use style::media_queries::{Device, MediaList, MediaType};
|
use style::media_queries::{Device, MediaList, MediaType};
|
||||||
use style::properties::PropertyId;
|
use style::properties::PropertyId;
|
||||||
|
@ -1087,14 +1087,16 @@ impl LayoutThread {
|
||||||
RecalcStyle::pre_traverse(element, shared)
|
RecalcStyle::pre_traverse(element, shared)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let rayon_pool = STYLE_THREAD_POOL.pool();
|
||||||
|
let rayon_pool = rayon_pool.as_ref().unwrap();
|
||||||
|
|
||||||
let box_tree = if token.should_traverse() {
|
let box_tree = if token.should_traverse() {
|
||||||
driver::traverse_dom(&traversal, token, None);
|
driver::traverse_dom(&traversal, token, None);
|
||||||
|
|
||||||
let shared = DomTraversal::<ServoLayoutElement>::shared_context(&traversal);
|
let shared = DomTraversal::<ServoLayoutElement>::shared_context(&traversal);
|
||||||
Some(BoxTreeRoot::construct(
|
let root_node = document.root_element().unwrap().as_node();
|
||||||
shared,
|
let box_tree = rayon_pool.install(|| BoxTreeRoot::construct(shared, root_node));
|
||||||
document.root_element().unwrap().as_node(),
|
Some(box_tree)
|
||||||
))
|
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
@ -1102,13 +1104,12 @@ impl LayoutThread {
|
||||||
layout_context = traversal.destroy();
|
layout_context = traversal.destroy();
|
||||||
|
|
||||||
if let Some(box_tree) = box_tree {
|
if let Some(box_tree) = box_tree {
|
||||||
let fragment_tree = box_tree.layout(
|
let viewport_size = Size2D::new(
|
||||||
&layout_context,
|
self.viewport_size.width.to_f32_px(),
|
||||||
Size2D::new(
|
self.viewport_size.height.to_f32_px(),
|
||||||
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));
|
||||||
*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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue