Index: trunk/Ohana/src/kapa/event/EventLoop.c
===================================================================
--- trunk/Ohana/src/kapa/event/EventLoop.c	(revision 2473)
+++ trunk/Ohana/src/kapa/event/EventLoop.c	(revision 3465)
@@ -1,62 +1,41 @@
 # include "Ximage.h"
-# define EventMask (long) (KeyPressMask | ExposureMask | StructureNotifyMask)
-# define EMask (long) (KeyPressMask | ExposureMask | StructureNotifyMask | PointerMotionMask)
+
+int LastEvent (Display *display, int type, XEvent *event) {
+
+  int found;
+
+  found = FALSE;
+  while (XCheckTypedEvent (display, type, event)) {
+    found = TRUE;
+  }
+  return (found);
+}
 
 int EventLoop () {
   
-  XEvent          event, reconfig_event;
-  int             status, Ne;
-  int  NeedRefresh, NeedReconfig;
+  XEvent          event;
+  int             status;
+  Display        *display;
   
   Refresh (1);
 
-  NeedReconfig = FALSE;
-  NeedRefresh = FALSE;
   status = TRUE;
   while (status) {
-
+    
     if (!CheckPipe ()) return (FALSE);
-
+    
     if (XEventsQueued (graphic.display, QueuedAfterFlush) < 1) {
-      if (NeedReconfig) status = Reconfig (&reconfig_event);
-      if (NeedRefresh && !NeedReconfig) Refresh (1);
-      NeedRefresh = FALSE;
-      NeedReconfig = FALSE;
       usleep (10000);
       continue;
     }
 
-    if (XCheckMaskEvent (graphic.display, EVENT_MASK, &event)) {
+    display = graphic.display;
 
-      switch (event.type)  {
-
-      case MotionNotify:
-	break;
-
-      case Expose:
-	if (HAVE_BACKING) continue;
-	NeedRefresh = TRUE;
-	break;
-	
-      case ConfigureNotify:
-	/* Ne = XEventsQueued (graphic.display, QueuedAlready); */
-	reconfig_event = event;
-	NeedReconfig = TRUE;
-	break;
-	
-      case KeyPress:
-	status = InterpretKeys (&event);
-	break;
-
-      case MappingNotify:
-	if (XEventsQueued (graphic.display, QueuedAlready) < 2) {
-	  XRefreshKeyboardMapping ((XMappingEvent *) &event);
-	}
-	break;
-	
-      }
-    }
+    /* only do the last entry for these events */
+    /* this ignores the return status from these functions */
+    if (LastEvent (display, ConfigureNotify, &event)) Reconfig (&event);
+    if (LastEvent (display, Expose,          &event)) Refresh (1);
+    if (LastEvent (display, MappingNotify,   &event)) XRefreshKeyboardMapping ((XMappingEvent *) &event);
   }
   return (status);
 }
-
