@@ -24,9 +24,9 @@ use input::{
2424use libc:: { O_ACCMODE , O_RDONLY , O_RDWR , O_WRONLY , c_char} ;
2525use input_linux:: { uinput:: UInputHandle , EventKind , Key , SynchronizeKind } ;
2626use input_linux_sys:: { uinput_setup, input_id, timeval, input_event} ;
27- use nix:: {
28- poll :: { poll , PollFd , PollFlags } ,
29- sys :: signal :: { Signal , SigSet } ,
27+ use nix:: sys :: {
28+ signal :: { Signal , SigSet } ,
29+ epoll :: { Epoll , EpollCreateFlags , EpollEvent , EpollFlags }
3030} ;
3131use privdrop:: PrivDrop ;
3232
@@ -358,10 +358,10 @@ fn real_main(drm: &mut DrmBackend) {
358358 let mut input_main = Libinput :: new_with_udev ( Interface ) ;
359359 input_tb. udev_assign_seat ( "seat-touchbar" ) . unwrap ( ) ;
360360 input_main. udev_assign_seat ( "seat0" ) . unwrap ( ) ;
361- let fd_tb = input_tb . as_fd ( ) . try_clone_to_owned ( ) . unwrap ( ) ;
362- let fd_main = input_main. as_fd ( ) . try_clone_to_owned ( ) . unwrap ( ) ;
363- let pollfd_tb = PollFd :: new ( & fd_tb , PollFlags :: POLLIN ) ;
364- let pollfd_main = PollFd :: new ( & fd_main , PollFlags :: POLLIN ) ;
361+ let epoll = Epoll :: new ( EpollCreateFlags :: empty ( ) ) . unwrap ( ) ;
362+ epoll . add ( input_main. as_fd ( ) , EpollEvent :: new ( EpollFlags :: EPOLLIN , 0 ) ) . unwrap ( ) ;
363+ epoll . add ( input_tb . as_fd ( ) , EpollEvent :: new ( EpollFlags :: EPOLLIN , 1 ) ) . unwrap ( ) ;
364+ epoll . add ( cfg_mgr . fd ( ) , EpollEvent :: new ( EpollFlags :: EPOLLIN , 2 ) ) . unwrap ( ) ;
365365 uinput. set_evbit ( EventKind :: Key ) . unwrap ( ) ;
366366 for layer in & layers {
367367 for button in & layer. buttons {
@@ -415,7 +415,7 @@ fn real_main(drm: &mut DrmBackend) {
415415 needs_complete_redraw = false ;
416416 }
417417
418- poll ( & mut [ pollfd_tb , pollfd_main , cfg_mgr . pollfd ( ) ] , next_timeout_ms) . unwrap ( ) ;
418+ epoll . wait ( & mut [ EpollEvent :: new ( EpollFlags :: EPOLLIN , 0 ) ] , next_timeout_ms as isize ) . unwrap ( ) ;
419419 input_tb. dispatch ( ) . unwrap ( ) ;
420420 input_main. dispatch ( ) . unwrap ( ) ;
421421 for event in & mut input_tb. clone ( ) . chain ( input_main. clone ( ) ) {
0 commit comments