mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Auto merge of #19814 - glennw:update-wr-txn, r=emilio
Update WR (minimal use of new transaction API). <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19814) <!-- Reviewable:end -->
This commit is contained in:
commit
0b86b60238
4 changed files with 37 additions and 18 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -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)",
|
||||
|
|
|
@ -353,7 +353,9 @@ impl<VR: WebVRRenderHandler + 'static, OB: WebGLThreadObserver> WebGLThread<VR,
|
|||
self.dom_outputs.insert(pipeline_id, DOMToTextureData {
|
||||
context_id, texture_id, document_id, size
|
||||
});
|
||||
self.webrender_api.enable_frame_output(document_id, pipeline_id, true);
|
||||
let mut txn = webrender_api::Transaction::new();
|
||||
txn.enable_frame_output(pipeline_id, true);
|
||||
self.webrender_api.send_transaction(document_id, txn);
|
||||
},
|
||||
DOMToTextureCommand::Lock(pipeline_id, gl_sync, sender) => {
|
||||
let contexts = &self.contexts;
|
||||
|
@ -376,7 +378,9 @@ impl<VR: WebVRRenderHandler + 'static, OB: WebGLThreadObserver> WebGLThread<VR,
|
|||
if let Some((pipeline_id, document_id)) = self.dom_outputs.iter()
|
||||
.find(|&(_, v)| v.texture_id == texture_id)
|
||||
.map(|(k, v)| (*k, v.document_id)) {
|
||||
self.webrender_api.enable_frame_output(document_id, pipeline_id, false);
|
||||
let mut txn = webrender_api::Transaction::new();
|
||||
txn.enable_frame_output(pipeline_id, false);
|
||||
self.webrender_api.send_transaction(document_id, txn);
|
||||
self.dom_outputs.remove(&pipeline_id);
|
||||
}
|
||||
},
|
||||
|
|
|
@ -609,8 +609,10 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
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<Window: WindowMethods> IOCompositor<Window> {
|
|||
(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<Window: WindowMethods> IOCompositor<Window> {
|
|||
};
|
||||
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<Window: WindowMethods> IOCompositor<Window> {
|
|||
|
||||
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<Window: WindowMethods> IOCompositor<Window> {
|
|||
}
|
||||
|
||||
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<Window: WindowMethods> IOCompositor<Window> {
|
|||
};
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue