X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_state.c;h=42a6df49c4672f4d416c567d2a0db4e8f8fa424c;hb=d296a46a2dccdd99048541e1f8ca0ef010ac8545;hp=325609b8bcf7258cd3fe30e7aac005f554fb09f5;hpb=4fa63bbb5637f30db8eec9de49c0b2c4830cb866;p=freeglut diff --git a/src/freeglut_state.c b/src/freeglut_state.c index 325609b..42a6df4 100644 --- a/src/freeglut_state.c +++ b/src/freeglut_state.c @@ -72,7 +72,7 @@ static int fghGetConfig( int attribute ) */ void FGAPIENTRY glutSetOption( GLenum eWhat, int value ) { - freeglut_assert_ready; + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutSetOption" ); /* * XXX In chronological code add order. (WHY in that order?) @@ -118,7 +118,7 @@ void FGAPIENTRY glutSetOption( GLenum eWhat, int value ) break; default: - fgWarning( "glutSetOption(): missing enum handle %i\n", eWhat ); + fgWarning( "glutSetOption(): missing enum handle %d", eWhat ); break; } } @@ -142,7 +142,7 @@ int FGAPIENTRY glutGet( GLenum eWhat ) return fgElapsedTime(); } - freeglut_assert_ready; + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutGet" ); /* XXX In chronological code add order. (WHY in that order?) */ switch( eWhat ) @@ -454,7 +454,7 @@ int FGAPIENTRY glutGet( GLenum eWhat ) break; default: - fgWarning( "glutGet(): missing enum handle %i\n", eWhat ); + fgWarning( "glutGet(): missing enum handle %d", eWhat ); break; } return -1; @@ -465,7 +465,7 @@ int FGAPIENTRY glutGet( GLenum eWhat ) */ int FGAPIENTRY glutDeviceGet( GLenum eWhat ) { - freeglut_assert_ready; + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutDeviceGet" ); /* XXX WARNING: we are mostly lying in this function. */ switch( eWhat ) @@ -528,13 +528,21 @@ int FGAPIENTRY glutDeviceGet( GLenum eWhat ) #endif - case GLUT_JOYSTICK_POLL_RATE: case GLUT_HAS_JOYSTICK: + return fgJoystickDetect (); + case GLUT_OWNS_JOYSTICK: + return fgState.JoysticksInitialised; + + case GLUT_JOYSTICK_POLL_RATE: + return fgStructure.Window ? fgStructure.Window->State.JoystickPollRate : 0; + + /* XXX The following two are only for Joystick 0 but this is an improvement */ case GLUT_JOYSTICK_BUTTONS: + return glutJoystickGetNumButtons ( 0 ); + case GLUT_JOYSTICK_AXES: - /* XXX WARNING: THIS IS A BIG LIE! */ - return 0; + return glutJoystickGetNumAxes ( 0 ); case GLUT_HAS_SPACEBALL: case GLUT_HAS_DIAL_AND_BUTTON_BOX: @@ -555,7 +563,7 @@ int FGAPIENTRY glutDeviceGet( GLenum eWhat ) return GLUT_KEY_REPEAT_DEFAULT; default: - fgWarning( "glutDeviceGet(): missing enum handle %i\n", eWhat ); + fgWarning( "glutDeviceGet(): missing enum handle %d", eWhat ); break; } @@ -568,6 +576,7 @@ int FGAPIENTRY glutDeviceGet( GLenum eWhat ) */ int FGAPIENTRY glutGetModifiers( void ) { + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutGetModifiers" ); if( fgState.Modifiers == 0xffffffff ) { fgWarning( "glutGetModifiers() called outside an input callback" ); @@ -582,7 +591,7 @@ int FGAPIENTRY glutGetModifiers( void ) */ int FGAPIENTRY glutLayerGet( GLenum eWhat ) { - freeglut_assert_ready; + FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutLayerGet" ); /* * This is easy as layers are not implemented ;-) @@ -649,7 +658,7 @@ int FGAPIENTRY glutLayerGet( GLenum eWhat ) #endif default: - fgWarning( "glutLayerGet(): missing enum handle %i\n", eWhat ); + fgWarning( "glutLayerGet(): missing enum handle %d", eWhat ); break; }