dinput: Skip old mouse movement events.

This commit is contained in:
Vitaliy Margolen 2008-02-08 08:01:42 -07:00 committed by Alexandre Julliard
parent f461a8d4c1
commit 3187669512

View File

@ -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);
}