diff options
-rw-r--r-- | src/glut/glx/glut_input.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/src/glut/glx/glut_input.c b/src/glut/glx/glut_input.c index eea96349eaf..007883d6b6e 100644 --- a/src/glut/glx/glut_input.c +++ b/src/glut/glx/glut_input.c @@ -159,7 +159,7 @@ tabletPosChange(GLUTwindow * window, int first, int count, int *data) } #endif /* !_WIN32 */ -int +static int __glutProcessDeviceEvents(XEvent * event) { #if !defined(_WIN32) @@ -264,18 +264,17 @@ __glutProcessDeviceEvents(XEvent * event) #else { JOYINFOEX info; - int njoyId = 0; - int nConnected = 0; - MMRESULT result; - - /* Loop through all possible joystick IDs until we get the error - JOYERR_PARMS. Count the number of times we get JOYERR_NOERROR - indicating an installed joystick driver with a joystick currently - attached to the port. */ - while ((result = joyGetPosEx(njoyId++,&info)) != JOYERR_PARMS) { - if (result == JOYERR_NOERROR) { - ++nConnected; /* The count of connected joysticks. */ - } + JOYCAPS joyCaps; + + if (joyGetPosEx(JOYSTICKID1,&info) != JOYERR_NOERROR) { + __glutHasJoystick = 1; + joyGetDevCaps(JOYSTICKID1, &joyCaps, sizeof(joyCaps)); + __glutNumJoystickButtons = joyCaps.wNumButtons; + __glutNumJoystickAxes = joyCaps.wNumAxes; + } else { + __glutHasJoystick = 0; + __glutNumJoystickButtons = 0; + __glutNumJoystickAxes = 0; } } #endif /* !_WIN32 */ |