dinput: Made EnumDevicesBySemantics more terse.
This commit is contained in:
parent
a85f66e7a7
commit
13421a210b
|
@ -842,12 +842,13 @@ static HRESULT WINAPI IDirectInput8AImpl_EnumDevicesBySemantics(
|
||||||
LPVOID pvRef, DWORD dwFlags
|
LPVOID pvRef, DWORD dwFlags
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
static const REFGUID guids[2] = { &GUID_SysKeyboard, &GUID_SysMouse };
|
||||||
|
static const DWORD actionMasks[] = { DIKEYBOARD_MASK, DIMOUSE_MASK };
|
||||||
IDirectInputImpl *This = impl_from_IDirectInput8A( iface );
|
IDirectInputImpl *This = impl_from_IDirectInput8A( iface );
|
||||||
DIDEVICEINSTANCEA didevi;
|
DIDEVICEINSTANCEA didevi;
|
||||||
LPDIRECTINPUTDEVICE8A lpdid;
|
LPDIRECTINPUTDEVICE8A lpdid;
|
||||||
BOOL ret;
|
int i, j;
|
||||||
DWORD callbackFlags = 0;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
FIXME("(this=%p,%s,%p,%p,%p,%04x): semi-stub\n", This, ptszUserName, lpdiActionFormat,
|
FIXME("(this=%p,%s,%p,%p,%p,%04x): semi-stub\n", This, ptszUserName, lpdiActionFormat,
|
||||||
lpCallback, pvRef, dwFlags);
|
lpCallback, pvRef, dwFlags);
|
||||||
|
@ -864,29 +865,22 @@ static HRESULT WINAPI IDirectInput8AImpl_EnumDevicesBySemantics(
|
||||||
|
|
||||||
didevi.dwSize = sizeof(didevi);
|
didevi.dwSize = sizeof(didevi);
|
||||||
|
|
||||||
/* enum the keyboard first */
|
/* Enumerate keyboard and mouse */
|
||||||
IDirectInput_CreateDevice(iface, &GUID_SysKeyboard, &lpdid, NULL);
|
for(i=0; i < sizeof(guids)/sizeof(guids[0]); i++)
|
||||||
|
{
|
||||||
|
DWORD callbackFlags = 0;
|
||||||
|
|
||||||
|
IDirectInput_CreateDevice(iface, guids[i], &lpdid, NULL);
|
||||||
IDirectInputDevice_GetDeviceInfo(lpdid, &didevi);
|
IDirectInputDevice_GetDeviceInfo(lpdid, &didevi);
|
||||||
/* if there's any DIKEYBOARD action, keyboard is priority 1*/
|
|
||||||
for(i=0; i < lpdiActionFormat->dwActionSize; i++)
|
/* If there's at least one action for the device it's priority 1 */
|
||||||
if ((lpdiActionFormat->rgoAction[i].dwSemantic & DIKEYBOARD_MASK) == DIKEYBOARD_MASK)
|
for(j=0; j < lpdiActionFormat->dwActionSize; j++)
|
||||||
|
if ((lpdiActionFormat->rgoAction[j].dwSemantic & actionMasks[j]) == actionMasks[j])
|
||||||
callbackFlags |= DIEDBS_MAPPEDPRI1;
|
callbackFlags |= DIEDBS_MAPPEDPRI1;
|
||||||
|
|
||||||
ret = lpCallback(&didevi, lpdid, callbackFlags, 1, pvRef);
|
if (lpCallback(&didevi, lpdid, callbackFlags, sizeof(guids)/sizeof(guids[0]) - (i+1), pvRef) == DIENUM_STOP)
|
||||||
|
return DI_OK;
|
||||||
if (ret == DIENUM_STOP) return DI_OK;
|
}
|
||||||
|
|
||||||
callbackFlags = 0;
|
|
||||||
|
|
||||||
/* and then the mouse */
|
|
||||||
IDirectInput_CreateDevice(iface, &GUID_SysMouse, &lpdid, NULL);
|
|
||||||
IDirectInputDevice_GetDeviceInfo(lpdid, &didevi);
|
|
||||||
/* same as above, but for the mouse */
|
|
||||||
for(i=0; i < lpdiActionFormat->dwActionSize; i++)
|
|
||||||
if ((lpdiActionFormat->rgoAction[i].dwSemantic & DIMOUSE_MASK) == DIMOUSE_MASK)
|
|
||||||
callbackFlags |= DIEDBS_MAPPEDPRI1;
|
|
||||||
|
|
||||||
lpCallback(&didevi, lpdid, callbackFlags, 0, pvRef);
|
|
||||||
|
|
||||||
return DI_OK;
|
return DI_OK;
|
||||||
}
|
}
|
||||||
|
@ -897,41 +891,34 @@ static HRESULT WINAPI IDirectInput8WImpl_EnumDevicesBySemantics(
|
||||||
LPVOID pvRef, DWORD dwFlags
|
LPVOID pvRef, DWORD dwFlags
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
static const REFGUID guids[2] = { &GUID_SysKeyboard, &GUID_SysMouse };
|
||||||
|
static const DWORD actionMasks[] = { DIKEYBOARD_MASK, DIMOUSE_MASK };
|
||||||
IDirectInputImpl *This = impl_from_IDirectInput8W(iface);
|
IDirectInputImpl *This = impl_from_IDirectInput8W(iface);
|
||||||
DIDEVICEINSTANCEW didevi;
|
DIDEVICEINSTANCEW didevi;
|
||||||
LPDIRECTINPUTDEVICE8W lpdid;
|
LPDIRECTINPUTDEVICE8W lpdid;
|
||||||
BOOL ret;
|
int i, j;
|
||||||
DWORD callbackFlags = 0;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
FIXME("(this=%p,%s,%p,%p,%p,%04x): semi-stub\n", This, debugstr_w(ptszUserName), lpdiActionFormat,
|
FIXME("(this=%p,%s,%p,%p,%p,%04x): semi-stub\n", This, debugstr_w(ptszUserName), lpdiActionFormat,
|
||||||
lpCallback, pvRef, dwFlags);
|
lpCallback, pvRef, dwFlags);
|
||||||
|
|
||||||
didevi.dwSize = sizeof(didevi);
|
didevi.dwSize = sizeof(didevi);
|
||||||
|
|
||||||
/* enum the keyboard first */
|
/* Enumerate keyboard and mouse */
|
||||||
IDirectInput_CreateDevice(iface, &GUID_SysKeyboard, &lpdid, NULL);
|
for(i=0; i < sizeof(guids)/sizeof(guids[0]); i++)
|
||||||
|
{
|
||||||
|
DWORD callbackFlags = 0;
|
||||||
|
|
||||||
|
IDirectInput_CreateDevice(iface, guids[i], &lpdid, NULL);
|
||||||
IDirectInputDevice_GetDeviceInfo(lpdid, &didevi);
|
IDirectInputDevice_GetDeviceInfo(lpdid, &didevi);
|
||||||
/* if there's any DIKEYBOARD action, keyboard is priority 1*/
|
|
||||||
for(i=0; i < lpdiActionFormat->dwActionSize; i++)
|
/* If there's at least one action for the device it's priority 1 */
|
||||||
if ((lpdiActionFormat->rgoAction[i].dwSemantic & DIKEYBOARD_MASK) == DIKEYBOARD_MASK)
|
for(j=0; j < lpdiActionFormat->dwActionSize; j++)
|
||||||
|
if ((lpdiActionFormat->rgoAction[j].dwSemantic & actionMasks[j]) == actionMasks[j])
|
||||||
callbackFlags |= DIEDBS_MAPPEDPRI1;
|
callbackFlags |= DIEDBS_MAPPEDPRI1;
|
||||||
|
|
||||||
ret = lpCallback(&didevi, lpdid, callbackFlags, 1, pvRef);
|
if (lpCallback(&didevi, lpdid, callbackFlags, sizeof(guids)/sizeof(guids[0]) - (i+1), pvRef) == DIENUM_STOP)
|
||||||
|
return DI_OK;
|
||||||
if (ret == DIENUM_STOP) return DI_OK;
|
}
|
||||||
|
|
||||||
callbackFlags = 0;
|
|
||||||
|
|
||||||
/* and then the mouse */
|
|
||||||
IDirectInput_CreateDevice(iface, &GUID_SysMouse, &lpdid, NULL);
|
|
||||||
IDirectInputDevice_GetDeviceInfo(lpdid, &didevi);
|
|
||||||
/* same as above, but for the mouse */
|
|
||||||
for(i=0; i < lpdiActionFormat->dwActionSize; i++)
|
|
||||||
if ((lpdiActionFormat->rgoAction[i].dwSemantic & DIMOUSE_MASK) == DIMOUSE_MASK)
|
|
||||||
callbackFlags |= DIEDBS_MAPPEDPRI1;
|
|
||||||
|
|
||||||
lpCallback(&didevi, lpdid, callbackFlags, 0, pvRef);
|
|
||||||
|
|
||||||
return DI_OK;
|
return DI_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue