Tweak the select() stuff a bit still.

This commit is contained in:
Thilo Schulz 2006-08-18 02:10:02 +00:00
parent 5e88acf217
commit ee12260b59

View file

@ -651,7 +651,7 @@ void NET_Sleep(int msec)
struct timeval timeout; struct timeval timeout;
fd_set fdset; fd_set fdset;
extern qboolean stdin_active; extern qboolean stdin_active;
qboolean not_empty = qfalse; int highestfd = 0;
if (!com_dedicated->integer) if (!com_dedicated->integer)
return; // we're not a server, just run full speed return; // we're not a server, just run full speed
@ -660,27 +660,27 @@ void NET_Sleep(int msec)
if (stdin_active) if (stdin_active)
{ {
FD_SET(0, &fdset); // stdin is processed too FD_SET(0, &fdset); // stdin is processed too
not_empty = qtrue; highestfd = 1;
} }
if(ip_socket && com_sv_running->integer) if(ip_socket && com_sv_running->integer)
{ {
FD_SET(ip_socket, &fdset); // network socket FD_SET(ip_socket, &fdset); // network socket
not_empty = qtrue; if(ip_socket >= highestfd)
highestfd = ip_socket + 1;
} }
// There's no reason to call select() with an empty set. if(highestfd)
if(not_empty)
{ {
if(msec >= 0) if(msec >= 0)
{ {
timeout.tv_sec = msec/1000; timeout.tv_sec = msec/1000;
timeout.tv_usec = (msec%1000)*1000; timeout.tv_usec = (msec%1000)*1000;
select(ip_socket+1, &fdset, NULL, NULL, &timeout); select(highestfd, &fdset, NULL, NULL, &timeout);
} }
else else
{ {
// Block indefinitely // Block indefinitely
select(ip_socket+1, &fdset, NULL, NULL, NULL); select(highestfd, &fdset, NULL, NULL, NULL);
} }
} }
} }