diff options
author | Peter Osterlund <petero2@telia.com> | 2003-07-08 00:38:28 +0200 |
---|---|---|
committer | Peter Osterlund <petero2@telia.com> | 2006-04-09 04:01:00 +0200 |
commit | 99846a3bee4f4a0e9ce4db2c66b9fbada66fe213 (patch) | |
tree | c25737665710706e7f8489fc0b5e3c6bf2b8ed29 /synaptics.c | |
parent | cde4d060e04a1684df99d81136c7107ee2050bc4 (diff) |
Fixed race condition caused by asynchronous IO (SIGIO). This
change hopefully fixes the X server hangs.
Diffstat (limited to 'synaptics.c')
-rw-r--r-- | synaptics.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/synaptics.c b/synaptics.c index dd6788b..7186e4c 100644 --- a/synaptics.c +++ b/synaptics.c @@ -82,7 +82,7 @@ typedef enum { #define MIN(a, b) (((a)<(b))?(a):(b)) #define TIME_DIFF(a, b) ((long)((a)-(b))) -#define VERSION "0.11.3p4" +#define VERSION "0.11.3p5" /***************************************************************************** * Forward declaration @@ -521,8 +521,6 @@ timerFunc(OsTimerPtr timer, CARD32 now, pointer arg) hw.millis = now; delay = HandleState(local, &hw); - xf86UnblockSIGIO (sigstate); - /* * Workaround for wraparound bug in the TimerSet function. This bug is already * fixed in CVS, but this driver needs to work with XFree86 versions 4.2.x and @@ -534,6 +532,8 @@ timerFunc(OsTimerPtr timer, CARD32 now, pointer arg) priv->timer = TimerSet(priv->timer, TimerAbsolute, wakeUpTime, timerFunc, local); + xf86UnblockSIGIO (sigstate); + return 0; } @@ -930,7 +930,6 @@ HandleState(LocalDevicePtr local, struct SynapticsHwState* hw) delay = MIN(delay, 13); if (priv->count_packet_finger > 3) { /* min. 3 packets */ - delay = MIN(delay, 13); dy = (1 * (((MOVE_HIST(1).y + MOVE_HIST(2).y) / 2) - |