summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Lantinga <slouken@libsdl.org>2018-11-14 13:37:22 -0800
committerSam Lantinga <slouken@libsdl.org>2018-11-14 13:37:22 -0800
commit5a6cb6053f83343de49f291b40949e251de3c9b6 (patch)
tree4dbc3117bcfa97c84b15c5fbc98454b93a22a030
parentcc6a8ac87e41d0df68075081dbf5cd2ba46f8fd4 (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.mk0
-rwxr-xr-x[-rw-r--r--]Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj0
-rwxr-xr-x[-rw-r--r--]Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj0
-rwxr-xr-x[-rw-r--r--]Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj0
-rwxr-xr-x[-rw-r--r--]Xcode/SDL/SDL.xcodeproj/project.pbxproj0
-rwxr-xr-x[-rw-r--r--]Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj0
-rw-r--r--src/joystick/linux/SDL_sysjoystick.c13
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;