Skip to content

Commit abe1408

Browse files
Fix crashing on sleep
Fixes #28
1 parent b938de2 commit abe1408

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

src/main.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,12 @@ use input::{
2424
use libc::{O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY, c_char};
2525
use input_linux::{uinput::UInputHandle, EventKind, Key, SynchronizeKind};
2626
use input_linux_sys::{uinput_setup, input_id, timeval, input_event};
27-
use nix::sys::{
28-
signal::{Signal, SigSet},
29-
epoll::{Epoll, EpollCreateFlags, EpollEvent, EpollFlags}
27+
use nix::{
28+
sys::{
29+
signal::{Signal, SigSet},
30+
epoll::{Epoll, EpollCreateFlags, EpollEvent, EpollFlags}
31+
},
32+
errno::Errno
3033
};
3134
use privdrop::PrivDrop;
3235

@@ -415,7 +418,10 @@ fn real_main(drm: &mut DrmBackend) {
415418
needs_complete_redraw = false;
416419
}
417420

418-
epoll.wait(&mut [EpollEvent::new(EpollFlags::EPOLLIN, 0)], next_timeout_ms as isize).unwrap();
421+
match epoll.wait(&mut [EpollEvent::new(EpollFlags::EPOLLIN, 0)], next_timeout_ms as isize) {
422+
Err(Errno::EINTR) | Ok(_) => { 0 },
423+
e => e.unwrap(),
424+
};
419425
input_tb.dispatch().unwrap();
420426
input_main.dispatch().unwrap();
421427
for event in &mut input_tb.clone().chain(input_main.clone()) {

0 commit comments

Comments
 (0)