Peter Hutterer
2017-02-24 04:11:35 UTC
Otherwise we run the risk of having a timer trigger after we removed the
device. Since we pass InputInfoPtrs and WacomDevicePtrs to the timers as
arguments, these may have been freed by the time a timer triggers.
Signed-off-by: Peter Hutterer <***@who-t.net>
---
src/xf86Wacom.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/xf86Wacom.c b/src/xf86Wacom.c
index b4cf25b..26b4e9c 100644
--- a/src/xf86Wacom.c
+++ b/src/xf86Wacom.c
@@ -854,6 +854,9 @@ static int wcmDevProc(DeviceIntPtr pWcm, int what)
break;
case DEVICE_OFF:
+ TimerCancel(priv->tap_timer);
+ TimerCancel(priv->serial_timer);
+ TimerCancel(priv->touch_timer);
wcmDisableTool(pWcm);
wcmUnlinkTouchAndPen(pInfo);
if (pInfo->fd >= 0)
device. Since we pass InputInfoPtrs and WacomDevicePtrs to the timers as
arguments, these may have been freed by the time a timer triggers.
Signed-off-by: Peter Hutterer <***@who-t.net>
---
src/xf86Wacom.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/xf86Wacom.c b/src/xf86Wacom.c
index b4cf25b..26b4e9c 100644
--- a/src/xf86Wacom.c
+++ b/src/xf86Wacom.c
@@ -854,6 +854,9 @@ static int wcmDevProc(DeviceIntPtr pWcm, int what)
break;
case DEVICE_OFF:
+ TimerCancel(priv->tap_timer);
+ TimerCancel(priv->serial_timer);
+ TimerCancel(priv->touch_timer);
wcmDisableTool(pWcm);
wcmUnlinkTouchAndPen(pInfo);
if (pInfo->fd >= 0)
--
2.9.3
2.9.3