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.
This commit is contained in:
Vitaliy Margolen 2007-07-06 23:36:39 -06:00 committed by Alexandre Julliard
parent deb74efc04
commit 8f28d4369e
5 changed files with 12 additions and 39 deletions

View file

@ -563,7 +563,10 @@ HRESULT WINAPI IDirectInputDevice2AImpl_Acquire(LPDIRECTINPUTDEVICE8A iface)
res = This->acquired ? S_FALSE : DI_OK; res = This->acquired ? S_FALSE : DI_OK;
This->acquired = 1; This->acquired = 1;
if (res == DI_OK) if (res == DI_OK)
{
This->queue_head = This->queue_tail = This->overflow = 0; This->queue_head = This->queue_tail = This->overflow = 0;
check_dinput_hooks(iface);
}
LeaveCriticalSection(&This->crit); LeaveCriticalSection(&This->crit);
return res; return res;
@ -581,6 +584,8 @@ HRESULT WINAPI IDirectInputDevice2AImpl_Unacquire(LPDIRECTINPUTDEVICE8A iface)
EnterCriticalSection(&This->crit); EnterCriticalSection(&This->crit);
res = !This->acquired ? DI_NOEFFECT : DI_OK; res = !This->acquired ? DI_NOEFFECT : DI_OK;
This->acquired = 0; This->acquired = 0;
if (res == DI_OK)
check_dinput_hooks(iface);
LeaveCriticalSection(&This->crit); LeaveCriticalSection(&This->crit);
return res; return res;

View file

@ -854,12 +854,12 @@ static BOOL check_hook_thread(void)
return hook_thread_hwnd != 0; return hook_thread_hwnd != 0;
} }
HHOOK set_dinput_hook(int hook_id, LPVOID proc) void check_dinput_hooks(LPDIRECTINPUTDEVICE8A iface)
{ {
HWND hwnd; HWND hwnd;
EnterCriticalSection(&dinput_hook_crit); EnterCriticalSection(&dinput_hook_crit);
hwnd = hook_thread_hwnd; hwnd = hook_thread_hwnd;
LeaveCriticalSection(&dinput_hook_crit); LeaveCriticalSection(&dinput_hook_crit);
return (HHOOK)SendMessageW(hwnd, WM_USER+0x10, (WPARAM)hook_id, (LPARAM)proc); SendMessageW(hwnd, WM_USER+0x10, 1, 0);
} }

View file

@ -57,7 +57,7 @@ extern const struct dinput_device joystick_linuxinput_device;
extern HINSTANCE DINPUT_instance; 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); typedef void (*DI_EVENT_PROC)(LPDIRECTINPUTDEVICE8A, WPARAM, LPARAM);
#endif /* __WINE_DLLS_DINPUT_DINPUT_PRIVATE_H */ #endif /* __WINE_DLLS_DINPUT_DINPUT_PRIVATE_H */

View file

@ -287,36 +287,6 @@ static HRESULT WINAPI SysKeyboardAImpl_GetDeviceState(
return DI_OK; 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 * GetCapabilities : get the device capablitites
*/ */
@ -442,8 +412,8 @@ static const IDirectInputDevice8AVtbl SysKeyboardAvt =
IDirectInputDevice2AImpl_EnumObjects, IDirectInputDevice2AImpl_EnumObjects,
IDirectInputDevice2AImpl_GetProperty, IDirectInputDevice2AImpl_GetProperty,
IDirectInputDevice2AImpl_SetProperty, IDirectInputDevice2AImpl_SetProperty,
SysKeyboardAImpl_Acquire, IDirectInputDevice2AImpl_Acquire,
SysKeyboardAImpl_Unacquire, IDirectInputDevice2AImpl_Unacquire,
SysKeyboardAImpl_GetDeviceState, SysKeyboardAImpl_GetDeviceState,
IDirectInputDevice2AImpl_GetDeviceData, IDirectInputDevice2AImpl_GetDeviceData,
IDirectInputDevice2AImpl_SetDataFormat, IDirectInputDevice2AImpl_SetDataFormat,
@ -484,8 +454,8 @@ static const IDirectInputDevice8WVtbl SysKeyboardWvt =
IDirectInputDevice2WImpl_EnumObjects, IDirectInputDevice2WImpl_EnumObjects,
XCAST(GetProperty)IDirectInputDevice2AImpl_GetProperty, XCAST(GetProperty)IDirectInputDevice2AImpl_GetProperty,
XCAST(SetProperty)IDirectInputDevice2AImpl_SetProperty, XCAST(SetProperty)IDirectInputDevice2AImpl_SetProperty,
XCAST(Acquire)SysKeyboardAImpl_Acquire, XCAST(Acquire)IDirectInputDevice2AImpl_Acquire,
XCAST(Unacquire)SysKeyboardAImpl_Unacquire, XCAST(Unacquire)IDirectInputDevice2AImpl_Unacquire,
XCAST(GetDeviceState)SysKeyboardAImpl_GetDeviceState, XCAST(GetDeviceState)SysKeyboardAImpl_GetDeviceState,
XCAST(GetDeviceData)IDirectInputDevice2AImpl_GetDeviceData, XCAST(GetDeviceData)IDirectInputDevice2AImpl_GetDeviceData,
XCAST(SetDataFormat)IDirectInputDevice2AImpl_SetDataFormat, XCAST(SetDataFormat)IDirectInputDevice2AImpl_SetDataFormat,

View file

@ -398,7 +398,6 @@ static HRESULT WINAPI SysMouseAImpl_Acquire(LPDIRECTINPUTDEVICE8A iface)
/* Install our mouse hook */ /* Install our mouse hook */
if (This->base.dwCoopLevel & DISCL_EXCLUSIVE) if (This->base.dwCoopLevel & DISCL_EXCLUSIVE)
ShowCursor(FALSE); /* hide cursor */ ShowCursor(FALSE); /* hide cursor */
set_dinput_hook(WH_MOUSE_LL, dinput_mouse_hook);
/* Get the window dimension and find the center */ /* Get the window dimension and find the center */
GetWindowRect(This->base.win, &rect); 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; if ((res = IDirectInputDevice2AImpl_Unacquire(iface)) != DI_OK) return res;
set_dinput_hook(WH_MOUSE_LL, NULL);
if (This->base.dwCoopLevel & DISCL_EXCLUSIVE) if (This->base.dwCoopLevel & DISCL_EXCLUSIVE)
ShowCursor(TRUE); /* show cursor */ ShowCursor(TRUE); /* show cursor */