projects
/
freeglut
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Mark FREEGLUT_VERSION_2_0 as deprecated as per ML discussion 'FREEGLUT_VERSION_2_0...
[freeglut]
/
src
/
x11
/
fg_main_x11.c
diff --git
a/src/x11/fg_main_x11.c
b/src/x11/fg_main_x11.c
index
e72db37
..
c77f5e4
100644
(file)
--- a/
src/x11/fg_main_x11.c
+++ b/
src/x11/fg_main_x11.c
@@
-40,6
+40,8
@@
# define VFPRINTF(s,f,a)
#endif
# define VFPRINTF(s,f,a)
#endif
+#include "fg_main.h"
+
/*
* Try to get the maximum value allowed for ints, falling back to the minimum
* guaranteed by ISO C99 if there is no suitable header.
/*
* Try to get the maximum value allowed for ints, falling back to the minimum
* guaranteed by ISO C99 if there is no suitable header.
@@
-55,6
+57,9
@@
# define MIN(a,b) (((a)<(b)) ? (a) : (b))
#endif
# define MIN(a,b) (((a)<(b)) ? (a) : (b))
#endif
+/* used in the event handling code to match and discard stale mouse motion events */
+static Bool match_motion(Display *dpy, XEvent *xev, XPointer arg);
+
/*
* TODO BEFORE THE STABLE RELEASE:
*
/*
* TODO BEFORE THE STABLE RELEASE:
*
@@
-68,9
+73,7
@@
/*
/*
- * Handle a window configuration change. When no reshape
- * callback is hooked, the viewport size is updated to
- * match the new window size.
+ * Request a window resize
*/
void fgPlatformReshapeWindow ( SFG_Window *window, int width, int height )
{
*/
void fgPlatformReshapeWindow ( SFG_Window *window, int width, int height )
{
@@
-295,7
+298,7
@@
static const char* fghColormapStateToString( int state )
}
}
}
}
-static void fghPrintEvent( XEvent *event )
+__fg_unused static void fghPrintEvent( XEvent *event )
{
switch( event->type ) {
{
switch( event->type ) {
@@
-788,6
+791,13
@@
void fgPlatformProcessSingleEvent ( void )
case MotionNotify:
{
case MotionNotify:
{
+ /* if GLUT_SKIP_STALE_MOTION_EVENTS is true, then discard all but
+ * the last motion event from the queue
+ */
+ if(fgState.SkipStaleMotion) {
+ while(XCheckIfEvent(fgDisplay.pDisplay.Display, &event, match_motion, 0));
+ }
+
GETWINDOW( xmotion );
GETMOUSE( xmotion );
GETWINDOW( xmotion );
GETMOUSE( xmotion );
@@
-1077,6
+1087,11
@@
void fgPlatformProcessSingleEvent ( void )
}
}
+static Bool match_motion(Display *dpy, XEvent *xev, XPointer arg)
+{
+ return xev->type == MotionNotify;
+}
+
void fgPlatformMainLoopPreliminaryWork ( void )
{
}
void fgPlatformMainLoopPreliminaryWork ( void )
{
}