dinput: Implement GetDeviceStatus.
This commit is contained in:
parent
d7b98841ab
commit
a37c60b0f7
|
@ -417,8 +417,15 @@ static HRESULT WINAPI IDirectInputWImpl_Initialize(LPDIRECTINPUT7W iface, HINSTA
|
||||||
static HRESULT WINAPI IDirectInputAImpl_GetDeviceStatus(LPDIRECTINPUT7A iface, REFGUID rguid)
|
static HRESULT WINAPI IDirectInputAImpl_GetDeviceStatus(LPDIRECTINPUT7A iface, REFGUID rguid)
|
||||||
{
|
{
|
||||||
IDirectInputImpl *This = (IDirectInputImpl *)iface;
|
IDirectInputImpl *This = (IDirectInputImpl *)iface;
|
||||||
|
HRESULT hr;
|
||||||
|
LPDIRECTINPUTDEVICEA device;
|
||||||
|
|
||||||
FIXME( "(%p)->(%s): stub\n", This, debugstr_guid(rguid) );
|
TRACE( "(%p)->(%s)\n", This, debugstr_guid(rguid) );
|
||||||
|
|
||||||
|
hr = IDirectInput_CreateDevice( iface, rguid, &device, NULL );
|
||||||
|
if (hr != DI_OK) return DI_NOTATTACHED;
|
||||||
|
|
||||||
|
IUnknown_Release( device );
|
||||||
|
|
||||||
return DI_OK;
|
return DI_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,10 +124,13 @@ static BOOL CALLBACK enum_devices(LPCDIDEVICEINSTANCE lpddi, LPVOID pvRef)
|
||||||
LPDIRECTINPUTDEVICE device;
|
LPDIRECTINPUTDEVICE device;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
|
hr = IDirectInput_GetDeviceStatus(data->pDI, &lpddi->guidInstance);
|
||||||
|
ok(hr == DI_OK, "IDirectInput_GetDeviceStatus() failed: %s\n", DXGetErrorString8(hr));
|
||||||
|
|
||||||
|
if (hr == DI_OK)
|
||||||
|
{
|
||||||
hr = IDirectInput_CreateDevice(data->pDI, &lpddi->guidInstance, &device, NULL);
|
hr = IDirectInput_CreateDevice(data->pDI, &lpddi->guidInstance, &device, NULL);
|
||||||
ok(SUCCEEDED(hr), "IDirectInput_CreateDevice() failed: %s\n", DXGetErrorString8(hr));
|
ok(SUCCEEDED(hr), "IDirectInput_CreateDevice() failed: %s\n", DXGetErrorString8(hr));
|
||||||
if (SUCCEEDED(hr))
|
|
||||||
{
|
|
||||||
trace("Testing device \"%s\"\n", lpddi->tszInstanceName);
|
trace("Testing device \"%s\"\n", lpddi->tszInstanceName);
|
||||||
test_object_info(device, data->hwnd);
|
test_object_info(device, data->hwnd);
|
||||||
IUnknown_Release(device);
|
IUnknown_Release(device);
|
||||||
|
@ -164,6 +167,18 @@ static void device_tests(void)
|
||||||
hr = IDirectInput_EnumDevices(pDI, 0, enum_devices, &data, DIEDFL_ALLDEVICES);
|
hr = IDirectInput_EnumDevices(pDI, 0, enum_devices, &data, DIEDFL_ALLDEVICES);
|
||||||
ok(SUCCEEDED(hr), "IDirectInput_EnumDevices() failed: %s\n", DXGetErrorString8(hr));
|
ok(SUCCEEDED(hr), "IDirectInput_EnumDevices() failed: %s\n", DXGetErrorString8(hr));
|
||||||
|
|
||||||
|
|
||||||
|
/* If GetDeviceStatus returns DI_OK the device must exist */
|
||||||
|
hr = IDirectInput_GetDeviceStatus(pDI, &GUID_Joystick);
|
||||||
|
if (hr == DI_OK)
|
||||||
|
{
|
||||||
|
LPDIRECTINPUTDEVICE device = NULL;
|
||||||
|
|
||||||
|
hr = IDirectInput_CreateDevice(pDI, &GUID_Joystick, &device, NULL);
|
||||||
|
ok(SUCCEEDED(hr), "IDirectInput_CreateDevice() failed: %s\n", DXGetErrorString8(hr));
|
||||||
|
if (device) IUnknown_Release(device);
|
||||||
|
}
|
||||||
|
|
||||||
DestroyWindow(hwnd);
|
DestroyWindow(hwnd);
|
||||||
}
|
}
|
||||||
if (pDI) IUnknown_Release(pDI);
|
if (pDI) IUnknown_Release(pDI);
|
||||||
|
|
Loading…
Reference in New Issue