Update to use webrender bincode IPC

This commit is contained in:
Alexis Beingessner 2017-04-28 14:57:26 -04:00
parent 32f4273e38
commit db02979c4f

View file

@ -15,7 +15,8 @@ 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, DisplayListBuilder, ExtendMode, LayoutTransform, ClipId};
use webrender_traits::{self, DisplayListBuilder, ExtendMode};
use webrender_traits::{LayoutTransform, ClipId, ClipRegionToken};
pub trait WebRenderDisplayListConverter {
fn convert_to_webrender(&self, pipeline_id: PipelineId) -> DisplayListBuilder;
@ -114,18 +115,18 @@ impl ToRectF for Rect<Au> {
}
trait ToClipRegion {
fn to_clip_region(&self, builder: &mut DisplayListBuilder) -> webrender_traits::ClipRegion;
fn push_clip_region(&self, builder: &mut DisplayListBuilder) -> ClipRegionToken;
}
impl ToClipRegion for ClippingRegion {
fn to_clip_region(&self, builder: &mut DisplayListBuilder) -> webrender_traits::ClipRegion {
builder.new_clip_region(&self.main.to_rectf(),
fn push_clip_region(&self, builder: &mut DisplayListBuilder) -> ClipRegionToken {
builder.push_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)
}
}
@ -241,7 +242,7 @@ impl WebRenderDisplayItemConverter for DisplayItem {
DisplayItem::SolidColor(ref item) => {
let color = item.color;
if color.a > 0.0 {
let clip = item.base.clip.to_clip_region(builder);
let clip = item.base.clip.push_clip_region(builder);
builder.push_rect(item.base.bounds.to_rectf(), clip, color);
}
}
@ -272,7 +273,7 @@ impl WebRenderDisplayItemConverter for DisplayItem {
}
if glyphs.len() > 0 {
let clip = item.base.clip.to_clip_region(builder);
let clip = item.base.clip.push_clip_region(builder);
builder.push_text(item.base.bounds.to_rectf(),
clip,
&glyphs,
@ -287,7 +288,7 @@ impl WebRenderDisplayItemConverter for DisplayItem {
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);
let clip = item.base.clip.push_clip_region(builder);
builder.push_image(item.base.bounds.to_rectf(),
clip,
item.stretch_size.to_sizef(),
@ -298,13 +299,13 @@ impl WebRenderDisplayItemConverter for DisplayItem {
}
}
DisplayItem::WebGL(ref item) => {
let clip = item.base.clip.to_clip_region(builder);
let clip = item.base.clip.push_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();
let widths = item.border_widths.to_border_widths();
let clip = item.base.clip.to_clip_region(builder);
let clip = item.base.clip.push_clip_region(builder);
let details = match item.details {
BorderDetails::Normal(ref border) => {
@ -369,7 +370,7 @@ impl WebRenderDisplayItemConverter for DisplayItem {
let rect = item.base.bounds.to_rectf();
let start_point = item.gradient.start_point.to_pointf();
let end_point = item.gradient.end_point.to_pointf();
let clip = item.base.clip.to_clip_region(builder);
let clip = item.base.clip.push_clip_region(builder);
let extend_mode = if item.gradient.repeating {
ExtendMode::Repeat
} else {
@ -389,7 +390,7 @@ impl WebRenderDisplayItemConverter for DisplayItem {
let rect = item.base.bounds.to_rectf();
let center = item.gradient.center.to_pointf();
let radius = item.gradient.radius.to_sizef();
let clip = item.base.clip.to_clip_region(builder);
let clip = item.base.clip.push_clip_region(builder);
let extend_mode = if item.gradient.repeating {
ExtendMode::Repeat
} else {
@ -411,7 +412,7 @@ 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);
let clip = item.base.clip.push_clip_region(builder);
builder.push_box_shadow(rect,
clip,
box_bounds,
@ -425,7 +426,7 @@ impl WebRenderDisplayItemConverter for DisplayItem {
DisplayItem::Iframe(ref item) => {
let rect = item.base.bounds.to_rectf();
let pipeline_id = item.iframe.to_webrender();
let clip = item.base.clip.to_clip_region(builder);
let clip = item.base.clip.push_clip_region(builder);
builder.push_iframe(rect, clip, pipeline_id);
}
DisplayItem::PushStackingContext(ref item) => {
@ -452,7 +453,7 @@ impl WebRenderDisplayItemConverter for DisplayItem {
builder.push_clip_id(item.scroll_root.parent_id);
let our_id = item.scroll_root.id;
let clip = item.scroll_root.clip.to_clip_region(builder);
let clip = item.scroll_root.clip.push_clip_region(builder);
let content_rect = item.scroll_root.content_rect.to_rectf();
let webrender_id = builder.define_clip(content_rect, clip, Some(our_id));
debug_assert!(our_id == webrender_id);