dinput: BuildActionMap should not fail if mapping has no pre-stored settings.
This commit is contained in:
parent
851d38c4ef
commit
d5e9cedaf5
|
@ -674,7 +674,7 @@ static BOOL load_mapping_settings(IDirectInputDeviceImpl *This, LPDIACTIONFORMAT
|
|||
HKEY hkey;
|
||||
WCHAR *guid_str;
|
||||
DIDEVICEINSTANCEW didev;
|
||||
int i;
|
||||
int i, mapped = 0;
|
||||
|
||||
didev.dwSize = sizeof(didev);
|
||||
IDirectInputDevice8_GetDeviceInfo(&This->IDirectInputDevice8W_iface, &didev);
|
||||
|
@ -703,14 +703,15 @@ static BOOL load_mapping_settings(IDirectInputDeviceImpl *This, LPDIACTIONFORMAT
|
|||
{
|
||||
lpdiaf->rgoAction[i].dwObjID = id;
|
||||
lpdiaf->rgoAction[i].guidInstance = didev.guidInstance;
|
||||
lpdiaf->rgoAction[i].dwHow = DIAH_USERCONFIG;
|
||||
lpdiaf->rgoAction[i].dwHow = DIAH_DEFAULT;
|
||||
mapped += 1;
|
||||
}
|
||||
}
|
||||
|
||||
RegCloseKey(hkey);
|
||||
CoTaskMemFree(guid_str);
|
||||
|
||||
return TRUE;
|
||||
return mapped > 0;
|
||||
}
|
||||
|
||||
HRESULT _build_action_map(LPDIRECTINPUTDEVICE8W iface, LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags, DWORD devMask, LPCDIDATAFORMAT df)
|
||||
|
|
|
@ -447,13 +447,13 @@ static void test_save_settings(void)
|
|||
hr = IDirectInputDevice8_BuildActionMap(pKey, &af, NULL, 0);
|
||||
ok (SUCCEEDED(hr), "BuildActionMap failed hr=%08x\n", hr);
|
||||
|
||||
todo_wine ok (results[0] == af.rgoAction[0].dwObjID,
|
||||
ok (results[0] == af.rgoAction[0].dwObjID,
|
||||
"Mapped incorrectly expected: 0x%08x got: 0x%08x\n", results[0], af.rgoAction[0].dwObjID);
|
||||
todo_wine ok (IsEqualGUID(&GUID_SysKeyboard, &af.rgoAction[0].guidInstance), "Action should be mapped to keyboard\n");
|
||||
ok (IsEqualGUID(&GUID_SysKeyboard, &af.rgoAction[0].guidInstance), "Action should be mapped to keyboard\n");
|
||||
|
||||
todo_wine ok (results[1] == af.rgoAction[1].dwObjID,
|
||||
ok (results[1] == af.rgoAction[1].dwObjID,
|
||||
"Mapped incorrectly expected: 0x%08x got: 0x%08x\n", results[1], af.rgoAction[1].dwObjID);
|
||||
todo_wine ok (IsEqualGUID(&GUID_SysKeyboard, &af.rgoAction[1].guidInstance), "Action should be mapped to keyboard\n");
|
||||
ok (IsEqualGUID(&GUID_SysKeyboard, &af.rgoAction[1].guidInstance), "Action should be mapped to keyboard\n");
|
||||
|
||||
af.guidActionMap = mapping_guid;
|
||||
/* Hard case. Customized mapping, save, ask for previous map and read it back */
|
||||
|
|
Loading…
Reference in New Issue