Close a bug whereby events can be delayed arbitrarily long if they get

caught between the socket and the client-side queue on X, sometime
after glutMainLoopEvent()'s loop quits and before the sleep code is
invoked.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@449 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
rkrolib 2004-02-01 09:18:59 +00:00
parent 377940880c
commit 46f090da2c

View File

@ -452,6 +452,16 @@ static void fgSleepForEvents( void )
msec = MIN( msec, 10 ); /* XXX Dumb; forces granularity to .01sec */ msec = MIN( msec, 10 ); /* XXX Dumb; forces granularity to .01sec */
#if TARGET_HOST_UNIX_X11 #if TARGET_HOST_UNIX_X11
/*
* Possibly due to aggressive use of XFlush() and friends,
* it is possible to have our socket drained but still have
* unprocessed events. (Or, this may just be normal with
* X, anyway?) We do non-trivial processing of X events
* after tham in event-reading loop, in any case, so we
* need to allow that we may have an empty socket but non-
* empty event queue.
*/
if( ! XPending( fgDisplay.Display ) )
{ {
fd_set fdset; fd_set fdset;
int err; int err;