From 25e8077681cd7991832eeb749ef9a1d5d87aaaaf Mon Sep 17 00:00:00 2001 From: Cameron Zwarich Date: Thu, 10 Jul 2014 01:31:47 -0700 Subject: [PATCH] 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. --- src/components/compositing/compositor.rs | 5 +++-- src/components/compositing/compositor_data.rs | 9 ++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/compositing/compositor.rs b/src/components/compositing/compositor.rs index fc689e12a5e..4c23043175c 100644 --- a/src/components/compositing/compositor.rs +++ b/src/components/compositing/compositor.rs @@ -26,6 +26,7 @@ use geom::point::{Point2D, TypedPoint2D}; use geom::rect::Rect; use geom::size::TypedSize2D; use geom::scale_factor::ScaleFactor; +use gfx::render_task::ReRenderMsg; use layers::layers::LayerBufferSet; use layers::platform::surface::NativeCompositingGraphicsContext; use layers::rendergl; @@ -750,8 +751,8 @@ impl IOCompositor { &self.graphics_context, rect, scale.get()); - for (chan, msg) in requests.move_iter() { - let _ = chan.send_opt(msg); + for (chan, request) in requests.move_iter() { + let _ = chan.send_opt(ReRenderMsg(request)); } self.recomposite = self.recomposite || recomposite; } diff --git a/src/components/compositing/compositor_data.rs b/src/components/compositing/compositor_data.rs index 95b89b7a579..1e8f195a775 100644 --- a/src/components/compositing/compositor_data.rs +++ b/src/components/compositing/compositor_data.rs @@ -11,8 +11,7 @@ use geom::matrix::identity; use geom::point::TypedPoint2D; use geom::rect::Rect; use geom::size::{Size2D, TypedSize2D}; -use gfx::render_task; -use gfx::render_task::{ReRenderMsg, ReRenderRequest, RenderChan, UnusedBufferMsg}; +use gfx::render_task::{ReRenderRequest, RenderChan, UnusedBufferMsg}; use layers::layers::{Layer, Flip, LayerBuffer, LayerBufferSet, NoFlip, TextureLayer}; use layers::quadtree::Tile; 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 // 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>, graphics_context: &NativeCompositingGraphicsContext, window_rect: Rect, @@ -139,12 +138,12 @@ impl CompositorData { // // 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. - let msg = ReRenderMsg(ReRenderRequest { + let msg = ReRenderRequest { buffer_requests: request, scale: scale, layer_id: layer.extra_data.borrow().id, epoch: layer.extra_data.borrow().epoch, - }); + }; requests.push((layer.extra_data.borrow().pipeline.render_chan.clone(), msg)); }