aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/sequential.rs
diff options
context:
space:
mode:
authorPu Xingyu <pu.stshine@gmail.com>2017-02-07 10:45:13 +0800
committerPu Xingyu <pu.stshine@gmail.com>2017-02-08 08:47:54 +0800
commit336aa795b4b9933436c9df0200de64e18b6f3b7e (patch)
tree7b8acf2d9eba39a68d47205462b0b29633584a28 /components/layout/sequential.rs
parentf07bfaa97466018f93124e308556aa93293cf648 (diff)
downloadservo-336aa795b4b9933436c9df0200de64e18b6f3b7e.tar.gz
servo-336aa795b4b9933436c9df0200de64e18b6f3b7e.zip
Remove cached thread local context from LayoutContext
Remove cached thread local context from LayoutContext, use LayoutContext for assign_inline_sizes(), and simplify the parallel flow traversal code.
Diffstat (limited to 'components/layout/sequential.rs')
-rw-r--r--components/layout/sequential.rs15
1 files changed, 6 insertions, 9 deletions
diff --git a/components/layout/sequential.rs b/components/layout/sequential.rs
index 6dd0f8c440b..ae493b443c5 100644
--- a/components/layout/sequential.rs
+++ b/components/layout/sequential.rs
@@ -5,7 +5,7 @@
//! Implements sequential traversals over the DOM and flow trees.
use app_units::Au;
-use context::{LayoutContext, SharedLayoutContext};
+use context::LayoutContext;
use display_list_builder::DisplayListBuildState;
use euclid::point::Point2D;
use floats::SpeculatedFloatPlacement;
@@ -20,7 +20,7 @@ use traversal::{AssignBSizes, AssignISizes, BubbleISizes, BuildDisplayList};
pub use style::sequential::traverse_dom;
-pub fn resolve_generated_content(root: &mut Flow, shared: &SharedLayoutContext) {
+pub fn resolve_generated_content(root: &mut Flow, layout_context: &LayoutContext) {
fn doit(flow: &mut Flow, level: u32, traversal: &mut ResolveGeneratedContent) {
if !traversal.should_process(flow) {
return
@@ -33,13 +33,12 @@ pub fn resolve_generated_content(root: &mut Flow, shared: &SharedLayoutContext)
}
}
- let layout_context = LayoutContext::new(shared);
let mut traversal = ResolveGeneratedContent::new(&layout_context);
doit(root, 0, &mut traversal)
}
pub fn traverse_flow_tree_preorder(root: &mut Flow,
- shared: &SharedLayoutContext) {
+ layout_context: &LayoutContext) {
fn doit(flow: &mut Flow,
assign_inline_sizes: AssignISizes,
assign_block_sizes: AssignBSizes) {
@@ -56,8 +55,6 @@ pub fn traverse_flow_tree_preorder(root: &mut Flow,
}
}
- let layout_context = LayoutContext::new(shared);
-
if opts::get().bubble_inline_sizes_separately {
let bubble_inline_sizes = BubbleISizes { layout_context: &layout_context };
{
@@ -66,16 +63,16 @@ pub fn traverse_flow_tree_preorder(root: &mut Flow,
}
}
- let assign_inline_sizes = AssignISizes { shared_context: layout_context.shared_context() };
+ let assign_inline_sizes = AssignISizes { layout_context: &layout_context };
let assign_block_sizes = AssignBSizes { layout_context: &layout_context };
doit(root, assign_inline_sizes, assign_block_sizes);
}
pub fn build_display_list_for_subtree<'a>(flow_root: &mut Flow,
- shared_layout_context: &'a SharedLayoutContext)
+ layout_context: &'a LayoutContext)
-> DisplayListBuildState<'a> {
- let mut state = DisplayListBuildState::new(shared_layout_context);
+ let mut state = DisplayListBuildState::new(layout_context);
flow_root.collect_stacking_contexts(&mut state);
let mut build_display_list = BuildDisplayList { state: state };