summaryrefslogtreecommitdiff
path: root/synaptics.c
diff options
context:
space:
mode:
authorPeter Osterlund <petero2@telia.com>2003-07-08 00:38:28 +0200
committerPeter Osterlund <petero2@telia.com>2006-04-09 04:01:00 +0200
commit99846a3bee4f4a0e9ce4db2c66b9fbada66fe213 (patch)
treec25737665710706e7f8489fc0b5e3c6bf2b8ed29 /synaptics.c
parentcde4d060e04a1684df99d81136c7107ee2050bc4 (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.c7
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) -