From 1e7f74dc1bc314d0b3f5550b5b8e4b75fcfc202a Mon Sep 17 00:00:00 2001
From: Sam Lantinga <slouken@libsdl.org>
Date: Wed, 19 Jan 2011 16:02:15 -0800
Subject: [PATCH] Window move events have the same problem as size events on
 Windows

---
 src/events/SDL_windowevents.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/events/SDL_windowevents.c b/src/events/SDL_windowevents.c
index 2a7a7c7d..ff92e82d 100644
--- a/src/events/SDL_windowevents.c
+++ b/src/events/SDL_windowevents.c
@@ -43,6 +43,20 @@ RemovePendingSizeEvents(void * userdata, SDL_Event *event)
     return 1;
 }
 
+static int
+RemovePendingMoveEvents(void * userdata, SDL_Event *event)
+{
+    SDL_Event *new_event = (SDL_Event *)userdata;
+
+    if (event->type == SDL_WINDOWEVENT &&
+        event->window.event == SDL_WINDOWEVENT_MOVED &&
+        event->window.windowID == new_event->window.windowID) {
+        /* We're about to post a new move event, drop the old one */
+        return 0;
+    }
+    return 1;
+}
+
 int
 SDL_SendWindowEvent(SDL_Window * window, Uint8 windowevent, int data1,
                     int data2)
@@ -156,6 +170,9 @@ SDL_SendWindowEvent(SDL_Window * window, Uint8 windowevent, int data1,
         if (windowevent == SDL_WINDOWEVENT_RESIZED) {
             SDL_FilterEvents(RemovePendingSizeEvents, &event);
         }
+        if (windowevent == SDL_WINDOWEVENT_MOVED) {
+            SDL_FilterEvents(RemovePendingMoveEvents, &event);
+        }
 
         posted = (SDL_PushEvent(&event) > 0);
     }
-- 
2.18.1