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