From 2e45756a332e2bd2024bbd3cec6fcf449ef41274 Mon Sep 17 00:00:00 2001 From: dcnieho Date: Sun, 12 Oct 2014 06:21:32 +0000 Subject: [PATCH] Fixed bug identified by Kevin. If pollrate is larger than elapsedtime, we'd wrap, and joystick would never get polled git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1710 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/src/fg_callbacks.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/freeglut/freeglut/src/fg_callbacks.c b/freeglut/freeglut/src/fg_callbacks.c index 5ca3761..7d5fca6 100644 --- a/freeglut/freeglut/src/fg_callbacks.c +++ b/freeglut/freeglut/src/fg_callbacks.c @@ -247,11 +247,12 @@ void FGAPIENTRY glutJoystickFunc( FGCBJoystick callback, int pollInterval ) SET_CALLBACK( Joystick ); fgStructure.CurrentWindow->State.JoystickPollRate = pollInterval; - fgStructure.CurrentWindow->State.JoystickLastPoll = - fgElapsedTime() - fgStructure.CurrentWindow->State.JoystickPollRate; - - if( fgStructure.CurrentWindow->State.JoystickLastPoll < 0 ) + /* set last poll time such that joystick will be polled asap */ + fgStructure.CurrentWindow->State.JoystickLastPoll = fgElapsedTime(); + if (fgStructure.CurrentWindow->State.JoystickLastPoll < pollInterval) fgStructure.CurrentWindow->State.JoystickLastPoll = 0; + else + fgStructure.CurrentWindow->State.JoystickLastPoll -= pollInterval; }