diff options
-rw-r--r-- | components/compositing/compositor.rs | 2 | ||||
-rw-r--r-- | components/compositing/windowing.rs | 7 | ||||
-rw-r--r-- | components/servo/lib.rs | 5 |
3 files changed, 13 insertions, 1 deletions
diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index e7ec426d263..67cecd6a4a0 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -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(), ); diff --git a/components/compositing/windowing.rs b/components/compositing/windowing.rs index fad75173cab..1470d6684a6 100644 --- a/components/compositing/windowing.rs +++ b/components/compositing/windowing.rs @@ -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(); diff --git a/components/servo/lib.rs b/components/servo/lib.rs index ff84c4bf4ab..51df1f0c991 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -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. |