Module: wine Branch: master Commit: 8f28d4369e04af31d87faea1e05e2118b4fd21ba URL: http://source.winehq.org/git/wine.git/?a=commit;h=8f28d4369e04af31d87faea1e0...
Author: Vitaliy Margolen wine-patches@kievinfo.com Date: Fri Jul 6 23:36:39 2007 -0600
dinput: Rename set_dinput_hook and call it from the base class.
Since keyboard's acquire and unacquire don't do anything special just call the base class.
---
dlls/dinput/device.c | 5 +++++ dlls/dinput/dinput_main.c | 4 ++-- dlls/dinput/dinput_private.h | 2 +- dlls/dinput/keyboard.c | 38 ++++---------------------------------- dlls/dinput/mouse.c | 2 -- 5 files changed, 12 insertions(+), 39 deletions(-)
diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c index 618665f..1dc6e4a 100644 --- a/dlls/dinput/device.c +++ b/dlls/dinput/device.c @@ -563,7 +563,10 @@ HRESULT WINAPI IDirectInputDevice2AImpl_Acquire(LPDIRECTINPUTDEVICE8A iface) res = This->acquired ? S_FALSE : DI_OK; This->acquired = 1; if (res == DI_OK) + { This->queue_head = This->queue_tail = This->overflow = 0; + check_dinput_hooks(iface); + } LeaveCriticalSection(&This->crit);
return res; @@ -581,6 +584,8 @@ HRESULT WINAPI IDirectInputDevice2AImpl_Unacquire(LPDIRECTINPUTDEVICE8A iface) EnterCriticalSection(&This->crit); res = !This->acquired ? DI_NOEFFECT : DI_OK; This->acquired = 0; + if (res == DI_OK) + check_dinput_hooks(iface); LeaveCriticalSection(&This->crit);
return res; diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c index b723de3..20550c7 100644 --- a/dlls/dinput/dinput_main.c +++ b/dlls/dinput/dinput_main.c @@ -854,12 +854,12 @@ static BOOL check_hook_thread(void) return hook_thread_hwnd != 0; }
-HHOOK set_dinput_hook(int hook_id, LPVOID proc) +void check_dinput_hooks(LPDIRECTINPUTDEVICE8A iface) { HWND hwnd;
EnterCriticalSection(&dinput_hook_crit); hwnd = hook_thread_hwnd; LeaveCriticalSection(&dinput_hook_crit); - return (HHOOK)SendMessageW(hwnd, WM_USER+0x10, (WPARAM)hook_id, (LPARAM)proc); + SendMessageW(hwnd, WM_USER+0x10, 1, 0); } diff --git a/dlls/dinput/dinput_private.h b/dlls/dinput/dinput_private.h index 4bce692..a371263 100644 --- a/dlls/dinput/dinput_private.h +++ b/dlls/dinput/dinput_private.h @@ -57,7 +57,7 @@ extern const struct dinput_device joystick_linuxinput_device;
extern HINSTANCE DINPUT_instance;
-extern HHOOK set_dinput_hook(int hook_id, LPVOID proc); +extern void check_dinput_hooks(LPDIRECTINPUTDEVICE8A); typedef void (*DI_EVENT_PROC)(LPDIRECTINPUTDEVICE8A, WPARAM, LPARAM);
#endif /* __WINE_DLLS_DINPUT_DINPUT_PRIVATE_H */ diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c index 745ab7f..ef66ed9 100644 --- a/dlls/dinput/keyboard.c +++ b/dlls/dinput/keyboard.c @@ -287,36 +287,6 @@ static HRESULT WINAPI SysKeyboardAImpl_GetDeviceState( return DI_OK; }
-static HRESULT WINAPI SysKeyboardAImpl_Unacquire(LPDIRECTINPUTDEVICE8A iface); - -static HRESULT WINAPI SysKeyboardAImpl_Acquire(LPDIRECTINPUTDEVICE8A iface) -{ - SysKeyboardImpl *This = (SysKeyboardImpl *)iface; - HRESULT res; - - TRACE("(%p)\n",This); - - if ((res = IDirectInputDevice2AImpl_Acquire(iface)) != DI_OK) return res; - - set_dinput_hook(WH_KEYBOARD_LL, KeyboardCallback); - - return DI_OK; -} - -static HRESULT WINAPI SysKeyboardAImpl_Unacquire(LPDIRECTINPUTDEVICE8A iface) -{ - SysKeyboardImpl *This = (SysKeyboardImpl *)iface; - HRESULT res; - - TRACE("(this=%p)\n",This); - - if ((res = IDirectInputDevice2AImpl_Unacquire(iface)) != DI_OK) return res; - - set_dinput_hook(WH_KEYBOARD_LL, NULL); - - return DI_OK; -} - /****************************************************************************** * GetCapabilities : get the device capablitites */ @@ -442,8 +412,8 @@ static const IDirectInputDevice8AVtbl SysKeyboardAvt = IDirectInputDevice2AImpl_EnumObjects, IDirectInputDevice2AImpl_GetProperty, IDirectInputDevice2AImpl_SetProperty, - SysKeyboardAImpl_Acquire, - SysKeyboardAImpl_Unacquire, + IDirectInputDevice2AImpl_Acquire, + IDirectInputDevice2AImpl_Unacquire, SysKeyboardAImpl_GetDeviceState, IDirectInputDevice2AImpl_GetDeviceData, IDirectInputDevice2AImpl_SetDataFormat, @@ -484,8 +454,8 @@ static const IDirectInputDevice8WVtbl SysKeyboardWvt = IDirectInputDevice2WImpl_EnumObjects, XCAST(GetProperty)IDirectInputDevice2AImpl_GetProperty, XCAST(SetProperty)IDirectInputDevice2AImpl_SetProperty, - XCAST(Acquire)SysKeyboardAImpl_Acquire, - XCAST(Unacquire)SysKeyboardAImpl_Unacquire, + XCAST(Acquire)IDirectInputDevice2AImpl_Acquire, + XCAST(Unacquire)IDirectInputDevice2AImpl_Unacquire, XCAST(GetDeviceState)SysKeyboardAImpl_GetDeviceState, XCAST(GetDeviceData)IDirectInputDevice2AImpl_GetDeviceData, XCAST(SetDataFormat)IDirectInputDevice2AImpl_SetDataFormat, diff --git a/dlls/dinput/mouse.c b/dlls/dinput/mouse.c index 0e9a349..eeada11 100644 --- a/dlls/dinput/mouse.c +++ b/dlls/dinput/mouse.c @@ -398,7 +398,6 @@ static HRESULT WINAPI SysMouseAImpl_Acquire(LPDIRECTINPUTDEVICE8A iface) /* Install our mouse hook */ if (This->base.dwCoopLevel & DISCL_EXCLUSIVE) ShowCursor(FALSE); /* hide cursor */ - set_dinput_hook(WH_MOUSE_LL, dinput_mouse_hook);
/* Get the window dimension and find the center */ GetWindowRect(This->base.win, &rect); @@ -433,7 +432,6 @@ static HRESULT WINAPI SysMouseAImpl_Unacquire(LPDIRECTINPUTDEVICE8A iface)
if ((res = IDirectInputDevice2AImpl_Unacquire(iface)) != DI_OK) return res;
- set_dinput_hook(WH_MOUSE_LL, NULL); if (This->base.dwCoopLevel & DISCL_EXCLUSIVE) ShowCursor(TRUE); /* show cursor */