summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface')
-rw-r--r--Source/Core/InputCommon/ControllerInterface/SDL/SDLGamepad.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/SDL/SDLGamepad.h b/Source/Core/InputCommon/ControllerInterface/SDL/SDLGamepad.h
index e71e3f4e52..4f03ea7d4a 100644
--- a/Source/Core/InputCommon/ControllerInterface/SDL/SDLGamepad.h
+++ b/Source/Core/InputCommon/ControllerInterface/SDL/SDLGamepad.h
@@ -362,11 +362,15 @@ public:
const int touchpad_index = 0;
const int finger_index = 0;
- Uint8 state = 0;
- SDL_GameControllerGetTouchpadFinger(m_gamecontroller, touchpad_index, finger_index, &state,
- &m_touchpad_x, &m_touchpad_y, &m_touchpad_pressure);
- m_touchpad_x = m_touchpad_x * 2 - 1;
- m_touchpad_y = m_touchpad_y * 2 - 1;
+ if (SDL_GameControllerGetNumTouchpads(m_gamecontroller) > touchpad_index &&
+ SDL_GameControllerGetNumTouchpadFingers(m_gamecontroller, touchpad_index) > finger_index)
+ {
+ Uint8 state = 0;
+ SDL_GameControllerGetTouchpadFinger(m_gamecontroller, touchpad_index, finger_index, &state,
+ &m_touchpad_x, &m_touchpad_y, &m_touchpad_pressure);
+ m_touchpad_x = m_touchpad_x * 2 - 1;
+ m_touchpad_y = m_touchpad_y * 2 - 1;
+ }
return Core::DeviceRemoval::Keep;
}