[fix] Do error handling in fill_events and raw_events

This commit is contained in:
Corey Richardson 2015-07-12 17:22:05 -04:00
parent 9839b61bac
commit d556b9dcab

View file

@ -1210,7 +1210,7 @@ impl Device {
Ok(()) Ok(())
} }
fn fill_events(&mut self) { fn fill_events(&mut self) -> Result<(), Error> {
let mut buf = &mut self.pending_events; let mut buf = &mut self.pending_events;
loop { loop {
buf.reserve(20); buf.reserve(20);
@ -1224,7 +1224,7 @@ impl Device {
if sz == -1 { if sz == -1 {
let errno = errno::errno(); let errno = errno::errno();
if errno != errno::Errno(libc::EAGAIN) { if errno != errno::Errno(libc::EAGAIN) {
println!("ERROR! evdev needs to figure out how to expose this :( {}", errno); return Err(Error::LibcError(errno));
} else { } else {
break; break;
} }
@ -1234,15 +1234,15 @@ impl Device {
} }
} }
} }
Ok(())
} }
/// Exposes the raw evdev events without doing synchronization on SYN_DROPPED. /// Exposes the raw evdev events without doing synchronization on SYN_DROPPED.
pub fn raw_events(&mut self) -> RawEvents { pub fn raw_events(&mut self) -> Result<RawEvents, Error> {
self.fill_events(); try!(self.fill_events());
RawEvents::new(self) Ok(RawEvents::new(self))
} }
pub fn events(&mut self) -> Events { pub fn events(&mut self) -> Events {
Events(self) Events(self)
} }