From 21cd74826979f6c60c2f6b0d14db2205db99fe6b Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 29 Oct 2012 14:25:35 -0700 Subject: [PATCH] Remove PngCompositor. Will need a different solution --- src/servo/gfx/png_compositor.rs | 107 -------------------------------- src/servo/servo.rc | 1 - src/servo/servo.rs | 5 ++ 3 files changed, 5 insertions(+), 108 deletions(-) delete mode 100644 src/servo/gfx/png_compositor.rs diff --git a/src/servo/gfx/png_compositor.rs b/src/servo/gfx/png_compositor.rs deleted file mode 100644 index bf0b62caa7f..00000000000 --- a/src/servo/gfx/png_compositor.rs +++ /dev/null @@ -1,107 +0,0 @@ -/*! -A graphics compositor that renders to PNG format buffers - -Each time the renderer renders a frame the compositor will output a -`~[u8]` containing the frame in PNG format. -*/ - -use azure::azure_hl::DrawTarget; -use azure_bg = azure::bindgen; -use azure_bg::{AzCreateDrawTargetForCairoSurface, AzReleaseDrawTarget}; -use cairo::cairo_hl::ImageSurface; -use cairo::{CAIRO_FORMAT_ARGB32, cairo_surface_t, cairo_status_t, CAIRO_STATUS_SUCCESS}; -use cairo_bg = cairo::bindgen; -use cairo_bg::{cairo_image_surface_create, cairo_surface_destroy}; -use cairo_bg::{cairo_surface_write_to_png_stream}; -use cast::reinterpret_cast; -use comm::{Chan, Port}; -use compositor::Compositor; -use core::io::BytesWriter; -use display_list::DisplayList; -use dom::event::Event; -use dvec::DVec; -use geom::point::Point2D; -use geom::rect::Rect; -use geom::size::Size2D; -use gfx::compositor::{LayerBuffer, LayerBufferSet}; -use gfx::render_layers::RenderLayer; -use libc::{c_int, c_uint, c_void, c_uchar}; -use ptr::addr_of; -use render_task::{RenderTask, RenderMsg}; -use std::cell::Cell; -use task::spawn_listener; - -pub type PngCompositor = Chan; - -pub enum Msg { - BeginDrawing(pipes::Chan), - Draw(pipes::Chan, LayerBufferSet), - Exit -} - -impl Chan : Compositor { - fn begin_drawing(next_dt: pipes::Chan) { - self.send(BeginDrawing(move next_dt)) - } - fn draw(next_dt: pipes::Chan, draw_me: LayerBufferSet) { - self.send(Draw(move next_dt, move draw_me)) - } -} - -pub fn PngCompositor(output: Chan<~[u8]>) -> PngCompositor { - do spawn_listener |po: Port| { - let cairo_surface = ImageSurface(CAIRO_FORMAT_ARGB32, 800, 600); - let draw_target = DrawTarget(&cairo_surface); - let layer_buffer = LayerBuffer { - cairo_surface: cairo_surface.clone(), - draw_target: move draw_target, - rect: Rect(Point2D(0u, 0u), Size2D(800u, 600u)), - stride: 800 - }; - let layer_buffer_set = LayerBufferSet { buffers: ~[ move layer_buffer ] }; - let layer_buffer_set = Cell(move layer_buffer_set); - - loop { - match po.recv() { - BeginDrawing(sender) => { - debug!("png_compositor: begin_drawing"); - sender.send(layer_buffer_set.take()); - } - Draw(move sender, move layer_buffer_set) => { - debug!("png_compositor: draw"); - do_draw(move sender, move layer_buffer_set, output, &cairo_surface); - } - Exit => break - } - } - } -} - -fn do_draw(sender: pipes::Chan, - layer_buffer_set: LayerBufferSet, - output: Chan<~[u8]>, - cairo_surface: &ImageSurface) { - let buffer = BytesWriter(); - cairo_surface.write_to_png_stream(&buffer); - output.send(buffer.bytes.get()); - - // Send the next draw target to the renderer - sender.send(move layer_buffer_set); -} - -#[test] -fn sanity_check() { - do listen |self_channel| { - let compositor = PngCompositor(self_channel); - let renderer = RenderTask(compositor); - - let dlist : DisplayList = DVec(); - let render_layer = RenderLayer { display_list: move dlist, size: Size2D(800u, 600u) }; - renderer.send(RenderMsg(move render_layer)); - let (exit_chan, exit_response_from_engine) = pipes::stream(); - renderer.send(render_task::ExitMsg(move exit_chan)); - exit_response_from_engine.recv(); - - compositor.send(Exit) - } -} diff --git a/src/servo/servo.rc b/src/servo/servo.rc index b20c993816e..ca097bb0226 100755 --- a/src/servo/servo.rc +++ b/src/servo/servo.rc @@ -77,7 +77,6 @@ pub mod gfx { pub mod surface; pub mod render_task; pub mod compositor; - pub mod png_compositor; pub mod display_list; pub mod render_layers; priv mod render_context; diff --git a/src/servo/servo.rs b/src/servo/servo.rs index a57611faa4b..3117c9c73ef 100644 --- a/src/servo/servo.rs +++ b/src/servo/servo.rs @@ -69,6 +69,11 @@ fn run_pipeline_screen(urls: &[~str]) { osmain.send(osmain::Exit); } +fn run_pipeline_png(_url: ~str, _outfile: &str) { + fail ~"PNG compositor is broken"; +} + +#[cfg(broken)] fn run_pipeline_png(url: ~str, outfile: &str) { // Use a PNG encoder as the graphics compositor use gfx::png_compositor;