aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout_thread/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/layout_thread/lib.rs')
-rw-r--r--components/layout_thread/lib.rs29
1 files changed, 16 insertions, 13 deletions
diff --git a/components/layout_thread/lib.rs b/components/layout_thread/lib.rs
index 3d192f6bbe6..1d8448c6e74 100644
--- a/components/layout_thread/lib.rs
+++ b/components/layout_thread/lib.rs
@@ -833,7 +833,7 @@ impl LayoutThread {
let point = Point2D::new(-state.scroll_offset.x, -state.scroll_offset.y);
let mut txn = webrender_api::Transaction::new();
txn.scroll_node_with_id(
- webrender_api::LayoutPoint::from_untyped(&point),
+ webrender_api::units::LayoutPoint::from_untyped(&point),
state.scroll_id,
webrender_api::ScrollClamping::ToContentBounds,
);
@@ -1138,8 +1138,13 @@ impl LayoutThread {
rw_data.display_list.is_none()
{
if reflow_goal.needs_display_list() {
- let mut build_state =
- sequential::build_display_list_for_subtree(layout_root, layout_context);
+ let background_color = get_root_flow_background_color(layout_root);
+ let mut build_state = sequential::build_display_list_for_subtree(
+ layout_root,
+ layout_context,
+ background_color,
+ data.page_clip_rect.size,
+ );
debug!("Done building display list.");
@@ -1203,7 +1208,7 @@ impl LayoutThread {
&mut build_state.indexable_text,
IndexableText::default(),
);
- rw_data.display_list = Some(Arc::new(build_state.to_display_list()));
+ rw_data.display_list = Some(build_state.to_display_list());
}
}
@@ -1220,7 +1225,8 @@ impl LayoutThread {
if let Some(document) = document {
document.will_paint();
}
- let display_list = (*rw_data.display_list.as_ref().unwrap()).clone();
+
+ let display_list = rw_data.display_list.as_mut().unwrap();
if self.dump_display_list {
display_list.print();
@@ -1232,11 +1238,7 @@ impl LayoutThread {
debug!("Layout done!");
// TODO: Avoid the temporary conversion and build webrender sc/dl directly!
- let builder = rw_data
- .display_list
- .as_ref()
- .unwrap()
- .convert_to_webrender(self.id);
+ let builder = display_list.convert_to_webrender(self.id);
let viewport_size = Size2D::new(
self.viewport_size.width.to_f32_px(),
@@ -1247,7 +1249,7 @@ impl LayoutThread {
epoch.next();
self.epoch.set(epoch);
- let viewport_size = webrender_api::LayoutSize::from_untyped(&viewport_size);
+ let viewport_size = webrender_api::units::LayoutSize::from_untyped(&viewport_size);
// Observe notifications about rendered frames if needed right before
// sending the display list to WebRender in order to set time related
@@ -1258,7 +1260,7 @@ impl LayoutThread {
let mut txn = webrender_api::Transaction::new();
txn.set_display_list(
webrender_api::Epoch(epoch.0),
- Some(get_root_flow_background_color(layout_root)),
+ None,
viewport_size,
builder.finalize(),
true,
@@ -1669,7 +1671,8 @@ impl LayoutThread {
// particular pipeline, so we need to tell WebRender about that.
flags.insert(webrender_api::HitTestFlags::POINT_RELATIVE_TO_PIPELINE_VIEWPORT);
- let client_point = webrender_api::WorldPoint::from_untyped(&client_point);
+ let client_point =
+ webrender_api::units::WorldPoint::from_untyped(&client_point);
let results = self.webrender_api.hit_test(
self.webrender_document,
Some(self.id.to_webrender()),