From ec046a116026d17e3d7a59ffd29d78ca9edb78f1 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Tue, 17 Apr 2012 16:12:58 -0700 Subject: [PATCH] Move keyboard handling to input module --- src/servo/input.rs | 22 ++++++++++++++++++++++ src/servo/servo.rc | 1 + src/servo/servo.rs | 17 +---------------- 3 files changed, 24 insertions(+), 16 deletions(-) create mode 100644 src/servo/input.rs diff --git a/src/servo/input.rs b/src/servo/input.rs new file mode 100644 index 00000000000..fa27056bc01 --- /dev/null +++ b/src/servo/input.rs @@ -0,0 +1,22 @@ +fn input( + osmain_ch: comm::chan, + draw_ch: comm::chan, + model_ch: comm::chan<()> +) { + task::spawn {|| + let key_po = comm::port(); + comm::send(osmain_ch, osmain::add_key_handler(comm::chan(key_po))); + loop { + alt comm::recv(key_po) { + _ { + comm::send(model_ch, ()); + let draw_exit_confirm_po = comm::port(); + comm::send(draw_ch, gfx::compositor::exit(comm::chan(draw_exit_confirm_po))); + comm::recv(draw_exit_confirm_po); + comm::send(osmain_ch, osmain::exit); + break; + } + } + } + } +} diff --git a/src/servo/servo.rc b/src/servo/servo.rc index 237a647e261..5a2f3dbecc4 100755 --- a/src/servo/servo.rc +++ b/src/servo/servo.rc @@ -40,3 +40,4 @@ mod util { } mod osmain; +mod input; \ No newline at end of file diff --git a/src/servo/servo.rs b/src/servo/servo.rs index 603be071cb8..97c05c520bc 100644 --- a/src/servo/servo.rs +++ b/src/servo/servo.rs @@ -50,20 +50,5 @@ fn main() { }; // The keyboard handler - task::spawn {|| - let key_po = comm::port(); - comm::send(osmain_ch, osmain::add_key_handler(comm::chan(key_po))); - loop { - alt comm::recv(key_po) { - _ { - comm::send(model_ch, ()); - let draw_exit_confirm_po = comm::port(); - comm::send(draw_ch, gfx::compositor::exit(comm::chan(draw_exit_confirm_po))); - comm::recv(draw_exit_confirm_po); - comm::send(osmain_ch, osmain::exit); - break; - } - } - } - } + input::input(osmain_ch, draw_ch, model_ch); } \ No newline at end of file