summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sun_mouse.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/sun_mouse.c b/src/sun_mouse.c
index 3539ba7..20ec10d 100644
--- a/src/sun_mouse.c
+++ b/src/sun_mouse.c
@@ -742,8 +742,21 @@ vuidMouseProc(DeviceIntPtr pPointer, int what)
}
break;
- case DEVICE_OFF:
case DEVICE_CLOSE:
+ if (vuidMouseList == pVuidMse)
+ vuidMouseList = vuidMouseList->next;
+ else {
+ VuidMsePtr m = vuidMouseList;
+
+ while ((m != NULL) && (m->next != pVuidMse)) {
+ m = m->next;
+ }
+
+ if (m != NULL)
+ m->next = pVuidMse->next;
+ }
+ /* fallthrough */
+ case DEVICE_OFF:
if (pInfo->fd != -1) {
if (pVuidMse->strmod) {
SYSCALL(i = ioctl(pInfo->fd, I_POP, pVuidMse->strmod));