diff --git a/src/servo/content.rs b/src/servo/content.rs index 82e163c15b8c..c5d03b73bed0 100644 --- a/src/servo/content.rs +++ b/src/servo/content.rs @@ -73,8 +73,8 @@ class Document { class Content { let sink: S; let layout: Layout; - let from_master: port; - let event_port: port; + let from_master: comm::port; + let event_port: comm::port; let scope: NodeScope; let jsrt: jsrt; diff --git a/src/servo/engine.rs b/src/servo/engine.rs index c7c250aac967..8cc97b83e3c8 100644 --- a/src/servo/engine.rs +++ b/src/servo/engine.rs @@ -5,12 +5,14 @@ import layout::layout_task; import layout_task::Layout; import content::{Content, ExecuteMsg, ParseMsg, ExitMsg, create_content}; +import pipes::{port, chan}; + class Engine { let sink: S; let renderer: Renderer; let layout: Layout; - let content: chan; + let content: comm::chan; new(+sink: S) { self.sink = sink; @@ -24,7 +26,7 @@ class Engine { self.content = content; } - fn start() -> chan { + fn start() -> comm::chan { do spawn_listener:: |request| { while self.handle_request(request.recv()) { // Go on... @@ -47,10 +49,12 @@ class Engine { ExitMsg(sender) { self.content.send(content::ExitMsg); self.layout.send(layout_task::ExitMsg); - do listen |response_channel| { - self.renderer.send(renderer::ExitMsg(response_channel)); - response_channel.recv(); - } + + let (response_chan, response_port) = pipes::stream(); + + self.renderer.send(renderer::ExitMsg(response_chan)); + response_port.recv(); + sender.send(()); ret false; } diff --git a/src/servo/gfx/pngsink.rs b/src/servo/gfx/pngsink.rs index 634f44a124e4..adec1e64a626 100644 --- a/src/servo/gfx/pngsink.rs +++ b/src/servo/gfx/pngsink.rs @@ -131,10 +131,9 @@ fn sanity_check() { let dlist : display_list = dvec(); renderer.send(RenderMsg(dlist)); - listen(|from_renderer| { - renderer.send(renderer::ExitMsg(from_renderer)); - from_renderer.recv(); - }); + let (exit_chan, exit_response_from_engine) = pipes::stream(); + renderer.send(renderer::ExitMsg(exit_chan)); + exit_response_from_engine.recv(); sink.send(Exit) }) diff --git a/src/servo/gfx/renderer.rs b/src/servo/gfx/renderer.rs index 8f11316e8112..5a9146e33fae 100644 --- a/src/servo/gfx/renderer.rs +++ b/src/servo/gfx/renderer.rs @@ -15,11 +15,13 @@ import azure_hl::AsAzureRect; import ptr::addr_of; import arc::arc; -type Renderer = chan; +import pipes::{port, chan}; + +type Renderer = comm::chan; enum Msg { RenderMsg(dl::display_list), - ExitMsg(comm::chan<()>) + ExitMsg(pipes::chan<()>) } #[doc = " @@ -29,12 +31,12 @@ each rendered frame and submit them to be drawn to the display FIXME: Change this name to Compositor. "] iface Sink { - fn begin_drawing(next_dt: chan); - fn draw(next_dt: chan, draw_me: AzDrawTargetRef); - fn add_event_listener(listener: chan); + fn begin_drawing(next_dt: comm::chan); + fn draw(next_dt: comm::chan, draw_me: AzDrawTargetRef); + fn add_event_listener(listener: comm::chan); } -fn Renderer(sink: S) -> chan { +fn Renderer(sink: S) -> comm::chan { task::spawn_listener::(|po| { listen(|draw_target_ch| { #debug("renderer: beginning rendering loop"); diff --git a/src/servo/servo.rs b/src/servo/servo.rs index 92480688b34b..8a0f9203e601 100644 --- a/src/servo/servo.rs +++ b/src/servo/servo.rs @@ -5,7 +5,7 @@ import osmain::{OSMain, AddKeyHandler}; import opts::{Opts, Screen, Png}; import engine::{Engine, LoadURLMsg}; -import pipes::port; +import pipes::{port, chan}; fn main(args: ~[~str]) { run(opts::from_cmdline_args(args)) @@ -52,10 +52,10 @@ fn run_pipeline_screen(urls: ~[~str]) { // Shut everything down #debug["master: Shut down"]; - listen(|exit_response_from_engine| { - engine_chan.send(engine::ExitMsg(exit_response_from_engine)); - exit_response_from_engine.recv(); - }); + let (exit_chan, exit_response_from_engine) = pipes::stream(); + engine_chan.send(engine::ExitMsg(exit_chan)); + exit_response_from_engine.recv(); + osmain.send(osmain::Exit); } @@ -79,10 +79,9 @@ fn run_pipeline_png(-url: ~str, outfile: ~str) { } err(e) { fail e } } - listen(|exit_response_from_engine| { - engine_chan.send(engine::ExitMsg(exit_response_from_engine)); - exit_response_from_engine.recv(); - }); + let (exit_chan, exit_response_from_engine) = pipes::stream(); + engine_chan.send(engine::ExitMsg(exit_chan)); + exit_response_from_engine.recv(); sink.send(pngsink::Exit); }) }