We couldn't use SIGIO input for keyboard processing, but we can use threaded input.
Signed-off-by: Keith Packard <[email protected]> --- src/kbd.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/kbd.c b/src/kbd.c index e378dcc..3063d27 100644 --- a/src/kbd.c +++ b/src/kbd.c @@ -45,6 +45,10 @@ #include "xkbstr.h" #include "xkbsrv.h" +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 23 +#define HAVE_THREADED_INPUT 1 +#endif + #define CAPSFLAG 1 #define NUMFLAG 2 #define SCROLLFLAG 4 @@ -352,7 +356,12 @@ KbdProc(DeviceIntPtr device, int what) */ if (pInfo->fd >= 0) { xf86FlushInput(pInfo->fd); +#if HAVE_THREADED_INPUT + xf86AddEnabledDevice(pInfo); +#else + /* Can't use xf86AddEnabledDevice on an epollfd */ AddEnabledDevice(pInfo->fd); +#endif } device->public.on = TRUE; @@ -365,8 +374,13 @@ KbdProc(DeviceIntPtr device, int what) /* * Restore original keyboard directness and translation. */ - if (pInfo->fd != -1) + if (pInfo->fd != -1) { +#if HAVE_THREADED_INPUT + xf86RemoveEnabledDevice(pInfo); +#else RemoveEnabledDevice(pInfo->fd); +#endif + } pKbd->KbdOff(pInfo, what); device->public.on = FALSE; break; -- 2.8.1 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
