From 800a66fc114c5724436a8c490bdaaf4d026f4794 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Fri, 19 Jan 2018 15:55:52 +1000 Subject: [PATCH] Update WR (minimal use of new transaction API). --- Cargo.lock | 4 ++-- components/canvas/webgl_thread.rs | 8 ++++++-- components/compositing/compositor.rs | 28 +++++++++++++++++++++------- components/layout_thread/lib.rs | 15 ++++++++------- 4 files changed, 37 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 109bda5891c..8636726910b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3561,7 +3561,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.56.1" -source = "git+https://github.com/servo/webrender#2547f6fe91da018cd3374acd661effb5f8fbe022" +source = "git+https://github.com/servo/webrender#e9269c7e06e20363be0b2a2a1be98d292ff7acca" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3589,7 +3589,7 @@ dependencies = [ [[package]] name = "webrender_api" version = "0.56.1" -source = "git+https://github.com/servo/webrender#2547f6fe91da018cd3374acd661effb5f8fbe022" +source = "git+https://github.com/servo/webrender#e9269c7e06e20363be0b2a2a1be98d292ff7acca" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index e03021761be..730071421d9 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -353,7 +353,9 @@ impl WebGLThread { let contexts = &self.contexts; @@ -376,7 +378,9 @@ impl WebGLThread IOCompositor { self.root_pipeline = Some(frame_tree.pipeline.clone()); let pipeline_id = frame_tree.pipeline.id.to_webrender(); - self.webrender_api.set_root_pipeline(self.webrender_document, pipeline_id); - self.webrender_api.generate_frame(self.webrender_document, None); + let mut txn = webrender_api::Transaction::new(); + txn.set_root_pipeline(pipeline_id); + txn.generate_frame(); + self.webrender_api.send_transaction(self.webrender_document, txn); self.create_pipeline_details_for_frame_tree(&frame_tree); @@ -992,7 +994,9 @@ impl IOCompositor { (combined_event.cursor.to_f32() / self.scale).to_untyped(); let location = webrender_api::ScrollLocation::Delta(delta); let cursor = webrender_api::WorldPoint::from_untyped(&cursor); - self.webrender_api.scroll(self.webrender_document, location, cursor, combined_event.phase); + let mut txn = webrender_api::Transaction::new(); + txn.scroll(location, cursor, combined_event.phase); + self.webrender_api.send_transaction(self.webrender_document, txn); last_combined_event = None } } @@ -1047,7 +1051,9 @@ impl IOCompositor { }; let cursor = (combined_event.cursor.to_f32() / self.scale).to_untyped(); let cursor = webrender_api::WorldPoint::from_untyped(&cursor); - self.webrender_api.scroll(self.webrender_document, scroll_location, cursor, combined_event.phase); + let mut txn = webrender_api::Transaction::new(); + txn.scroll(scroll_location, cursor, combined_event.phase); + self.webrender_api.send_transaction(self.webrender_document, txn); self.waiting_for_results_of_scroll = true } @@ -1145,7 +1151,10 @@ impl IOCompositor { fn update_page_zoom_for_webrender(&mut self) { let page_zoom = webrender_api::ZoomFactor::new(self.page_zoom.get()); - self.webrender_api.set_page_zoom(self.webrender_document, page_zoom); + + let mut txn = webrender_api::Transaction::new(); + txn.set_page_zoom(page_zoom); + self.webrender_api.send_transaction(self.webrender_document, txn); } /// Simulate a pinch zoom @@ -1443,7 +1452,9 @@ impl IOCompositor { } if self.webrender.layers_are_bouncing_back() { - self.webrender_api.tick_scrolling_bounce_animations(self.webrender_document); + let mut txn = webrender_api::Transaction::new(); + txn.tick_scrolling_bounce_animations(); + self.webrender_api.send_transaction(self.webrender_document, txn); self.send_viewport_rects() } } @@ -1537,7 +1548,10 @@ impl IOCompositor { }; flags.toggle(flag); self.webrender.set_debug_flags(flags); - self.webrender_api.generate_frame(self.webrender_document, None); + + let mut txn = webrender_api::Transaction::new(); + txn.generate_frame(); + self.webrender_api.send_transaction(self.webrender_document, txn); } } diff --git a/components/layout_thread/lib.rs b/components/layout_thread/lib.rs index ca231ffc698..bca5da278b8 100644 --- a/components/layout_thread/lib.rs +++ b/components/layout_thread/lib.rs @@ -705,12 +705,13 @@ impl LayoutThread { rw_data.scroll_offsets.insert(state.scroll_root_id, state.scroll_offset); let point = Point2D::new(-state.scroll_offset.x, -state.scroll_offset.y); - self.webrender_api.scroll_node_with_id( - self.webrender_document, + let mut txn = webrender_api::Transaction::new(); + txn.scroll_node_with_id( webrender_api::LayoutPoint::from_untyped(&point), state.scroll_root_id, webrender_api::ScrollClamping::ToContentBounds ); + self.webrender_api.send_transaction(self.webrender_document, txn); } Msg::ReapStyleAndLayoutData(dead_data) => { unsafe { @@ -1044,15 +1045,15 @@ impl LayoutThread { // Progressive Web Metrics. self.paint_time_metrics.maybe_observe_paint_time(self, epoch, &*display_list); - self.webrender_api.set_display_list( - self.webrender_document, + let mut txn = webrender_api::Transaction::new(); + txn.set_display_list( webrender_api::Epoch(epoch.0), Some(get_root_flow_background_color(layout_root)), viewport_size, builder.finalize(), - true, - webrender_api::ResourceUpdates::new()); - self.webrender_api.generate_frame(self.webrender_document, None); + true); + txn.generate_frame(); + self.webrender_api.send_transaction(self.webrender_document, txn); }); }