Fix paint permissions issue, clean up

This commit is contained in:
eschweic 2013-07-08 12:01:52 -07:00
parent 1b225fbad2
commit d40086048c
3 changed files with 13 additions and 13 deletions

View file

@ -18,7 +18,6 @@ use render_context::RenderContext;
use std::cell::Cell; use std::cell::Cell;
use std::comm::{Chan, Port, SharedChan}; use std::comm::{Chan, Port, SharedChan};
use std::uint;
use servo_util::time::{ProfilerChan, profile}; use servo_util::time::{ProfilerChan, profile};
use servo_util::time; use servo_util::time;
@ -118,7 +117,9 @@ impl<C: RenderListener + Send> RenderTask<C> {
loop { loop {
match self.port.recv() { match self.port.recv() {
RenderMsg(render_layer) => { RenderMsg(render_layer) => {
self.compositor.new_layer(render_layer.size, self.opts.tile_size); if self.paint_permission {
self.compositor.new_layer(render_layer.size, self.opts.tile_size);
}
self.render_layer = Some(render_layer); self.render_layer = Some(render_layer);
} }
ReRenderMsg(tiles, scale) => { ReRenderMsg(tiles, scale) => {
@ -126,10 +127,9 @@ impl<C: RenderListener + Send> RenderTask<C> {
} }
PaintPermissionGranted => { PaintPermissionGranted => {
self.paint_permission = true; self.paint_permission = true;
match self.last_paint_msg { match self.render_layer {
Some((ref layer_buffer_set, layer_size)) => { Some(ref render_layer) => {
self.compositor.paint(self.id, layer_buffer_set.clone(), layer_size); self.compositor.new_layer(render_layer.size, self.opts.tile_size);
self.compositor.set_render_state(IdleRenderState);
} }
None => {} None => {}
} }
@ -146,8 +146,6 @@ impl<C: RenderListener + Send> RenderTask<C> {
} }
fn render(&mut self, tiles: ~[(Rect<uint>, Rect<f32>)], scale: f32) { fn render(&mut self, tiles: ~[(Rect<uint>, Rect<f32>)], scale: f32) {
debug!("render_task: rendering");
let render_layer; let render_layer;
match self.render_layer { match self.render_layer {
Some(ref r_layer) => { Some(ref r_layer) => {
@ -158,7 +156,6 @@ impl<C: RenderListener + Send> RenderTask<C> {
self.compositor.set_render_state(RenderingRenderState); self.compositor.set_render_state(RenderingRenderState);
do time::profile(time::RenderingCategory, self.profiler_chan.clone()) { do time::profile(time::RenderingCategory, self.profiler_chan.clone()) {
let tile_size = self.opts.tile_size;
// FIXME: Try not to create a new array here. // FIXME: Try not to create a new array here.
let mut new_buffers = ~[]; let mut new_buffers = ~[];

View file

@ -40,7 +40,6 @@ use servo_util::time::ProfilerChan;
use extra::arc; use extra::arc;
pub use windowing; pub use windowing;
//eschweic
use compositing::quadtree::Quadtree; use compositing::quadtree::Quadtree;
mod quadtree; mod quadtree;
@ -273,11 +272,15 @@ impl CompositorTask {
Some(ref chan) => { Some(ref chan) => {
chan.send(ReRenderMsg(tile_request, *world_zoom)); chan.send(ReRenderMsg(tile_request, *world_zoom));
} }
_ => {} _ => {
println("Warning: Compositor: Cannot send tile request, no render chan initialized");
}
} }
} }
} }
_ => {} _ => {
fail!("Compositor: Tried to ask for tiles without an initialized quadtree");
}
} }
}; };

View file

@ -53,7 +53,7 @@ pub enum ReadyState {
/// submit them to be drawn to the display. /// submit them to be drawn to the display.
pub trait RenderListener { pub trait RenderListener {
fn get_gl_context(&self) -> AzGLContext; fn get_gl_context(&self) -> AzGLContext;
fn new_layer(&self, Size2D<uint>, uint); //eschweic fn new_layer(&self, Size2D<uint>, uint);
fn resize_layer(&self, Size2D<uint>); fn resize_layer(&self, Size2D<uint>);
fn delete_layer(&self); fn delete_layer(&self);
fn paint(&self, id: uint, layer_buffer_set: arc::ARC<LayerBufferSet>, new_size: Size2D<uint>); fn paint(&self, id: uint, layer_buffer_set: arc::ARC<LayerBufferSet>, new_size: Size2D<uint>);