diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 70cf839510757da12ab1df6433e15e7a7e8ee047..dddc8deb02dff84bdc7d6bedeff08a999295de5e 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -2202,6 +2202,17 @@ void LLWindowWin32::gatherInput()
         }
     }
 
+    {
+        LL_PROFILE_ZONE_NAMED("gi - PeekMessage");
+        S32 msg_count = 0;
+        while ((msg_count < MAX_MESSAGE_PER_UPDATE) && PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_REMOVE))
+        {
+            TranslateMessage(&msg);
+            DispatchMessage(&msg);
+            msg_count++;
+        }
+    }
+
     {
         LL_PROFILE_ZONE_NAMED("gi - function queue");
         //process any pending functions