|
@@ -175,10 +175,18 @@ namespace Terminal.Gui {
|
|
if (mainLoop.timeouts.Count > 0) {
|
|
if (mainLoop.timeouts.Count > 0) {
|
|
pollTimeout = (int)((mainLoop.timeouts.Keys [0] - now) / TimeSpan.TicksPerMillisecond);
|
|
pollTimeout = (int)((mainLoop.timeouts.Keys [0] - now) / TimeSpan.TicksPerMillisecond);
|
|
if (pollTimeout < 0) {
|
|
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;
|
|
return true;
|
|
}
|
|
}
|
|
} else
|
|
} else
|