Read one event fn

This commit is contained in:
ChristianVisintin 2020-11-25 10:26:37 +01:00
parent d8fc95462a
commit 4431c70a65

View file

@ -48,24 +48,37 @@ impl InputHandler {
pub(crate) fn fetch_events(&self) -> Result<Vec<Event>, ()> {
let mut inbox: Vec<Event> = 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<Option<Event>, ()> {
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)]