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_document,
|
||||
self.embedder_coordinates.get_flipped_viewport(),
|
||||
self.embedder_coordinates.get_viewport(),
|
||||
self.embedder_coordinates.hidpi_factor.get(),
|
||||
);
|
||||
|
||||
|
|
|
@ -200,6 +200,13 @@ pub struct 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 {
|
||||
let fb_height = self.framebuffer.height;
|
||||
let mut view = self.viewport.clone();
|
||||
|
|
|
@ -381,6 +381,11 @@ where
|
|||
let wr_document_layer = 0; //TODO
|
||||
let webrender_document =
|
||||
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
|
||||
// can't defer it after `create_constellation` has started.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue