summaryrefslogtreecommitdiff
path: root/src/xf86Wacom.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xf86Wacom.c')
-rw-r--r--src/xf86Wacom.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/xf86Wacom.c b/src/xf86Wacom.c
index 738690f..1eb3f57 100644
--- a/src/xf86Wacom.c
+++ b/src/xf86Wacom.c
@@ -632,7 +632,8 @@ static void wcmDevReadInput(InputInfoPtr pInfo)
if (!wcmReady(pInfo)) break;
/* dispatch */
- wcmReadPacket(pInfo);
+ if (!wcmReadPacket(pInfo))
+ break;
}
#ifdef DEBUG
@@ -649,7 +650,7 @@ static void wcmDevReadInput(InputInfoPtr pInfo)
#endif
}
-void wcmReadPacket(InputInfoPtr pInfo)
+Bool wcmReadPacket(InputInfoPtr pInfo)
{
WacomDevicePtr priv = (WacomDevicePtr)pInfo->private;
WacomCommonPtr common = priv->common;
@@ -672,7 +673,10 @@ void wcmReadPacket(InputInfoPtr pInfo)
if (errno != EAGAIN && errno != EINTR)
LogMessageVerbSigSafe(X_ERROR, 0,
"%s: Error reading wacom device : %s\n", pInfo->name, strerror(errno));
- return;
+ if (errno == ENODEV)
+ xf86RemoveEnabledDevice(pInfo);
+
+ return FALSE;
}
/* account for new data */
@@ -704,6 +708,8 @@ void wcmReadPacket(InputInfoPtr pInfo)
}
common->bufpos = len;
+
+ return TRUE;
}
int wcmDevChangeControl(InputInfoPtr pInfo, xDeviceCtl * control)