30 lines
709 B
C
30 lines
709 B
C
|
|
$FreeBSD$
|
|
|
|
--- SDLnetselect.c 2001/07/25 09:44:01 1.1
|
|
+++ SDLnetselect.c 2001/07/25 09:45:57
|
|
@@ -175,6 +175,7 @@
|
|
SOCKET maxfd;
|
|
int retval;
|
|
struct timeval tv;
|
|
+ struct timeval *tmp;
|
|
fd_set mask;
|
|
|
|
/* Find the largest file descriptor */
|
|
@@ -199,8 +200,14 @@
|
|
tv.tv_sec = timeout/1000;
|
|
tv.tv_usec = (timeout%1000)*1000;
|
|
|
|
+ /* XXX: Workaround for a bug in FreeBSD - w/o it in some cases select() chews 100% CPU */
|
|
+ if (timeout == ~0)
|
|
+ tmp = NULL;
|
|
+ else
|
|
+ tmp = &tv;
|
|
+
|
|
/* Look! */
|
|
- retval = select(maxfd+1, &mask, NULL, NULL, &tv);
|
|
+ retval = select(maxfd+1, &mask, NULL, NULL, tmp);
|
|
} while ( errno == EINTR );
|
|
|
|
/* Mark all file descriptors ready that have data available */
|