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;
 | 
					static pointer ACPIihPtr = NULL;
 | 
				
			||||||
PMClose lnxACPIOpen(void);
 | 
					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
 | 
					#define LINE_LENGTH 80
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
| 
						 | 
					@ -52,8 +66,7 @@ lnxACPIGetEventFromOs(int fd, pmEvent *events, int num)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (n <= 0) {
 | 
					    if (n <= 0) {
 | 
				
			||||||
	lnxCloseACPI();
 | 
						lnxCloseACPI();
 | 
				
			||||||
	sleep(1);
 | 
						TimerSet(NULL, 0, ACPI_REOPEN_DELAY, lnxACPIReopen, NULL);
 | 
				
			||||||
	lnxACPIOpen();
 | 
					 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -171,4 +184,3 @@ lnxCloseACPI(void)
 | 
				
			||||||
	ACPIihPtr = NULL;
 | 
						ACPIihPtr = NULL;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue