summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2014-09-05 15:14:47 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2014-09-05 15:14:47 +1000
commitafbbcfa10eb3a2295823720907f35bb59972dd82 (patch)
treeaa7ee1c0dff455bcc5a6f260f27acb17bf765df6
parentd239f831f17ccf5468f5dc6b2f199a9c1f6e35af (diff)
When resetting, reset the open slots to -1
open_slots holds the slot index, resetting it to 0 is a bad idea. And make sure that we do reset after DEVICE_INIT. We already do so on DEVICE_CLOSE, but after the first DEVICE_ON the data could still be random. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/synaptics.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/synaptics.c b/src/synaptics.c
index ace0ec7..8e6022a 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -1026,6 +1026,8 @@ error:
static void
SynapticsReset(SynapticsPrivate * priv)
{
+ int i;
+
SynapticsResetHwState(priv->hwState);
SynapticsResetHwState(priv->local_hw_state);
SynapticsResetHwState(priv->comm.hwState);
@@ -1055,7 +1057,9 @@ SynapticsReset(SynapticsPrivate * priv)
priv->prev_z = 0;
priv->prevFingers = 0;
priv->num_active_touches = 0;
- memset(priv->open_slots, 0, priv->num_slots * sizeof(int));
+
+ for (i = 0; i < priv->num_slots; i++)
+ priv->open_slots[i] = -1;
}
static int
@@ -1352,6 +1356,8 @@ DeviceInit(DeviceIntPtr dev)
InitDeviceProperties(pInfo);
XIRegisterPropertyHandler(pInfo->dev, SetProperty, NULL, NULL);
+ SynapticsReset(priv);
+
return Success;
fail: