From eaa9b460c354ab570e921953ec67fd3e4c7e2704 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 3 May 2012 15:09:55 -0700 Subject: [PATCH] Move some code to layout/lister for building display lists --- src/servo/input.rs | 4 ++-- src/servo/layout/lister.rs | 48 ++++++++++++++++++++++++++++++++++++++ src/servo/servo.rc | 1 + src/servo/servo.rs | 34 +++------------------------ 4 files changed, 54 insertions(+), 33 deletions(-) create mode 100644 src/servo/layout/lister.rs diff --git a/src/servo/input.rs b/src/servo/input.rs index b87a0ee9fbc..ff60861f91b 100644 --- a/src/servo/input.rs +++ b/src/servo/input.rs @@ -1,7 +1,7 @@ fn input( osmain_ch: comm::chan, draw_ch: comm::chan, - model_ch: comm::chan<()> + model_ch: comm::chan ) { task::spawn {|| let key_po = comm::port(); @@ -9,7 +9,7 @@ fn input( loop { alt comm::recv(key_po) { _ { - comm::send(model_ch, ()); + comm::send(model_ch, layout::lister::exit); let draw_exit_confirm_po = comm::port(); comm::send(draw_ch, gfx::renderer::exit(comm::chan(draw_exit_confirm_po))); comm::recv(draw_exit_confirm_po); diff --git a/src/servo/layout/lister.rs b/src/servo/layout/lister.rs new file mode 100644 index 00000000000..a7b9e20bdf1 --- /dev/null +++ b/src/servo/layout/lister.rs @@ -0,0 +1,48 @@ +#[doc = " + +Builds display lists on request and passes them to the renderer + +"]; + +import task::*; +import comm::*; +import gfx::renderer; + +enum msg { + build, + exit +} + +fn lister(renderer: chan) -> chan { + + spawn_listener {|po| + let mut x1 = 100; + let mut y1 = 100; + let mut w1 = 200; + let mut h1 = 200; + let mut x2 = 200; + let mut y2 = 200; + let mut w2 = 300; + let mut h2 = 300; + + while !peek(po) { + let model = { + x1: x1, y1: y1, w1: w1, h1: h1, + x2: x2, y2: y2, w2: w2, h2: h2 + }; + send(renderer, gfx::renderer::draw(model)); + + std::timer::sleep(100u); + + x1 += 1; + y1 += 1; + x2 -= 1; + y2 -= 1; + if x1 > 800 { x1 = 0 } + if y1 > 600 { y1 = 0 } + if x2 < 0 { x2 = 800 } + if y2 < 0 { y2 = 600 } + } + } + +} diff --git a/src/servo/servo.rc b/src/servo/servo.rc index 9688be64eb8..a05510f302c 100755 --- a/src/servo/servo.rc +++ b/src/servo/servo.rc @@ -29,6 +29,7 @@ mod image { mod layout { mod base; + mod lister; } mod widget { diff --git a/src/servo/servo.rs b/src/servo/servo.rs index 3ec449cbaf6..392b9be9fca 100644 --- a/src/servo/servo.rs +++ b/src/servo/servo.rs @@ -11,37 +11,9 @@ fn main() { // The compositor let renderer = gfx::renderer::renderer(osmain_ch); - // Not sure what this is but it decides what to draw - let model_ch = task::spawn_listener {|po| - let mut x1 = 100; - let mut y1 = 100; - let mut w1 = 200; - let mut h1 = 200; - let mut x2 = 200; - let mut y2 = 200; - let mut w2 = 300; - let mut h2 = 300; - - while !comm::peek(po) { - let model = { - x1: x1, y1: y1, w1: w1, h1: h1, - x2: x2, y2: y2, w2: w2, h2: h2 - }; - comm::send(renderer, gfx::renderer::draw(model)); - - std::timer::sleep(100u); - - x1 += 1; - y1 += 1; - x2 -= 1; - y2 -= 1; - if x1 > 800 { x1 = 0 } - if y1 > 600 { y1 = 0 } - if x2 < 0 { x2 = 800 } - if y2 < 0 { y2 = 600 } - } - }; + // The display list builder + let lister = layout::lister::lister(renderer); // The keyboard handler - input::input(osmain_ch, renderer, model_ch); + input::input(osmain_ch, renderer, lister); } \ No newline at end of file