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:
parent
377940880c
commit
46f090da2c
@ -452,6 +452,16 @@ static void fgSleepForEvents( void )
|
||||
msec = MIN( msec, 10 ); /* XXX Dumb; forces granularity to .01sec */
|
||||
|
||||
#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;
|
||||
int err;
|
||||
|
Reference in New Issue
Block a user