summaryrefslogtreecommitdiff
path: root/src/SFML/Window/Unix/JoystickImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/SFML/Window/Unix/JoystickImpl.cpp')
-rw-r--r--src/SFML/Window/Unix/JoystickImpl.cpp38
1 files changed, 25 insertions, 13 deletions
diff --git a/src/SFML/Window/Unix/JoystickImpl.cpp b/src/SFML/Window/Unix/JoystickImpl.cpp
index d60075d..903d588 100644
--- a/src/SFML/Window/Unix/JoystickImpl.cpp
+++ b/src/SFML/Window/Unix/JoystickImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2016 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -440,6 +440,14 @@ namespace sf
namespace priv
{
////////////////////////////////////////////////////////////
+JoystickImpl::JoystickImpl() :
+m_file(-1)
+{
+ std::fill(m_mapping, m_mapping + ABS_MAX + 1, 0);
+}
+
+
+////////////////////////////////////////////////////////////
void JoystickImpl::initialize()
{
udevContext = udev_new();
@@ -650,19 +658,23 @@ JoystickState JoystickImpl::JoystickImpl::update()
case JS_EVENT_AXIS:
{
float value = joyState.value * 100.f / 32767.f;
- switch (m_mapping[joyState.number])
+
+ if (joyState.number < ABS_MAX + 1)
{
- case ABS_X: m_state.axes[Joystick::X] = value; break;
- case ABS_Y: m_state.axes[Joystick::Y] = value; break;
- case ABS_Z:
- case ABS_THROTTLE: m_state.axes[Joystick::Z] = value; break;
- case ABS_RZ:
- case ABS_RUDDER: m_state.axes[Joystick::R] = value; break;
- case ABS_RX: m_state.axes[Joystick::U] = value; break;
- case ABS_RY: m_state.axes[Joystick::V] = value; break;
- case ABS_HAT0X: m_state.axes[Joystick::PovX] = value; break;
- case ABS_HAT0Y: m_state.axes[Joystick::PovY] = value; break;
- default: break;
+ switch (m_mapping[joyState.number])
+ {
+ case ABS_X: m_state.axes[Joystick::X] = value; break;
+ case ABS_Y: m_state.axes[Joystick::Y] = value; break;
+ case ABS_Z:
+ case ABS_THROTTLE: m_state.axes[Joystick::Z] = value; break;
+ case ABS_RZ:
+ case ABS_RUDDER: m_state.axes[Joystick::R] = value; break;
+ case ABS_RX: m_state.axes[Joystick::U] = value; break;
+ case ABS_RY: m_state.axes[Joystick::V] = value; break;
+ case ABS_HAT0X: m_state.axes[Joystick::PovX] = value; break;
+ case ABS_HAT0Y: m_state.axes[Joystick::PovY] = value; break;
+ default: break;
+ }
}
break;
}