From 4a2033934628a501347e5addf781503036f9056b Mon Sep 17 00:00:00 2001 From: Lucas Fialho Zawacki Date: Tue, 23 Aug 2011 23:42:51 -0300 Subject: [PATCH] dinput: In BuildActionMap, don't assign objects to actions mapped by an user. --- dlls/dinput/device.c | 3 +++ dlls/dinput/joystick.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c index a2412b82e4a..d2de525a556 100644 --- a/dlls/dinput/device.c +++ b/dlls/dinput/device.c @@ -605,6 +605,9 @@ HRESULT _build_action_map(LPDIRECTINPUTDEVICE8W iface, LPDIACTIONFORMATW lpdiaf, for (i=0; i < lpdiaf->dwNumActions; i++) { + /* Don't touch an user configured action */ + if (lpdiaf->rgoAction[i].dwHow == DIAH_USERCONFIG) continue; + if ((lpdiaf->rgoAction[i].dwSemantic & devMask) == devMask) { DWORD obj_id = semantic_to_obj_id(This, lpdiaf->rgoAction[i].dwSemantic); diff --git a/dlls/dinput/joystick.c b/dlls/dinput/joystick.c index c6bae98aa84..779472d4dc6 100644 --- a/dlls/dinput/joystick.c +++ b/dlls/dinput/joystick.c @@ -445,6 +445,9 @@ HRESULT WINAPI JoystickWGenericImpl_BuildActionMap(LPDIRECTINPUTDEVICE8W iface, DWORD type = 0x000000ff & (lpdiaf->rgoAction[i].dwSemantic >> 8); DWORD genre = 0xff000000 & lpdiaf->rgoAction[i].dwSemantic; + /* Don't touch an user configured action */ + if (lpdiaf->rgoAction[i].dwHow == DIAH_USERCONFIG) continue; + /* Only consider actions of the right genre */ if (lpdiaf->dwGenre != genre && genre != DIGENRE_ANY) continue; -- 2.11.4.GIT