mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Don't perform composite unless renderer has indicated it's idle
The rendergl::render_scene() function is being called more often than it needs to be, sometimes before the renderer has finished. This could result in PNG images that are drawn before the frame trees set in SetIds is rendered.
This commit is contained in:
parent
44404766da
commit
a9af374942
1 changed files with 10 additions and 2 deletions
|
@ -23,6 +23,7 @@ use layers::rendergl;
|
|||
use layers::scene::Scene;
|
||||
use opengles::gl2;
|
||||
use png;
|
||||
use servo_msg::compositor_msg::IdleRenderState;
|
||||
use servo_msg::constellation_msg::{ConstellationChan, NavigateMsg, ResizedWindowMsg, LoadUrlMsg};
|
||||
use servo_msg::constellation_msg;
|
||||
use servo_util::time::profile;
|
||||
|
@ -49,6 +50,7 @@ pub fn run_compositor(compositor: &CompositorTask) {
|
|||
let mut window_size = Size2D(window_size.width as uint, window_size.height as uint);
|
||||
let mut done = false;
|
||||
let mut recomposite = false;
|
||||
let mut composite_ready = false;
|
||||
let graphics_context = CompositorTask::create_graphics_context();
|
||||
|
||||
// Keeps track of the current zoom factor
|
||||
|
@ -82,7 +84,13 @@ pub fn run_compositor(compositor: &CompositorTask) {
|
|||
Exit => done = true,
|
||||
|
||||
ChangeReadyState(ready_state) => window.set_ready_state(ready_state),
|
||||
ChangeRenderState(render_state) => window.set_render_state(render_state),
|
||||
ChangeRenderState(render_state) => {
|
||||
window.set_render_state(render_state);
|
||||
composite_ready = match render_state {
|
||||
IdleRenderState => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
SetUnRenderedColor(_id, color) => {
|
||||
match compositor_layer {
|
||||
|
@ -404,7 +412,7 @@ pub fn run_compositor(compositor: &CompositorTask) {
|
|||
// Check for messages coming from the windowing system.
|
||||
check_for_window_messages(window.recv());
|
||||
|
||||
if recomposite {
|
||||
if recomposite && composite_ready {
|
||||
recomposite = false;
|
||||
composite();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue