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 */
|
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;
|
||||||
|
Reference in New Issue
Block a user