Fix the Linux ACPI reopen code to use a repeating timer, rather than a
one-shot sleep-and-reopen attempt.
This commit is contained in:
parent
f029e9a32d
commit
881953813c
|
@ -36,6 +36,20 @@ static void lnxCloseACPI(void);
|
|||
static pointer ACPIihPtr = NULL;
|
||||
PMClose lnxACPIOpen(void);
|
||||
|
||||
/* in milliseconds */
|
||||
#define ACPI_REOPEN_DELAY 1000
|
||||
|
||||
static CARD32
|
||||
lnxACPIReopen(OsTimerPtr timer, CARD32 time, pointer arg)
|
||||
{
|
||||
if (lnxACPIOpen()) {
|
||||
TimerFree(timer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ACPI_REOPEN_DELAY;
|
||||
}
|
||||
|
||||
#define LINE_LENGTH 80
|
||||
|
||||
static int
|
||||
|
@ -52,8 +66,7 @@ lnxACPIGetEventFromOs(int fd, pmEvent *events, int num)
|
|||
|
||||
if (n <= 0) {
|
||||
lnxCloseACPI();
|
||||
sleep(1);
|
||||
lnxACPIOpen();
|
||||
TimerSet(NULL, 0, ACPI_REOPEN_DELAY, lnxACPIReopen, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -171,4 +184,3 @@ lnxCloseACPI(void)
|
|||
ACPIihPtr = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue