servo: Merge #16360 - Update WR (gradients, batching, text run, border changes) (from glennw:update-wr-borders); r=jdm

- Tidy and optimize the batching code.
- Support tiling / repeat for linear and radial gradients.
- Fix some edge cases of subpixel text AA.
- Add clip mask support to border shaders.
- Optimization to text run creation on CPU.
- Handle more box-shadow clipping cases.
- Fix a panic that could occur when window size is 0.
- Clip / scroll API improvements.

Source-Repo: https://github.com/servo/servo
Source-Revision: 43bd0cae0d983ec1e78c82fcebea303f2854cb85
This commit is contained in:
Glenn Watson
2017-04-12 12:03:10 -05:00
parent 459cd85965
commit 1af8103a3e
4 changed files with 42 additions and 38 deletions

View File

@@ -39,7 +39,7 @@ use style_traits::viewport::ViewportConstraints;
use time::{precise_time_ns, precise_time_s};
use touch::{TouchHandler, TouchAction};
use webrender;
use webrender_traits::{self, LayoutPoint, ScrollEventPhase, ScrollLayerId, ScrollLocation};
use webrender_traits::{self, LayoutPoint, ScrollEventPhase, ClipId, ScrollLocation};
use windowing::{self, MouseWindowEvent, WindowEvent, WindowMethods, WindowNavigateMsg};
#[derive(Debug, PartialEq)]
@@ -797,8 +797,8 @@ impl<Window: WindowMethods> IOCompositor<Window> {
pipeline_id: PipelineId,
scroll_root_id: ScrollRootId,
point: Point2D<f32>) {
let id = ScrollLayerId::new(scroll_root_id.0 as u64, pipeline_id.to_webrender());
self.webrender_api.scroll_layer_with_id(LayoutPoint::from_untyped(&point), id);
let id = ClipId::new(scroll_root_id.0 as u64, pipeline_id.to_webrender());
self.webrender_api.scroll_node_with_id(LayoutPoint::from_untyped(&point), id);
}
fn handle_window_message(&mut self, event: WindowEvent) {
@@ -1389,7 +1389,7 @@ impl<Window: WindowMethods> IOCompositor<Window> {
fn send_viewport_rects(&self) {
let mut stacking_context_scroll_states_per_pipeline = HashMap::new();
for scroll_layer_state in self.webrender_api.get_scroll_layer_state() {
for scroll_layer_state in self.webrender_api.get_scroll_node_state() {
let external_id = match scroll_layer_state.id.external_id() {
Some(id) => id,
None => continue,