user32: Make sure that SendInput always initializes the time field.
Dmitry Timoshkov
dmitry at codeweavers.com
Tue Sep 21 00:02:29 CDT 2010
This patch should fix the problem reported in the bug 24435.
---
dlls/user32/input.c | 59 ++++++++++++++++++++++++++-------------------------
1 files changed, 30 insertions(+), 29 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c
index 0dccf21..f2f7b85 100644
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -119,35 +119,36 @@ BOOL set_capture_window( HWND hwnd, UINT gui_flags, HWND *prev_ret )
*/
UINT WINAPI SendInput( UINT count, LPINPUT inputs, int size )
{
- if (TRACE_ON(win))
- {
- UINT i;
+ UINT i;
- for (i = 0; i < count; i++)
+ for (i = 0; i < count; i++)
+ {
+ switch(inputs[i].type)
{
- switch(inputs[i].type)
- {
- case INPUT_MOUSE:
- TRACE("mouse: dx %d, dy %d, data %x, flags %x, time %u, info %lx\n",
- inputs[i].u.mi.dx, inputs[i].u.mi.dy, inputs[i].u.mi.mouseData,
- inputs[i].u.mi.dwFlags, inputs[i].u.mi.time, inputs[i].u.mi.dwExtraInfo);
- break;
-
- case INPUT_KEYBOARD:
- TRACE("keyboard: vk %X, scan %x, flags %x, time %u, info %lx\n",
- inputs[i].u.ki.wVk, inputs[i].u.ki.wScan, inputs[i].u.ki.dwFlags,
- inputs[i].u.ki.time, inputs[i].u.ki.dwExtraInfo);
- break;
-
- case INPUT_HARDWARE:
- TRACE("hardware: msg %d, wParamL %x, wParamH %x\n",
- inputs[i].u.hi.uMsg, inputs[i].u.hi.wParamL, inputs[i].u.hi.wParamH);
- break;
-
- default:
- FIXME("unknown input type %u\n", inputs[i].type);
- break;
- }
+ case INPUT_MOUSE:
+ TRACE("mouse: dx %d, dy %d, data %x, flags %x, time %u, info %lx\n",
+ inputs[i].u.mi.dx, inputs[i].u.mi.dy, inputs[i].u.mi.mouseData,
+ inputs[i].u.mi.dwFlags, inputs[i].u.mi.time, inputs[i].u.mi.dwExtraInfo);
+ if (!inputs[i].u.mi.time)
+ inputs[i].u.mi.time = GetTickCount();
+ break;
+
+ case INPUT_KEYBOARD:
+ TRACE("keyboard: vk %X, scan %x, flags %x, time %u, info %lx\n",
+ inputs[i].u.ki.wVk, inputs[i].u.ki.wScan, inputs[i].u.ki.dwFlags,
+ inputs[i].u.ki.time, inputs[i].u.ki.dwExtraInfo);
+ if (!inputs[i].u.ki.time)
+ inputs[i].u.ki.time = GetTickCount();
+ break;
+
+ case INPUT_HARDWARE:
+ TRACE("hardware: msg %d, wParamL %x, wParamH %x\n",
+ inputs[i].u.hi.uMsg, inputs[i].u.hi.wParamL, inputs[i].u.hi.wParamH);
+ break;
+
+ default:
+ FIXME("unknown input type %u\n", inputs[i].type);
+ break;
}
}
@@ -167,7 +168,7 @@ void WINAPI keybd_event( BYTE bVk, BYTE bScan,
input.u.ki.wVk = bVk;
input.u.ki.wScan = bScan;
input.u.ki.dwFlags = dwFlags;
- input.u.ki.time = GetTickCount();
+ input.u.ki.time = 0;
input.u.ki.dwExtraInfo = dwExtraInfo;
SendInput( 1, &input, sizeof(input) );
}
@@ -186,7 +187,7 @@ void WINAPI mouse_event( DWORD dwFlags, DWORD dx, DWORD dy,
input.u.mi.dy = dy;
input.u.mi.mouseData = dwData;
input.u.mi.dwFlags = dwFlags;
- input.u.mi.time = GetCurrentTime();
+ input.u.mi.time = 0;
input.u.mi.dwExtraInfo = dwExtraInfo;
SendInput( 1, &input, sizeof(input) );
}
--
1.7.0.6
More information about the wine-patches
mailing list