mirror of
https://github.com/X11Libre/xf86-input-evdev.git
synced 2026-04-14 11:44:16 +00:00
Compare commits
4 Commits
xf86-input
...
xf86-input
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cf887a2b7c | ||
|
|
1cc0651e1b | ||
|
|
48a747ea86 | ||
|
|
aa58eb6096 |
@@ -22,7 +22,7 @@
|
||||
|
||||
AC_PREREQ(2.57)
|
||||
AC_INIT([xf86-input-evdev],
|
||||
2.2.1,
|
||||
2.2.2,
|
||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
|
||||
xf86-input-evdev)
|
||||
|
||||
|
||||
25
src/evdev.c
25
src/evdev.c
@@ -564,25 +564,32 @@ EvdevReadInput(InputInfoPtr pInfo)
|
||||
while (len == sizeof(ev))
|
||||
{
|
||||
len = read(pInfo->fd, &ev, sizeof(ev));
|
||||
if (len == 0)
|
||||
if (len <= 0)
|
||||
{
|
||||
if (errno == ENODEV) /* May happen after resume */
|
||||
{
|
||||
xf86RemoveEnabledDevice(pInfo);
|
||||
close(pInfo->fd);
|
||||
pInfo->fd = -1;
|
||||
pEvdev->reopen_left = pEvdev->reopen_attempts;
|
||||
pEvdev->reopen_timer = TimerSet(NULL, 0, 100, EvdevReopenTimer, pInfo);
|
||||
if (pEvdev->reopen_timer)
|
||||
{
|
||||
pEvdev->reopen_left = pEvdev->reopen_attempts;
|
||||
pEvdev->reopen_timer = TimerSet(pEvdev->reopen_timer, 0, 100, EvdevReopenTimer, pInfo);
|
||||
}
|
||||
} else if (errno != EAGAIN)
|
||||
xf86Msg(X_ERROR, "%s: Read error: %s\n", pInfo->name,
|
||||
{
|
||||
/* We use X_NONE here because it doesn't alloc */
|
||||
xf86MsgVerb(X_NONE, 0, "%s: Read error: %s\n", pInfo->name,
|
||||
strerror(errno));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
/* The kernel promises that we always only read a complete
|
||||
* event, so len != sizeof ev is an error. */
|
||||
if (len % sizeof(ev[0])) {
|
||||
/* The kernel promises that we always only read a complete
|
||||
* event, so len != sizeof ev is an error. */
|
||||
xf86Msg(X_ERROR, "%s: Read error: %s\n", pInfo->name, strerror(errno));
|
||||
/* We use X_NONE here because it doesn't alloc */
|
||||
xf86MsgVerb(X_NONE, 0, "%s: Read error: %s\n", pInfo->name, strerror(errno));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1226,7 +1233,7 @@ EvdevOn(DeviceIntPtr device)
|
||||
if (pInfo->fd == -1)
|
||||
{
|
||||
pEvdev->reopen_left = pEvdev->reopen_attempts;
|
||||
pEvdev->reopen_timer = TimerSet(NULL, 0, 100, EvdevReopenTimer, pInfo);
|
||||
pEvdev->reopen_timer = TimerSet(pEvdev->reopen_timer, 0, 100, EvdevReopenTimer, pInfo);
|
||||
} else
|
||||
{
|
||||
pEvdev->min_maj = EvdevGetMajorMinor(pInfo);
|
||||
@@ -1237,6 +1244,8 @@ EvdevOn(DeviceIntPtr device)
|
||||
return !Success;
|
||||
}
|
||||
|
||||
pEvdev->reopen_timer = TimerSet(pEvdev->reopen_timer, 0, 0, NULL, NULL);
|
||||
|
||||
xf86FlushInput(pInfo->fd);
|
||||
xf86AddEnabledDevice(pInfo);
|
||||
EvdevMBEmuOn(pInfo);
|
||||
|
||||
Reference in New Issue
Block a user