Use a SyncImageCacheTask on the PNG pipeline

This commit is contained in:
Brian Anderson 2012-08-22 12:16:50 -07:00
parent 18c4263663
commit ec71456bcf
2 changed files with 20 additions and 4 deletions

View file

@ -1,4 +1,4 @@
export EngineTask, EngineProto; export EngineTask, EngineTask_, EngineProto;
import gfx::compositor::Compositor; import gfx::compositor::Compositor;
import gfx::render_task; import gfx::render_task;
@ -23,11 +23,19 @@ fn macros() {
type EngineTask = EngineProto::client::Running; type EngineTask = EngineProto::client::Running;
fn EngineTask<C: Compositor send copy>(+compositor: C) -> EngineTask { fn EngineTask<C: Compositor send copy>(+compositor: C) -> EngineTask {
let resource_task = ResourceTask();
let image_cache_task = ImageCacheTask(resource_task);
EngineTask_(compositor, resource_task, image_cache_task)
}
fn EngineTask_<C: Compositor send copy>(
+compositor: C,
resource_task: ResourceTask,
image_cache_task: ImageCacheTask
) -> EngineTask {
do spawn_service(EngineProto::init) |request, move compositor| { do spawn_service(EngineProto::init) |request, move compositor| {
let render_task = RenderTask(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 layout_task = LayoutTask(render_task, image_cache_task);
let content_task = ContentTask(layout_task, compositor, resource_task); let content_task = ContentTask(layout_task, compositor, resource_task);

View file

@ -69,10 +69,18 @@ fn run_pipeline_png(-url: ~str, outfile: ~str) {
import png_compositor::PngCompositor; import png_compositor::PngCompositor;
import result::{ok, err}; import result::{ok, err};
import io::{Writer, buffered_file_writer}; import io::{Writer, buffered_file_writer};
import resource::resource_task::ResourceTask;
import resource::image_cache_task::SyncImageCacheTask;
import engine::EngineTask_;
listen(|pngdata_from_compositor| { listen(|pngdata_from_compositor| {
let compositor = PngCompositor(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)); let engine_task = EngineProto::client::LoadURL(engine_task, make_url(url, none));
match buffered_file_writer(outfile) { match buffered_file_writer(outfile) {