From f98c4ff1ada846ca3a8d4688cafc93828b83febf Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 3 May 2012 17:07:26 -0700 Subject: [PATCH] Change the way the keyboard event is handled --- src/servo/input.rs | 26 -------------------------- src/servo/servo.rc | 1 - src/servo/servo.rs | 22 ++++++++++++++++++---- 3 files changed, 18 insertions(+), 31 deletions(-) delete mode 100644 src/servo/input.rs diff --git a/src/servo/input.rs b/src/servo/input.rs deleted file mode 100644 index 62d3331647d..00000000000 --- a/src/servo/input.rs +++ /dev/null @@ -1,26 +0,0 @@ -fn input( - osmain_ch: comm::chan, - draw_ch: comm::chan, - model_ch: comm::chan, - layout_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(layout_ch, layout::layout::exit); - 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); - comm::send(osmain_ch, osmain::exit); - break; - } - } - } - } -} diff --git a/src/servo/servo.rc b/src/servo/servo.rc index fa350ed485d..9a56dcf044f 100755 --- a/src/servo/servo.rc +++ b/src/servo/servo.rc @@ -43,4 +43,3 @@ 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 2ae11ffe3a0..eaa206b9ece 100644 --- a/src/servo/servo.rs +++ b/src/servo/servo.rs @@ -7,10 +7,10 @@ import azure::cairo::bindgen::*; fn main() { // The platform event handler thread - let osmain_ch = osmain::osmain(); + let osmain = osmain::osmain(); // The compositor - let renderer = gfx::renderer::renderer(osmain_ch); + let renderer = gfx::renderer::renderer(osmain); // The display list builder let lister = layout::lister::lister(renderer); @@ -19,10 +19,24 @@ fn main() { let layout = layout::layout::layout(lister); // The keyboard handler - input::input(osmain_ch, renderer, lister, layout); + let key_po = port(); + send(osmain, osmain::add_key_handler(chan(key_po))); loop { - std::timer::sleep(10u); send(layout, layout::layout::do_layout); + + std::timer::sleep(10u); + + if peek(key_po) { + comm::send(layout, layout::layout::exit); + comm::send(lister, layout::lister::exit); + + let draw_exit_confirm_po = comm::port(); + comm::send(renderer, gfx::renderer::exit(comm::chan(draw_exit_confirm_po))); + + comm::recv(draw_exit_confirm_po); + comm::send(osmain, osmain::exit); + break; + } } } \ No newline at end of file