summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/qcommon/qcommon.h10
-rw-r--r--src/sdl/sdl_input.c18
2 files changed, 12 insertions, 16 deletions
diff --git a/src/qcommon/qcommon.h b/src/qcommon/qcommon.h
index 70a944fd..40fc58cb 100644
--- a/src/qcommon/qcommon.h
+++ b/src/qcommon/qcommon.h
@@ -1028,15 +1028,7 @@ NON-PORTABLE SYSTEM SERVICES
==============================================================
*/
-typedef enum {
- AXIS_SIDE,
- AXIS_FORWARD,
- AXIS_UP,
- AXIS_ROLL,
- AXIS_YAW,
- AXIS_PITCH,
- MAX_JOYSTICK_AXIS
-} joystickAxis_t;
+#define MAX_JOYSTICK_AXIS 16
void Sys_Init (void);
diff --git a/src/sdl/sdl_input.c b/src/sdl/sdl_input.c
index 2e4fa000..4558f4d3 100644
--- a/src/sdl/sdl_input.c
+++ b/src/sdl/sdl_input.c
@@ -610,7 +610,7 @@ struct
{
qboolean buttons[16]; // !!! FIXME: these might be too many.
unsigned int oldaxes;
- int oldaaxes[16];
+ int oldaaxes[MAX_JOYSTICK_AXIS];
unsigned int oldhats;
} stick_state;
@@ -857,13 +857,12 @@ static void IN_JoyMove( void )
total = SDL_JoystickNumAxes(stick);
if (total > 0)
{
- if (total > 16) total = 16;
- for (i = 0; i < total; i++)
+ if (in_joystickUseAnalog->integer)
{
- Sint16 axis = SDL_JoystickGetAxis(stick, i);
-
- if (in_joystickUseAnalog->integer)
+ if (total > MAX_JOYSTICK_AXIS) total = MAX_JOYSTICK_AXIS;
+ for (i = 0; i < total; i++)
{
+ Sint16 axis = SDL_JoystickGetAxis(stick, i);
float f = ( (float) abs(axis) ) / 32767.0f;
if( f < in_joystickThreshold->value ) axis = 0;
@@ -874,8 +873,13 @@ static void IN_JoyMove( void )
stick_state.oldaaxes[i] = axis;
}
}
- else
+ }
+ else
+ {
+ if (total > 16) total = 16;
+ for (i = 0; i < total; i++)
{
+ Sint16 axis = SDL_JoystickGetAxis(stick, i);
float f = ( (float) axis ) / 32767.0f;
if( f < -in_joystickThreshold->value ) {
axes |= ( 1 << ( i * 2 ) );