Vitaliy Margolen : dinput: Signal event after we queued an event.
Not before.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Aug 7 13:15:04 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: fd6e974d92c79a16a173645ee1326d73db92774e
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=fd6e974d92c79a16a173645ee1326d73db92774e
Author: Vitaliy Margolen <wine-patch at kievinfo.com>
Date: Sun Aug 6 20:27:40 2006 -0600
dinput: Signal event after we queued an event. Not before.
---
dlls/dinput/mouse.c | 37 ++++++++++++++++++++-----------------
1 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/dlls/dinput/mouse.c b/dlls/dinput/mouse.c
index e626bf6..363d1b8 100644
--- a/dlls/dinput/mouse.c
+++ b/dlls/dinput/mouse.c
@@ -426,16 +426,14 @@ static LRESULT CALLBACK dinput_mouse_hoo
EnterCriticalSection(&(This->crit));
dwCoop = This->dwCoopLevel;
- /* Mouse moved -> send event if asked */
- if (This->hEvent)
- SetEvent(This->hEvent);
-
if (wparam == WM_MOUSEMOVE) {
if (This->absolute) {
if (hook->pt.x != This->prevX)
- GEN_EVENT(This->offset_array[WINE_MOUSE_X_POSITION], hook->pt.x, hook->time, 0);
+ GEN_EVENT(This->offset_array[WINE_MOUSE_X_POSITION], hook->pt.x,
+ hook->time, This->dinput->evsequence);
if (hook->pt.y != This->prevY)
- GEN_EVENT(This->offset_array[WINE_MOUSE_Y_POSITION], hook->pt.y, hook->time, 0);
+ GEN_EVENT(This->offset_array[WINE_MOUSE_Y_POSITION], hook->pt.y,
+ hook->time, This->dinput->evsequence);
} else {
/* Now, warp handling */
if ((This->need_warp == WARP_STARTED) &&
@@ -450,22 +448,22 @@ static LRESULT CALLBACK dinput_mouse_hoo
(This->need_warp == WARP_STARTED)) {
if (hook->pt.x != This->prevX)
GEN_EVENT(This->offset_array[WINE_MOUSE_X_POSITION], hook->pt.x - This->prevX,
- hook->time, (This->dinput->evsequence)++);
+ hook->time, This->dinput->evsequence);
if (hook->pt.y != This->prevY)
GEN_EVENT(This->offset_array[WINE_MOUSE_Y_POSITION], hook->pt.y - This->prevY,
- hook->time, (This->dinput->evsequence)++);
+ hook->time, This->dinput->evsequence);
} else {
/* This is the first time the event handler has been called after a
GetDeviceData or GetDeviceState. */
if (hook->pt.x != This->mapped_center.x) {
GEN_EVENT(This->offset_array[WINE_MOUSE_X_POSITION], hook->pt.x - This->mapped_center.x,
- hook->time, (This->dinput->evsequence)++);
+ hook->time, This->dinput->evsequence);
This->need_warp = WARP_NEEDED;
}
if (hook->pt.y != This->mapped_center.y) {
GEN_EVENT(This->offset_array[WINE_MOUSE_Y_POSITION], hook->pt.y - This->mapped_center.y,
- hook->time, (This->dinput->evsequence)++);
+ hook->time, This->dinput->evsequence);
This->need_warp = WARP_NEEDED;
}
}
@@ -489,38 +487,38 @@ static LRESULT CALLBACK dinput_mouse_hoo
switch(wparam) {
case WM_LBUTTONDOWN:
GEN_EVENT(This->offset_array[WINE_MOUSE_L_POSITION], 0x80,
- hook->time, This->dinput->evsequence++);
+ hook->time, This->dinput->evsequence);
This->m_state.rgbButtons[0] = 0x80;
break;
case WM_LBUTTONUP:
GEN_EVENT(This->offset_array[WINE_MOUSE_L_POSITION], 0x00,
- hook->time, This->dinput->evsequence++);
+ hook->time, This->dinput->evsequence);
This->m_state.rgbButtons[0] = 0x00;
break;
case WM_RBUTTONDOWN:
GEN_EVENT(This->offset_array[WINE_MOUSE_R_POSITION], 0x80,
- hook->time, This->dinput->evsequence++);
+ hook->time, This->dinput->evsequence);
This->m_state.rgbButtons[1] = 0x80;
break;
case WM_RBUTTONUP:
GEN_EVENT(This->offset_array[WINE_MOUSE_R_POSITION], 0x00,
- hook->time, This->dinput->evsequence++);
+ hook->time, This->dinput->evsequence);
This->m_state.rgbButtons[1] = 0x00;
break;
case WM_MBUTTONDOWN:
GEN_EVENT(This->offset_array[WINE_MOUSE_M_POSITION], 0x80,
- hook->time, This->dinput->evsequence++);
+ hook->time, This->dinput->evsequence);
This->m_state.rgbButtons[2] = 0x80;
break;
case WM_MBUTTONUP:
GEN_EVENT(This->offset_array[WINE_MOUSE_M_POSITION], 0x00,
- hook->time, This->dinput->evsequence++);
+ hook->time, This->dinput->evsequence);
This->m_state.rgbButtons[2] = 0x00;
break;
case WM_MOUSEWHEEL:
wdata = (short)HIWORD(hook->mouseData);
GEN_EVENT(This->offset_array[WINE_MOUSE_Z_POSITION], wdata,
- hook->time, This->dinput->evsequence++);
+ hook->time, This->dinput->evsequence);
This->m_state.lZ += wdata;
break;
}
@@ -529,7 +527,12 @@ static LRESULT CALLBACK dinput_mouse_hoo
This->m_state.lX, This->m_state.lY,
This->m_state.rgbButtons[0], This->m_state.rgbButtons[2], This->m_state.rgbButtons[1]);
+ This->dinput->evsequence++;
+
end:
+ /* Mouse moved -> send event if asked */
+ if (This->hEvent) SetEvent(This->hEvent);
+
LeaveCriticalSection(&(This->crit));
if (dwCoop & DISCL_NONEXCLUSIVE) {
More information about the wine-cvs
mailing list