moved waiting for and filtering events to separate function
[rocksndiamonds.git] / src / events.c
index e575a9814d2cfde95f9bcfb8c4f1067ff01aca77..10950bd9513e2a993531382756a07658583c7996 100644 (file)
@@ -128,6 +128,19 @@ static boolean SkipPressedMouseMotionEvent(const Event *event)
   return FALSE;
 }
 
+static boolean WaitEventFiltered(Event *event)
+{
+  WaitEvent(event);
+
+  if (!FilterEvents(event))
+    return FALSE;
+
+  if (SkipPressedMouseMotionEvent(event))
+    return FALSE;
+
+  return TRUE;
+}
+
 /* this is especially needed for event modifications for the Android target:
    if mouse coordinates should be modified in the event filter function,
    using a properly installed SDL event filter does not work, because in
@@ -139,20 +152,8 @@ static boolean SkipPressedMouseMotionEvent(const Event *event)
 boolean NextValidEvent(Event *event)
 {
   while (PendingEvent())
-  {
-    boolean handle_this_event = FALSE;
-
-    NextEvent(event);
-
-    if (FilterEvents(event))
-      handle_this_event = TRUE;
-
-    if (SkipPressedMouseMotionEvent(event))
-      handle_this_event = FALSE;
-
-    if (handle_this_event)
+    if (WaitEventFiltered(event))
       return TRUE;
-  }
 
   return FALSE;
 }
@@ -344,7 +345,7 @@ void ClearEventQueue()
   {
     Event event;
 
-    NextEvent(&event);
+    WaitEvent(&event);
 
     switch (event.type)
     {
@@ -392,7 +393,7 @@ void SleepWhileUnmapped()
   {
     Event event;
 
-    NextEvent(&event);
+    WaitEvent(&event);
 
     switch (event.type)
     {