зеркало из https://github.com/mozilla/gecko-dev.git
servo: Merge #14386 - Use new DisplayListBuilder improvements in Servo (from mrobinson:display-list-builder-updates); r=glennw
<!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [ ] These changes fix #__ (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [x] These changes do not require tests because they should not change behavior. <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> In particular, we no longer to have a WebRenderFrameBuilder. All of the complication is now handled by the DisplayListBuilder itself. Source-Repo: https://github.com/servo/servo Source-Revision: 1c6963144d0496d8dcbb7a7ca6782d01d3305441
This commit is contained in:
Родитель
4d50e21cf3
Коммит
bd80dcc63d
|
@ -246,7 +246,7 @@ dependencies = [
|
|||
"offscreen_gl_context 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"plugins 0.0.1",
|
||||
"util 0.0.1",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -262,7 +262,7 @@ dependencies = [
|
|||
"plugins 0.0.1",
|
||||
"serde 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_derive 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -364,8 +364,8 @@ dependencies = [
|
|||
"style_traits 0.0.1",
|
||||
"time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"util 0.0.1",
|
||||
"webrender 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -398,7 +398,7 @@ dependencies = [
|
|||
"servo_url 0.0.1",
|
||||
"style_traits 0.0.1",
|
||||
"util 0.0.1",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -911,7 +911,7 @@ dependencies = [
|
|||
"time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unicode-script 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"util 0.0.1",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
"xi-unicode 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -1291,7 +1291,7 @@ dependencies = [
|
|||
"unicode-bidi 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unicode-script 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"util 0.0.1",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1332,7 +1332,7 @@ dependencies = [
|
|||
"servo_url 0.0.1",
|
||||
"style 0.0.1",
|
||||
"util 0.0.1",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1346,7 +1346,7 @@ dependencies = [
|
|||
"profile_traits 0.0.1",
|
||||
"script_traits 0.0.1",
|
||||
"servo_url 0.0.1",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1437,8 +1437,8 @@ dependencies = [
|
|||
"url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"util 0.0.1",
|
||||
"webdriver_server 0.0.1",
|
||||
"webrender 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1587,7 +1587,7 @@ dependencies = [
|
|||
"plugins 0.0.1",
|
||||
"serde 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_derive 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1626,7 +1626,7 @@ dependencies = [
|
|||
"url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"util 0.0.1",
|
||||
"uuid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
"websocket 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -1687,7 +1687,7 @@ dependencies = [
|
|||
"url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"util 0.0.1",
|
||||
"uuid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
"websocket 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -2226,7 +2226,7 @@ dependencies = [
|
|||
"url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"util 0.0.1",
|
||||
"uuid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
"websocket 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"xml5ever 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -3057,8 +3057,8 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "webrender"
|
||||
version = "0.10.0"
|
||||
source = "git+https://github.com/servo/webrender#a237f9b7c261e253fe0bcbd00a38abf0f8f5dfbd"
|
||||
version = "0.11.0"
|
||||
source = "git+https://github.com/servo/webrender#c4a0c01f7a249a5786a5f32922574feb56b370b2"
|
||||
dependencies = [
|
||||
"app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"bincode 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -3078,13 +3078,13 @@ dependencies = [
|
|||
"offscreen_gl_context 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rayon 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"webrender_traits 0.10.0 (git+https://github.com/servo/webrender)",
|
||||
"webrender_traits 0.11.0 (git+https://github.com/servo/webrender)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "webrender_traits"
|
||||
version = "0.10.0"
|
||||
source = "git+https://github.com/servo/webrender#a237f9b7c261e253fe0bcbd00a38abf0f8f5dfbd"
|
||||
version = "0.11.0"
|
||||
source = "git+https://github.com/servo/webrender#c4a0c01f7a249a5786a5f32922574feb56b370b2"
|
||||
dependencies = [
|
||||
"app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -3439,8 +3439,8 @@ dependencies = [
|
|||
"checksum wayland-sys 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9633f7fe5de56544215f82eaf1b76bf1b584becf7f08b58cbef4c2c7d10e803a"
|
||||
"checksum wayland-window 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "309b69d3a863c9c21422d889fb7d98cf02f8a2ca054960a49243ce5b67ad884c"
|
||||
"checksum webdriver 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6d43d9121a4d0313abca5fb621f094791300176cac493ce74ad2cc188bddac29"
|
||||
"checksum webrender 0.10.0 (git+https://github.com/servo/webrender)" = "<none>"
|
||||
"checksum webrender_traits 0.10.0 (git+https://github.com/servo/webrender)" = "<none>"
|
||||
"checksum webrender 0.11.0 (git+https://github.com/servo/webrender)" = "<none>"
|
||||
"checksum webrender_traits 0.11.0 (git+https://github.com/servo/webrender)" = "<none>"
|
||||
"checksum websocket 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4a1a6ea5ed0367f32eb3d94dcc58859ef4294b5f75ba983dbf56ac314af45d"
|
||||
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
|
||||
"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
|
||||
|
|
|
@ -12,19 +12,18 @@ use euclid::{Point2D, Rect, Size2D};
|
|||
use gfx::display_list::{BorderRadii, BoxShadowClipMode, ClippingRegion};
|
||||
use gfx::display_list::{DisplayItem, DisplayList, DisplayListTraversal, StackingContextType};
|
||||
use gfx_traits::{FragmentType, ScrollPolicy, ScrollRootId};
|
||||
use msg::constellation_msg::PipelineId;
|
||||
use style::computed_values::{image_rendering, mix_blend_mode};
|
||||
use style::computed_values::filter::{self, Filter};
|
||||
use style::values::computed::BorderStyle;
|
||||
use webrender_traits::{self, AuxiliaryListsBuilder, BuiltDisplayList, DisplayListBuilder, PipelineId};
|
||||
use webrender_traits::{self, DisplayListBuilder};
|
||||
|
||||
pub trait WebRenderDisplayListConverter {
|
||||
fn convert_to_webrender(&self, frame_builder: &mut WebRenderFrameBuilder) -> BuiltDisplayList;
|
||||
fn convert_to_webrender(&self, pipeline_id: PipelineId) -> DisplayListBuilder;
|
||||
}
|
||||
|
||||
trait WebRenderDisplayItemConverter {
|
||||
fn convert_to_webrender(&self,
|
||||
builder: &mut DisplayListBuilder,
|
||||
frame_builder: &mut WebRenderFrameBuilder);
|
||||
fn convert_to_webrender(&self, builder: &mut DisplayListBuilder);
|
||||
}
|
||||
|
||||
trait ToBorderStyle {
|
||||
|
@ -96,22 +95,19 @@ impl ToRectF for Rect<Au> {
|
|||
}
|
||||
|
||||
trait ToClipRegion {
|
||||
fn to_clip_region(&self, frame_builder: &mut WebRenderFrameBuilder)
|
||||
-> webrender_traits::ClipRegion;
|
||||
fn to_clip_region(&self, builder: &mut DisplayListBuilder) -> webrender_traits::ClipRegion;
|
||||
}
|
||||
|
||||
impl ToClipRegion for ClippingRegion {
|
||||
fn to_clip_region(&self, frame_builder: &mut WebRenderFrameBuilder)
|
||||
-> webrender_traits::ClipRegion {
|
||||
webrender_traits::ClipRegion::new(&self.main.to_rectf(),
|
||||
self.complex.iter().map(|complex_clipping_region| {
|
||||
webrender_traits::ComplexClipRegion::new(
|
||||
complex_clipping_region.rect.to_rectf(),
|
||||
complex_clipping_region.radii.to_border_radius(),
|
||||
)
|
||||
}).collect(),
|
||||
None,
|
||||
&mut frame_builder.auxiliary_lists_builder)
|
||||
fn to_clip_region(&self, builder: &mut DisplayListBuilder) -> webrender_traits::ClipRegion {
|
||||
builder.new_clip_region(&self.main.to_rectf(),
|
||||
self.complex.iter().map(|complex_clipping_region| {
|
||||
webrender_traits::ComplexClipRegion::new(
|
||||
complex_clipping_region.rect.to_rectf(),
|
||||
complex_clipping_region.radii.to_border_radius(),
|
||||
)
|
||||
}).collect(),
|
||||
None)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -196,27 +192,24 @@ impl ToFilterOps for filter::T {
|
|||
}
|
||||
|
||||
impl WebRenderDisplayListConverter for DisplayList {
|
||||
fn convert_to_webrender(&self, frame_builder: &mut WebRenderFrameBuilder) -> BuiltDisplayList {
|
||||
fn convert_to_webrender(&self, pipeline_id: PipelineId) -> DisplayListBuilder {
|
||||
let traversal = DisplayListTraversal::new(self);
|
||||
let mut builder = DisplayListBuilder::new();
|
||||
let mut builder = DisplayListBuilder::new(pipeline_id.to_webrender());
|
||||
for item in traversal {
|
||||
item.convert_to_webrender(&mut builder, frame_builder);
|
||||
item.convert_to_webrender(&mut builder);
|
||||
}
|
||||
builder.finalize()
|
||||
builder
|
||||
}
|
||||
}
|
||||
|
||||
impl WebRenderDisplayItemConverter for DisplayItem {
|
||||
fn convert_to_webrender(&self,
|
||||
builder: &mut DisplayListBuilder,
|
||||
frame_builder: &mut WebRenderFrameBuilder) {
|
||||
fn convert_to_webrender(&self, builder: &mut DisplayListBuilder) {
|
||||
match *self {
|
||||
DisplayItem::SolidColor(ref item) => {
|
||||
let color = item.color;
|
||||
if color.a > 0.0 {
|
||||
builder.push_rect(item.base.bounds.to_rectf(),
|
||||
item.base.clip.to_clip_region(frame_builder),
|
||||
color);
|
||||
let clip = item.base.clip.to_clip_region(builder);
|
||||
builder.push_rect(item.base.bounds.to_rectf(), clip, color);
|
||||
}
|
||||
}
|
||||
DisplayItem::Text(ref item) => {
|
||||
|
@ -244,22 +237,23 @@ impl WebRenderDisplayItemConverter for DisplayItem {
|
|||
}
|
||||
|
||||
if glyphs.len() > 0 {
|
||||
let clip = item.base.clip.to_clip_region(builder);
|
||||
builder.push_text(item.base.bounds.to_rectf(),
|
||||
item.base.clip.to_clip_region(frame_builder),
|
||||
clip,
|
||||
glyphs,
|
||||
item.text_run.font_key,
|
||||
item.text_color,
|
||||
item.text_run.actual_pt_size,
|
||||
item.blur_radius,
|
||||
&mut frame_builder.auxiliary_lists_builder);
|
||||
item.blur_radius);
|
||||
}
|
||||
}
|
||||
DisplayItem::Image(ref item) => {
|
||||
if let Some(id) = item.webrender_image.key {
|
||||
if item.stretch_size.width > Au(0) &&
|
||||
item.stretch_size.height > Au(0) {
|
||||
let clip = item.base.clip.to_clip_region(builder);
|
||||
builder.push_image(item.base.bounds.to_rectf(),
|
||||
item.base.clip.to_clip_region(frame_builder),
|
||||
clip,
|
||||
item.stretch_size.to_sizef(),
|
||||
item.tile_spacing.to_sizef(),
|
||||
item.image_rendering.to_image_rendering(),
|
||||
|
@ -268,9 +262,8 @@ impl WebRenderDisplayItemConverter for DisplayItem {
|
|||
}
|
||||
}
|
||||
DisplayItem::WebGL(ref item) => {
|
||||
builder.push_webgl_canvas(item.base.bounds.to_rectf(),
|
||||
item.base.clip.to_clip_region(frame_builder),
|
||||
item.context_id);
|
||||
let clip = item.base.clip.to_clip_region(builder);
|
||||
builder.push_webgl_canvas(item.base.bounds.to_rectf(), clip, item.context_id);
|
||||
}
|
||||
DisplayItem::Border(ref item) => {
|
||||
let rect = item.base.bounds.to_rectf();
|
||||
|
@ -295,8 +288,9 @@ impl WebRenderDisplayItemConverter for DisplayItem {
|
|||
style: item.style.bottom.to_border_style(),
|
||||
};
|
||||
let radius = item.radius.to_border_radius();
|
||||
let clip = item.base.clip.to_clip_region(builder);
|
||||
builder.push_border(rect,
|
||||
item.base.clip.to_clip_region(frame_builder),
|
||||
clip,
|
||||
left,
|
||||
top,
|
||||
right,
|
||||
|
@ -307,12 +301,12 @@ impl WebRenderDisplayItemConverter for DisplayItem {
|
|||
let rect = item.base.bounds.to_rectf();
|
||||
let start_point = item.start_point.to_pointf();
|
||||
let end_point = item.end_point.to_pointf();
|
||||
let clip = item.base.clip.to_clip_region(builder);
|
||||
builder.push_gradient(rect,
|
||||
item.base.clip.to_clip_region(frame_builder),
|
||||
clip,
|
||||
start_point,
|
||||
end_point,
|
||||
item.stops.clone(),
|
||||
&mut frame_builder.auxiliary_lists_builder);
|
||||
item.stops.clone());
|
||||
}
|
||||
DisplayItem::Line(..) => {
|
||||
println!("TODO DisplayItem::Line");
|
||||
|
@ -320,8 +314,9 @@ impl WebRenderDisplayItemConverter for DisplayItem {
|
|||
DisplayItem::BoxShadow(ref item) => {
|
||||
let rect = item.base.bounds.to_rectf();
|
||||
let box_bounds = item.box_bounds.to_rectf();
|
||||
let clip = item.base.clip.to_clip_region(builder);
|
||||
builder.push_box_shadow(rect,
|
||||
item.base.clip.to_clip_region(frame_builder),
|
||||
clip,
|
||||
box_bounds,
|
||||
item.offset.to_pointf(),
|
||||
item.color,
|
||||
|
@ -333,9 +328,8 @@ impl WebRenderDisplayItemConverter for DisplayItem {
|
|||
DisplayItem::Iframe(ref item) => {
|
||||
let rect = item.base.bounds.to_rectf();
|
||||
let pipeline_id = item.iframe.to_webrender();
|
||||
builder.push_iframe(rect,
|
||||
item.base.clip.to_clip_region(frame_builder),
|
||||
pipeline_id);
|
||||
let clip = item.base.clip.to_clip_region(builder);
|
||||
builder.push_iframe(rect, clip, pipeline_id);
|
||||
}
|
||||
DisplayItem::PushStackingContext(ref item) => {
|
||||
let stacking_context = &item.stacking_context;
|
||||
|
@ -346,58 +340,26 @@ impl WebRenderDisplayItemConverter for DisplayItem {
|
|||
ScrollPolicy::FixedPosition => webrender_traits::ScrollPolicy::Fixed,
|
||||
};
|
||||
|
||||
let context =
|
||||
webrender_traits::StackingContext::new(
|
||||
webrender_scroll_policy,
|
||||
stacking_context.bounds.to_rectf(),
|
||||
stacking_context.overflow.to_rectf(),
|
||||
stacking_context.z_index,
|
||||
&stacking_context.transform,
|
||||
&stacking_context.perspective,
|
||||
stacking_context.blend_mode.to_blend_mode(),
|
||||
stacking_context.filters.to_filter_ops(),
|
||||
&mut frame_builder.auxiliary_lists_builder);
|
||||
builder.push_stacking_context(context);
|
||||
|
||||
builder.push_stacking_context(webrender_scroll_policy,
|
||||
stacking_context.bounds.to_rectf(),
|
||||
stacking_context.overflow.to_rectf(),
|
||||
stacking_context.z_index,
|
||||
&stacking_context.transform,
|
||||
&stacking_context.perspective,
|
||||
stacking_context.blend_mode.to_blend_mode(),
|
||||
stacking_context.filters.to_filter_ops());
|
||||
}
|
||||
DisplayItem::PopStackingContext(_) => builder.pop_stacking_context(),
|
||||
DisplayItem::PushScrollRoot(ref item) => {
|
||||
builder.push_scroll_layer(item.scroll_root.clip.to_rectf(),
|
||||
item.scroll_root.size.to_sizef(),
|
||||
frame_builder.next_scroll_layer_id(item.scroll_root.id));
|
||||
item.scroll_root.id.convert_to_webrender());
|
||||
}
|
||||
DisplayItem::PopScrollRoot(_) => builder.pop_scroll_layer(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct WebRenderFrameBuilder {
|
||||
pub auxiliary_lists_builder: AuxiliaryListsBuilder,
|
||||
pub root_pipeline_id: PipelineId,
|
||||
pub next_scroll_layer_id: usize,
|
||||
}
|
||||
|
||||
impl WebRenderFrameBuilder {
|
||||
pub fn new(root_pipeline_id: PipelineId) -> WebRenderFrameBuilder {
|
||||
WebRenderFrameBuilder {
|
||||
auxiliary_lists_builder: AuxiliaryListsBuilder::new(),
|
||||
root_pipeline_id: root_pipeline_id,
|
||||
next_scroll_layer_id: 0,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn next_scroll_layer_id(&mut self,
|
||||
scroll_root_id: ScrollRootId)
|
||||
-> webrender_traits::ScrollLayerId {
|
||||
let scroll_layer_id = self.next_scroll_layer_id;
|
||||
self.next_scroll_layer_id += 1;
|
||||
webrender_traits::ScrollLayerId::new(self.root_pipeline_id,
|
||||
scroll_layer_id,
|
||||
scroll_root_id.convert_to_webrender())
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
trait WebRenderScrollRootIdConverter {
|
||||
fn convert_to_webrender(&self) -> webrender_traits::ServoScrollRootId;
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ use layout::query::{process_node_geometry_request, process_node_scroll_area_requ
|
|||
use layout::query::process_offset_parent_query;
|
||||
use layout::sequential;
|
||||
use layout::traversal::{ComputeAbsolutePositions, RecalcStyleAndConstructFlows};
|
||||
use layout::webrender_helpers::{WebRenderDisplayListConverter, WebRenderFrameBuilder};
|
||||
use layout::webrender_helpers::WebRenderDisplayListConverter;
|
||||
use layout::wrapper::LayoutNodeLayoutData;
|
||||
use layout::wrapper::drop_style_and_layout_data;
|
||||
use layout_traits::LayoutThreadFactory;
|
||||
|
@ -947,10 +947,7 @@ impl LayoutThread {
|
|||
debug!("Layout done!");
|
||||
|
||||
// TODO: Avoid the temporary conversion and build webrender sc/dl directly!
|
||||
let pipeline_id = self.id.to_webrender();
|
||||
let mut frame_builder = WebRenderFrameBuilder::new(pipeline_id);
|
||||
let built_display_list = rw_data.display_list.as_ref().unwrap().convert_to_webrender(
|
||||
&mut frame_builder);
|
||||
let builder = rw_data.display_list.as_ref().unwrap().convert_to_webrender(self.id);
|
||||
|
||||
let viewport_size = Size2D::new(self.viewport_size.width.to_f32_px(),
|
||||
self.viewport_size.height.to_f32_px());
|
||||
|
@ -961,10 +958,8 @@ impl LayoutThread {
|
|||
self.webrender_api.set_root_display_list(
|
||||
get_root_flow_background_color(layout_root),
|
||||
webrender_traits::Epoch(epoch_number),
|
||||
pipeline_id,
|
||||
viewport_size,
|
||||
built_display_list,
|
||||
frame_builder.auxiliary_lists_builder.finalize());
|
||||
builder);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче