diff options
author | Sam Lantinga <slouken@libsdl.org> | 2018-11-14 13:37:22 -0800 |
---|---|---|
committer | Sam Lantinga <slouken@libsdl.org> | 2018-11-14 13:37:22 -0800 |
commit | 5a6cb6053f83343de49f291b40949e251de3c9b6 (patch) | |
tree | 4dbc3117bcfa97c84b15c5fbc98454b93a22a030 | |
parent | cc6a8ac87e41d0df68075081dbf5cd2ba46f8fd4 (diff) |
Fixed bug 3193 - Dualshock 3's motion sensors overwrite analog stick
maxxus
The Dualshock 3's motion sensors don't seem to be reported by the call to EVIOCGBIT but they still send EV_ABS events. Because they're not reported by EVIOCGBIT they're not assigned a proper axis ids and the default of 0 is used, which is the valid id for the left analog sticks left/right axis.
-rwxr-xr-x[-rw-r--r--] | Android.mk | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | Xcode/SDL/SDL.xcodeproj/project.pbxproj | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj | 0 | ||||
-rw-r--r-- | src/joystick/linux/SDL_sysjoystick.c | 13 |
7 files changed, 8 insertions, 5 deletions
diff --git a/Android.mk b/Android.mk index 043576c1ac..043576c1ac 100644..100755 --- a/Android.mk +++ b/Android.mk diff --git a/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj b/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj index 29390844b1..29390844b1 100644..100755 --- a/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj +++ b/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj diff --git a/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj b/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj index aace16b77b..aace16b77b 100644..100755 --- a/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj +++ b/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj diff --git a/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj b/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj index 978833d0ea..978833d0ea 100644..100755 --- a/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj +++ b/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj diff --git a/Xcode/SDL/SDL.xcodeproj/project.pbxproj b/Xcode/SDL/SDL.xcodeproj/project.pbxproj index d6041be582..d6041be582 100644..100755 --- a/Xcode/SDL/SDL.xcodeproj/project.pbxproj +++ b/Xcode/SDL/SDL.xcodeproj/project.pbxproj diff --git a/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj b/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj index 8c524cc54e..8c524cc54e 100644..100755 --- a/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj +++ b/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c index 06a2d9a215..af331f1fee 100644 --- a/src/joystick/linux/SDL_sysjoystick.c +++ b/src/joystick/linux/SDL_sysjoystick.c @@ -776,6 +776,7 @@ LINUX_JoystickOpen(SDL_Joystick * joystick, int device_index) joystick->hwdata->guid = item->guid; joystick->hwdata->effect.id = -1; joystick->hwdata->m_bSteamController = item->m_bSteamController; + SDL_memset(joystick->hwdata->abs_map, 0xFF, sizeof(joystick->hwdata->abs_map)); if (item->m_bSteamController) { joystick->hwdata->fd = -1; @@ -989,11 +990,13 @@ HandleInputEvents(SDL_Joystick * joystick) HandleHat(joystick, code / 2, code % 2, events[i].value); break; default: - events[i].value = - AxisCorrect(joystick, code, events[i].value); - SDL_PrivateJoystickAxis(joystick, - joystick->hwdata->abs_map[code], - events[i].value); + if (joystick->hwdata->abs_map[code] != 0xFF) { + events[i].value = + AxisCorrect(joystick, code, events[i].value); + SDL_PrivateJoystickAxis(joystick, + joystick->hwdata->abs_map[code], + events[i].value); + } break; } break; |