Batch ReRenderRequests rather than render_task::Msg

Make get_buffer_requests_recursively create a ReRenderRequest rather
than a ReRenderMsg, and have its caller create the ReRenderMsg from
the ReRenderRequest.
This commit is contained in:
Cameron Zwarich 2014-07-10 01:31:47 -07:00
parent 5611e34379
commit 25e8077681
2 changed files with 7 additions and 7 deletions

View file

@ -26,6 +26,7 @@ use geom::point::{Point2D, TypedPoint2D};
use geom::rect::Rect; use geom::rect::Rect;
use geom::size::TypedSize2D; use geom::size::TypedSize2D;
use geom::scale_factor::ScaleFactor; use geom::scale_factor::ScaleFactor;
use gfx::render_task::ReRenderMsg;
use layers::layers::LayerBufferSet; use layers::layers::LayerBufferSet;
use layers::platform::surface::NativeCompositingGraphicsContext; use layers::platform::surface::NativeCompositingGraphicsContext;
use layers::rendergl; use layers::rendergl;
@ -750,8 +751,8 @@ impl IOCompositor {
&self.graphics_context, &self.graphics_context,
rect, rect,
scale.get()); scale.get());
for (chan, msg) in requests.move_iter() { for (chan, request) in requests.move_iter() {
let _ = chan.send_opt(msg); let _ = chan.send_opt(ReRenderMsg(request));
} }
self.recomposite = self.recomposite || recomposite; self.recomposite = self.recomposite || recomposite;
} }

View file

@ -11,8 +11,7 @@ use geom::matrix::identity;
use geom::point::TypedPoint2D; use geom::point::TypedPoint2D;
use geom::rect::Rect; use geom::rect::Rect;
use geom::size::{Size2D, TypedSize2D}; use geom::size::{Size2D, TypedSize2D};
use gfx::render_task; use gfx::render_task::{ReRenderRequest, RenderChan, UnusedBufferMsg};
use gfx::render_task::{ReRenderMsg, ReRenderRequest, RenderChan, UnusedBufferMsg};
use layers::layers::{Layer, Flip, LayerBuffer, LayerBufferSet, NoFlip, TextureLayer}; use layers::layers::{Layer, Flip, LayerBuffer, LayerBufferSet, NoFlip, TextureLayer};
use layers::quadtree::Tile; use layers::quadtree::Tile;
use layers::platform::surface::{NativeCompositingGraphicsContext, NativeSurfaceMethods}; use layers::platform::surface::{NativeCompositingGraphicsContext, NativeSurfaceMethods};
@ -121,7 +120,7 @@ impl CompositorData {
// Given the current window size, determine which tiles need to be (re-)rendered and sends them // Given the current window size, determine which tiles need to be (re-)rendered and sends them
// off the the appropriate renderer. Returns true if and only if the scene should be repainted. // off the the appropriate renderer. Returns true if and only if the scene should be repainted.
pub fn get_buffer_requests_recursively(requests: &mut Vec<(RenderChan, render_task::Msg)>, pub fn get_buffer_requests_recursively(requests: &mut Vec<(RenderChan, ReRenderRequest)>,
layer: Rc<Layer<CompositorData>>, layer: Rc<Layer<CompositorData>>,
graphics_context: &NativeCompositingGraphicsContext, graphics_context: &NativeCompositingGraphicsContext,
window_rect: Rect<f32>, window_rect: Rect<f32>,
@ -139,12 +138,12 @@ impl CompositorData {
// //
// FIXME(#2003, pcwalton): We may want to batch these up in the case in which // FIXME(#2003, pcwalton): We may want to batch these up in the case in which
// one page has multiple layers, to avoid the user seeing inconsistent states. // one page has multiple layers, to avoid the user seeing inconsistent states.
let msg = ReRenderMsg(ReRenderRequest { let msg = ReRenderRequest {
buffer_requests: request, buffer_requests: request,
scale: scale, scale: scale,
layer_id: layer.extra_data.borrow().id, layer_id: layer.extra_data.borrow().id,
epoch: layer.extra_data.borrow().epoch, epoch: layer.extra_data.borrow().epoch,
}); };
requests.push((layer.extra_data.borrow().pipeline.render_chan.clone(), msg)); requests.push((layer.extra_data.borrow().pipeline.render_chan.clone(), msg));
} }