Fixing 'glutGet' processing for 'GLUT_BORDERLESS' on Windows per e-mail from Eero...
[freeglut] / src / freeglut_init.c
index 7cccc35..bbe9ec8 100644 (file)
@@ -89,9 +89,11 @@ SFG_State fgState = { { -1, -1, GL_FALSE },  /* Position */
                       1,                      /* AuxiliaryBufferNumber */
                       4,                      /* SampleNumber */
                       1,                      /* MajorVersion */
-                      0,                      /* MajorVersion */
+                      0,                      /* MinorVersion */
                       0,                      /* ContextFlags */
-                      0                       /* ContextProfile */
+                      0,                      /* ContextProfile */
+                      NULL,                   /* ErrorFunc */
+                      NULL                    /* WarningFunc */
 };
 
 
@@ -387,6 +389,7 @@ static void fghInitialize( const char* displayName )
 #endif
 
     fgState.Initialised = GL_TRUE;
+    atexit(fgDeinitialize);
 
     /* InputDevice uses GlutTimerFunc(), so fgState.Initialised must be TRUE */
     fgInitialiseInputDevices();
@@ -401,8 +404,6 @@ void fgDeinitialize( void )
 
     if( !fgState.Initialised )
     {
-        fgWarning( "fgDeinitialize(): "
-                   "no valid initialization has been performed" );
         return;
     }
 
@@ -1143,4 +1144,24 @@ void FGAPIENTRY glutInitContextProfile( int profile )
     fgState.ContextProfile = profile;
 }
 
+/* -------------- User Defined Error/Warning Handler Support -------------- */
+
+/*
+ * Sets the user error handler (note the use of va_list for the args to the fmt)
+ */
+void FGAPIENTRY glutInitErrorFunc( void (* vfgError) ( const char *fmt, va_list ap ) )
+{
+    /* This allows user programs to handle freeglut errors */
+    fgState.ErrorFunc = vfgError;
+}
+
+/*
+ * Sets the user warning handler (note the use of va_list for the args to the fmt)
+ */
+void FGAPIENTRY glutInitWarningFunc( void (* vfgWarning) ( const char *fmt, va_list ap ) )
+{
+    /* This allows user programs to handle freeglut warnings */
+    fgState.WarningFunc = vfgWarning;
+}
+
 /*** END OF FILE ***/