dinput: fix mouse jitter in Halo (bug 7640)

Martin Traverse wine at martin.wrong.nu
Fri Apr 13 23:01:18 CDT 2007


-------------- next part --------------
From 0481c4f3e10c593943a1997cb6ffab4e38520b0a Mon Sep 17 00:00:00 2001
From: Martin Traverse <wine at martin.wrong.nu>
Date: Sat, 14 Apr 2007 04:22:22 +0100
Subject: [PATCH] dinput: fix mouse jitter in Halo (bug 7640)

after bisecting, bug originates from removal of
MsgWaitForMultipleObjectsEx from SysKeyboardAImpl_Poll
in keyboard.c, commit b22ff8018aca7c365e505f1db7732f7050ae259b.
This function was later removed as a duplicate of
IDirectInputDevice2AImpl_Poll in device.c.
---
 dlls/dinput/keyboard.c |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c
index a634156..7897665 100644
--- a/dlls/dinput/keyboard.c
+++ b/dlls/dinput/keyboard.c
@@ -485,6 +485,19 @@ static HRESULT WINAPI SysKeyboardWImpl_GetDeviceInfo(LPDIRECTINPUTDEVICE8W iface
     return DI_OK;
 }
 
+static HRESULT WINAPI SysKeyboardAImpl_Poll(LPDIRECTINPUTDEVICE8A iface)
+{
+    SysKeyboardImpl *This = (SysKeyboardImpl *)iface;
+
+    TRACE("(%p)\n",This);
+
+    if (!This->base.acquired) return DIERR_NOTACQUIRED;
+
+    /* required to avoid mouse jitter (2007-04-14) */
+    MsgWaitForMultipleObjectsEx(0, NULL, 0, QS_ALLINPUT, 0);
+    return DI_OK;
+}
+
 static const IDirectInputDevice8AVtbl SysKeyboardAvt =
 {
 	IDirectInputDevice2AImpl_QueryInterface,
@@ -512,7 +525,7 @@ static const IDirectInputDevice8AVtbl SysKeyboardAvt =
 	IDirectInputDevice2AImpl_SendForceFeedbackCommand,
 	IDirectInputDevice2AImpl_EnumCreatedEffectObjects,
 	IDirectInputDevice2AImpl_Escape,
-        IDirectInputDevice2AImpl_Poll,
+        SysKeyboardAImpl_Poll,
         IDirectInputDevice2AImpl_SendDeviceData,
         IDirectInputDevice7AImpl_EnumEffectsInFile,
         IDirectInputDevice7AImpl_WriteEffectToFile,
@@ -554,7 +567,7 @@ static const IDirectInputDevice8WVtbl SysKeyboardWvt =
 	XCAST(SendForceFeedbackCommand)IDirectInputDevice2AImpl_SendForceFeedbackCommand,
 	XCAST(EnumCreatedEffectObjects)IDirectInputDevice2AImpl_EnumCreatedEffectObjects,
 	XCAST(Escape)IDirectInputDevice2AImpl_Escape,
-        XCAST(Poll)IDirectInputDevice2AImpl_Poll,
+        XCAST(Poll)SysKeyboardAImpl_Poll,
         XCAST(SendDeviceData)IDirectInputDevice2AImpl_SendDeviceData,
         IDirectInputDevice7WImpl_EnumEffectsInFile,
         IDirectInputDevice7WImpl_WriteEffectToFile,
-- 
1.4.4.4



More information about the wine-patches mailing list