diff --git a/src/servo/engine.rs b/src/servo/engine.rs index 4bfd5189ae4..868ffd0edf0 100644 --- a/src/servo/engine.rs +++ b/src/servo/engine.rs @@ -1,4 +1,4 @@ -export EngineTask, EngineProto; +export EngineTask, EngineTask_, EngineProto; import gfx::compositor::Compositor; import gfx::render_task; @@ -23,11 +23,19 @@ fn macros() { type EngineTask = EngineProto::client::Running; fn EngineTask(+compositor: C) -> EngineTask { + let resource_task = ResourceTask(); + let image_cache_task = ImageCacheTask(resource_task); + EngineTask_(compositor, resource_task, image_cache_task) +} + +fn EngineTask_( + +compositor: C, + resource_task: ResourceTask, + image_cache_task: ImageCacheTask +) -> EngineTask { do spawn_service(EngineProto::init) |request, move compositor| { let render_task = RenderTask(compositor); - let resource_task = ResourceTask(); - let image_cache_task = ImageCacheTask(resource_task); let layout_task = LayoutTask(render_task, image_cache_task); let content_task = ContentTask(layout_task, compositor, resource_task); diff --git a/src/servo/servo.rs b/src/servo/servo.rs index 2700eb37f43..ef1061aba65 100644 --- a/src/servo/servo.rs +++ b/src/servo/servo.rs @@ -69,10 +69,18 @@ fn run_pipeline_png(-url: ~str, outfile: ~str) { import png_compositor::PngCompositor; import result::{ok, err}; import io::{Writer, buffered_file_writer}; + import resource::resource_task::ResourceTask; + import resource::image_cache_task::SyncImageCacheTask; + import engine::EngineTask_; listen(|pngdata_from_compositor| { let compositor = PngCompositor(pngdata_from_compositor); - let engine_task = EngineTask(compositor); + let resource_task = ResourceTask(); + // For the PNG pipeline we are using a synchronous image cache + // so that all requests will be fullfilled before the first + // render + let image_cache_task = SyncImageCacheTask(resource_task); + let engine_task = EngineTask_(compositor, resource_task, image_cache_task); let engine_task = EngineProto::client::LoadURL(engine_task, make_url(url, none)); match buffered_file_writer(outfile) {