diff options
Diffstat (limited to 'components')
-rw-r--r-- | components/compositing/compositor.rs | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index fffb9ad3f7a..7b203933fb8 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -1206,22 +1206,9 @@ impl<Window: WindowMethods> IOCompositor<Window> { &self.embedder_coordinates.framebuffer.to_untyped(), ); - self.window.gl().clear_color(0.0, 0.0, 0.0, 0.0); - self.window.gl().clear(gleam::gl::COLOR_BUFFER_BIT); - let viewport = self.embedder_coordinates.get_flipped_viewport(); - self.window.gl().scissor( - viewport.origin.x, - viewport.origin.y, - viewport.size.width, - viewport.size.height, - ); - self.window.gl().clear_color(1.0, 1.0, 1.0, 1.0); - self.window.gl().enable(gleam::gl::SCISSOR_TEST); - self.window.gl().clear(gleam::gl::COLOR_BUFFER_BIT); - self.window.gl().disable(gleam::gl::SCISSOR_TEST); - // Paint the scene. // TODO(gw): Take notice of any errors the renderer returns! + self.clear_background(); self.webrender.render(size).ok(); }, ); @@ -1328,6 +1315,27 @@ impl<Window: WindowMethods> IOCompositor<Window> { } } + fn clear_background(&self) { + let gl = self.window.gl(); + + // Make framebuffer fully transparent. + gl.clear_color(0.0, 0.0, 0.0, 0.0); + gl.clear(gleam::gl::COLOR_BUFFER_BIT); + + // Make the viewport white. + let viewport = self.embedder_coordinates.get_flipped_viewport(); + gl.scissor( + viewport.origin.x, + viewport.origin.y, + viewport.size.width, + viewport.size.height, + ); + gl.clear_color(1.0, 1.0, 1.0, 1.0); + gl.enable(gleam::gl::SCISSOR_TEST); + gl.clear(gleam::gl::COLOR_BUFFER_BIT); + gl.disable(gleam::gl::SCISSOR_TEST); + } + fn get_root_pipeline_id(&self) -> Option<PipelineId> { self.root_pipeline.as_ref().map(|pipeline| pipeline.id) } |