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