diff options
Diffstat (limited to 'components/layout/display_list/webrender_helpers.rs')
-rw-r--r-- | components/layout/display_list/webrender_helpers.rs | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/components/layout/display_list/webrender_helpers.rs b/components/layout/display_list/webrender_helpers.rs index 1e584c0c06f..a8130a15936 100644 --- a/components/layout/display_list/webrender_helpers.rs +++ b/components/layout/display_list/webrender_helpers.rs @@ -49,7 +49,6 @@ impl<'a> ClipScrollState<'a> { let root_clip_chain = builder.define_clip_chain(None, [ClipId::root(state.compositor_info.pipeline_id)]); - state.add_clip_node_mapping(0, root_clip_chain); state.add_clip_node_mapping(1, root_clip_chain); @@ -115,7 +114,11 @@ impl DisplayList { epoch: Epoch, ) -> (DisplayListBuilder, CompositorDisplayListInfo, IsContentful) { let webrender_pipeline = pipeline_id.to_webrender(); - let mut builder = DisplayListBuilder::new(webrender_pipeline); + let mut builder = DisplayListBuilder::with_capacity( + webrender_pipeline, + self.bounds().size, + 1024 * 1024, // 1 MB of space + ); let content_size = self.bounds().size; let mut state = ClipScrollState::new( @@ -153,16 +156,17 @@ impl DisplayItem { let internal_clip_id = clip_and_scroll_indices .clipping .unwrap_or(clip_and_scroll_indices.scrolling); - let current_clip_chain_id = state.webrender_clip_id_for_index(internal_clip_id.to_index()); + let current_clip_id = state.webrender_clip_id_for_index(internal_clip_id.to_index()); let hit_test_bounds = self.bounds().intersection(&self.base().clip_rect); let build_common_item_properties = |base: &BaseDisplayItem| { CommonItemProperties { clip_rect: base.clip_rect, spatial_id: current_scroll_node_id.spatial_id, - clip_id: ClipId::ClipChain(current_clip_chain_id), + clip_id: ClipId::ClipChain(current_clip_id), // TODO(gw): Make use of the WR backface visibility functionality. flags: PrimitiveFlags::default(), + hit_info: None, } }; @@ -183,15 +187,10 @@ impl DisplayItem { current_scroll_node_id, ); - builder.push_hit_test( - &CommonItemProperties { - clip_rect: bounds, - spatial_id: current_scroll_node_id.spatial_id, - clip_id: ClipId::ClipChain(current_clip_chain_id), - flags: PrimitiveFlags::default(), - }, - (hit_test_index as u64, 0u16), - ); + let mut common = build_common_item_properties(base); + common.hit_info = Some((hit_test_index as u64, 0u16)); + common.clip_rect = bounds; + builder.push_hit_test(&common); }; match *self { @@ -303,13 +302,7 @@ impl DisplayItem { scrolling_relative_to: None, }, ), - (Some(t), None) => ( - t, - ReferenceFrameKind::Transform { - is_2d_scale_translation: false, - should_snap: false, - }, - ), + (Some(t), None) => (t, ReferenceFrameKind::Transform), (Some(t), Some(p)) => ( p.then(&t), ReferenceFrameKind::Perspective { @@ -328,7 +321,7 @@ impl DisplayItem { ); let index = frame_index.to_index(); - state.add_clip_node_mapping(index, current_clip_chain_id); + state.add_clip_node_mapping(index, current_clip_id); state.register_spatial_node( index, new_spatial_id, @@ -415,7 +408,7 @@ impl DisplayItem { let spatial_id = builder .define_scroll_frame( &parent_space_and_clip_info, - external_id, + Some(external_id), node.content_rect, item_rect, scroll_sensitivity, |