/* * Sets the joystick callback and polling rate for the current window */ void FGAPIENTRY glutJoystickFunc( void (* callback) ( unsigned int, int, int, int ), int pollInterval ) { FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutJoystickFunc" ); fgInitialiseJoysticks (); if ( ( ( fgStructure.CurrentWindow->State.JoystickPollRate < 0 ) || !FETCH_WCB(*fgStructure.CurrentWindow,Joystick) ) && /* Joystick callback was disabled */ ( callback && ( pollInterval >= 0 ) ) ) /* but is now enabled */ ++fgState.NumActiveJoysticks; else if ( ( ( fgStructure.CurrentWindow->State.JoystickPollRate >= 0 ) && FETCH_WCB(*fgStructure.CurrentWindow,Joystick) ) && /* Joystick callback was enabled */ ( !callback || ( pollInterval < 0 ) ) ) /* but is now disabled */ --fgState.NumActiveJoysticks; SET_CALLBACK( Joystick ); fgStructure.CurrentWindow->State.JoystickPollRate = pollInterval; fgStructure.CurrentWindow->State.JoystickLastPoll = fgElapsedTime() - fgStructure.CurrentWindow->State.JoystickPollRate; if( fgStructure.CurrentWindow->State.JoystickLastPoll < 0 ) fgStructure.CurrentWindow->State.JoystickLastPoll = 0; }
/* * Sets the joystick callback and polling rate for the current window */ void FGAPIENTRY glutJoystickFunc( FGCBJoystick callback, int pollInterval ) { FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutJoystickFunc" ); fgInitialiseJoysticks (); if ( ( fgStructure.CurrentWindow->State.JoystickPollRate <= 0 || /* Joystick callback was disabled */ !FETCH_WCB(*fgStructure.CurrentWindow,Joystick) ) && ( callback && ( pollInterval > 0 ) /* but is now enabled */ ) ) ++fgState.NumActiveJoysticks; else if ( ( fgStructure.CurrentWindow->State.JoystickPollRate > 0 && /* Joystick callback was enabled */ FETCH_WCB(*fgStructure.CurrentWindow,Joystick) ) && ( !callback || ( pollInterval <= 0 ) /* but is now disabled */ ) ) --fgState.NumActiveJoysticks; SET_CALLBACK( Joystick ); fgStructure.CurrentWindow->State.JoystickPollRate = pollInterval; /* 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; }
/* * Sets the joystick callback and polling rate for the current window */ void FGAPIENTRY glutJoystickFunc( void (* callback) ( unsigned int, int, int, int ), int pollInterval ) { FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutJoystickFunc" ); fgInitialiseJoysticks (); SET_CALLBACK( Joystick ); fgStructure.CurrentWindow->State.JoystickPollRate = pollInterval; fgStructure.CurrentWindow->State.JoystickLastPoll = fgElapsedTime() - fgStructure.CurrentWindow->State.JoystickPollRate; if( fgStructure.CurrentWindow->State.JoystickLastPoll < 0 ) fgStructure.CurrentWindow->State.JoystickLastPoll = 0; }