mirror of
https://github.com/X11Libre/xf86-input-evdev.git
synced 2026-03-24 01:34:04 +00:00
Pre-allocate the reopen timer so we don't allocate during sigio handling.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
11
src/evdev.c
11
src/evdev.c
@@ -572,8 +572,11 @@ EvdevReadInput(InputInfoPtr pInfo)
|
||||
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,
|
||||
strerror(errno));
|
||||
@@ -1246,7 +1249,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);
|
||||
@@ -1257,6 +1260,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