summaryrefslogtreecommitdiff
path: root/os/WaitFor.c
diff options
context:
space:
mode:
Diffstat (limited to 'os/WaitFor.c')
-rw-r--r--os/WaitFor.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/os/WaitFor.c b/os/WaitFor.c
index e66300490..867cb04b8 100644
--- a/os/WaitFor.c
+++ b/os/WaitFor.c
@@ -153,13 +153,17 @@ WaitForSomething(int *pClientsReady)
fd_set clientsWritable;
int curclient;
int selecterr;
- int nready;
+ static int nready;
fd_set devicesReadable;
CARD32 now = 0;
Bool someReady = FALSE;
FD_ZERO(&clientsReadable);
+ if (nready)
+ SmartScheduleStopTimer();
+ nready = 0;
+
/* We need a while loop here to handle
crashed connections and the screen saver timeout */
while (1)
@@ -211,7 +215,6 @@ WaitForSomething(int *pClientsReady)
}
XFD_COPYSET(&AllSockets, &LastSelectMask);
}
- SmartScheduleStopTimer ();
BlockHandler((pointer)&wt, (pointer)&LastSelectMask);
if (NewOutputPending)
@@ -230,7 +233,6 @@ WaitForSomething(int *pClientsReady)
}
selecterr = GetErrno();
WakeupHandler(i, (pointer)&LastSelectMask);
- SmartScheduleStartTimer ();
if (i <= 0) /* An error or timeout occurred */
{
if (dispatchException)
@@ -388,6 +390,10 @@ WaitForSomething(int *pClientsReady)
#endif
}
}
+
+ if (nready)
+ SmartScheduleStartTimer();
+
return nready;
}