#include "config.h"
#endif
-#include "../include/GL/freeglut.h"
+#include <GL/freeglut.h>
#include "freeglut_internal.h"
#include <limits.h>
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;
* XXX double-buffered does not respect viewport when we
* XXX do a buffer-swap).
*
- * XXX GETWINDOW( xexpose );
- * XXX fgSetWindow( window );
- * XXX glutPostRedisplay( );
*/
if( event.xexpose.count == 0 )
- fghRedrawWindowByHandle( event.xexpose.window );
+ {
+ GETWINDOW( xexpose );
+ fgSetWindow( window );
+ glutPostRedisplay( );
+ }
break;
case MapNotify:
int keypress = -1;
POINT mouse_pos ;
- if( fgState.IgnoreKeyRepeat && (lParam & KF_REPEAT) )
+ if( fgState.IgnoreKeyRepeat && (HIWORD(lParam) & KF_REPEAT) )
break;
/*
case WM_SYSCHAR:
case WM_CHAR:
{
- if( fgState.IgnoreKeyRepeat && (lParam & KF_REPEAT) )
+ if( fgState.IgnoreKeyRepeat && (HIWORD(lParam) & KF_REPEAT) )
break;
fgState.Modifiers = fgGetWin32Modifiers( );