diff options
-rw-r--r-- | src/synaptics.c | 12 | ||||
-rw-r--r-- | src/synapticsstr.h | 4 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/synaptics.c b/src/synaptics.c index 70b7f3b..bdc9605 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -1601,9 +1601,11 @@ timerFunc(OsTimerPtr timer, CARD32 now, pointer arg) SynapticsPrivate *priv = (SynapticsPrivate *) (pInfo->private); struct SynapticsHwState *hw = priv->local_hw_state; int delay; - int sigstate; - - sigstate = xf86BlockSIGIO(); +#if !HAVE_THREADED_INPUT + int sigstate = xf86BlockSIGIO(); +#else + input_lock(); +#endif priv->hwState->millis += now - priv->timer_time; SynapticsCopyHwState(hw, priv->hwState); @@ -1613,7 +1615,11 @@ timerFunc(OsTimerPtr timer, CARD32 now, pointer arg) priv->timer_time = now; priv->timer = TimerSet(priv->timer, 0, delay, timerFunc, pInfo); +#if !HAVE_THREADED_INPUT xf86UnblockSIGIO(sigstate); +#else + input_unlock(); +#endif return 0; } diff --git a/src/synapticsstr.h b/src/synapticsstr.h index f8ab14e..905b78b 100644 --- a/src/synapticsstr.h +++ b/src/synapticsstr.h @@ -36,6 +36,10 @@ #define NO_DRIVER_SCALING 1 #endif +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 23 +#define HAVE_THREADED_INPUT 1 +#endif + #ifdef DBG #undef DBG #endif |