mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
The pollTimeout must be set to zero if less than zero.
This commit is contained in:
@@ -175,10 +175,18 @@ namespace Terminal.Gui {
|
||||
if (mainLoop.timeouts.Count > 0) {
|
||||
pollTimeout = (int)((mainLoop.timeouts.Keys [0] - now) / TimeSpan.TicksPerMillisecond);
|
||||
if (pollTimeout < 0) {
|
||||
// This avoids poll waiting infinitely if pollTimeout=-1 until some action is detected
|
||||
if (pollTimeout == -1) {
|
||||
pollTimeout = 0;
|
||||
}
|
||||
// This avoids 'poll' waiting infinitely if 'pollTimeout < 0' until some action is detected
|
||||
// This can occur after IMainLoopDriver.Wakeup is executed where the pollTimeout is less than 0
|
||||
// and no event occurred in elapsed time when the 'poll' is start running again.
|
||||
/*
|
||||
The 'poll' function in the C standard library uses a signed integer as the timeout argument, where:
|
||||
|
||||
- A positive value specifies a timeout in milliseconds.
|
||||
- A value of 0 means the poll function will return immediately, checking for events and not waiting.
|
||||
- A value of -1 means the poll function will wait indefinitely until an event occurs or an error occurs.
|
||||
- A negative value other than -1 typically indicates an error.
|
||||
*/
|
||||
pollTimeout = 0;
|
||||
return true;
|
||||
}
|
||||
} else
|
||||
|
||||
Reference in New Issue
Block a user