From ffd51448fb484edaa08adb41b42f8adbab4c5457 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 5 Sep 2014 15:14:47 +1000 Subject: [PATCH] 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 Reviewed-by: Keith Packard (cherry picked from commit afbbcfa10eb3a2295823720907f35bb59972dd82) --- src/synaptics.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/synaptics.c b/src/synaptics.c index 8a51754..d1b2c70 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -1010,6 +1010,8 @@ DeviceOn(DeviceIntPtr dev) static void SynapticsReset(SynapticsPrivate * priv) { + int i; + SynapticsResetHwState(priv->hwState); SynapticsResetHwState(priv->local_hw_state); SynapticsResetHwState(priv->comm.hwState); @@ -1039,7 +1041,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 @@ -1337,6 +1341,8 @@ DeviceInit(DeviceIntPtr dev) InitDeviceProperties(pInfo); XIRegisterPropertyHandler(pInfo->dev, SetProperty, NULL, NULL); + SynapticsReset(priv); + return Success; fail: