From 4431c70a65dbf7fd36a2f0742cdd5be635be557d Mon Sep 17 00:00:00 2001 From: ChristianVisintin Date: Wed, 25 Nov 2020 10:26:37 +0100 Subject: [PATCH] Read one event fn --- src/ui/input.rs | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/src/ui/input.rs b/src/ui/input.rs index 32d5315..9e5b5cc 100644 --- a/src/ui/input.rs +++ b/src/ui/input.rs @@ -48,24 +48,37 @@ impl InputHandler { pub(crate) fn fetch_events(&self) -> Result, ()> { let mut inbox: Vec = Vec::new(); loop { - if let Ok(available) = poll(Duration::from_millis(10)) { - match available { - true => { - // Read event - if let Ok(ev) = read() { - inbox.push(ev); - } else { - return Err(()); - } - } - false => break, - } - } else { - return Err(()); + match self.read_event() { + Ok(ev_opt) => match ev_opt { + Some(ev) => inbox.push(ev), + None => break + }, + Err(_) => return Err(()) } } Ok(inbox) } + + /// ### read_event + /// + /// Read event from input listener + pub(crate) fn read_event(&self) -> Result, ()> { + if let Ok(available) = poll(Duration::from_millis(10)) { + match available { + true => { + // Read event + if let Ok(ev) = read() { + Ok(Some(ev)) + } else { + Err(()) + } + } + false => Ok(None) + } + } else { + Err(()) + } + } } #[cfg(test)]