mirror of
https://github.com/servo/servo.git
synced 2025-08-07 14:35:33 +01:00
Fix viewport origin of webrender frame (#30088)
* Fix viewport origin of webrender frame * Update documentations
This commit is contained in:
parent
c264993da8
commit
1f7f4cf2be
3 changed files with 13 additions and 1 deletions
|
@ -918,7 +918,7 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
||||||
|
|
||||||
self.webrender_api.set_document_view(
|
self.webrender_api.set_document_view(
|
||||||
self.webrender_document,
|
self.webrender_document,
|
||||||
self.embedder_coordinates.get_flipped_viewport(),
|
self.embedder_coordinates.get_viewport(),
|
||||||
self.embedder_coordinates.hidpi_factor.get(),
|
self.embedder_coordinates.hidpi_factor.get(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -200,6 +200,13 @@ pub struct EmbedderCoordinates {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EmbedderCoordinates {
|
impl EmbedderCoordinates {
|
||||||
|
/// Get the unflipped viewport rectangle for use with the WebRender API.
|
||||||
|
pub fn get_viewport(&self) -> DeviceIntRect {
|
||||||
|
DeviceIntRect::from_untyped(&self.viewport.to_untyped())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get the flipped viewport rectangle. This should be used when drawing directly
|
||||||
|
/// to the framebuffer with OpenGL commands.
|
||||||
pub fn get_flipped_viewport(&self) -> DeviceIntRect {
|
pub fn get_flipped_viewport(&self) -> DeviceIntRect {
|
||||||
let fb_height = self.framebuffer.height;
|
let fb_height = self.framebuffer.height;
|
||||||
let mut view = self.viewport.clone();
|
let mut view = self.viewport.clone();
|
||||||
|
|
|
@ -381,6 +381,11 @@ where
|
||||||
let wr_document_layer = 0; //TODO
|
let wr_document_layer = 0; //TODO
|
||||||
let webrender_document =
|
let webrender_document =
|
||||||
webrender_api.add_document(coordinates.framebuffer, wr_document_layer);
|
webrender_api.add_document(coordinates.framebuffer, wr_document_layer);
|
||||||
|
webrender_api.set_document_view(
|
||||||
|
webrender_document,
|
||||||
|
coordinates.get_viewport(),
|
||||||
|
coordinates.hidpi_factor.get(),
|
||||||
|
);
|
||||||
|
|
||||||
// Important that this call is done in a single-threaded fashion, we
|
// Important that this call is done in a single-threaded fashion, we
|
||||||
// can't defer it after `create_constellation` has started.
|
// can't defer it after `create_constellation` has started.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue