Vitaliy Margolen : dinput: Skip old mouse movement events.

Alexandre Julliard julliard at winehq.org
Mon Feb 11 14:19:33 CST 2008


Module: wine
Branch: master
Commit: 31876695120f2fe6b4ecf60d73c36472607e5bf2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=31876695120f2fe6b4ecf60d73c36472607e5bf2

Author: Vitaliy Margolen <wine-patches at kievinfo.com>
Date:   Fri Feb  8 08:01:42 2008 -0700

dinput: Skip old mouse movement events.

---

 dlls/dinput/mouse.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/dlls/dinput/mouse.c b/dlls/dinput/mouse.c
index 35ddc0b..72fbbf6 100644
--- a/dlls/dinput/mouse.c
+++ b/dlls/dinput/mouse.c
@@ -64,6 +64,7 @@ struct SysMouseImpl
     BOOL                            need_warp;
     DWORD                           last_warped;
 
+    DWORD                           last_event_time;
     /* This is for mouse reporting. */
     DIMOUSESTATE2                   m_state;
 };
@@ -280,6 +281,9 @@ static void dinput_mouse_hook( LPDIRECTINPUTDEVICE8A iface, WPARAM wparam, LPARA
         {
             POINT pt, pt1;
 
+            /* Skip old movement events */
+            if (This->last_event_time - hook->time < 2000) break;
+
             GetCursorPos(&pt);
             This->m_state.lX += pt.x = hook->pt.x - pt.x;
             This->m_state.lY += pt.y = hook->pt.y - pt.y;
@@ -355,6 +359,8 @@ static void dinput_mouse_hook( LPDIRECTINPUTDEVICE8A iface, WPARAM wparam, LPARA
                     wdata, hook->time, This->base.dinput->evsequence++);
     }
 
+    This->last_event_time = hook->time;
+
     LeaveCriticalSection(&This->base.crit);
 }
 




More information about the wine-cvs mailing list