Addressing feature request 2116152 -- adding an fgError exit callback routine --...
[freeglut] / src / freeglut_init.c
index c96ca10..d113ab7 100644 (file)
@@ -91,7 +91,9 @@ SFG_State fgState = { { -1, -1, GL_FALSE },  /* Position */
                       1,                      /* MajorVersion */
                       0,                      /* MajorVersion */
                       0,                      /* ContextFlags */
-                      0                       /* ContextProfile */
+                      0,                      /* ContextProfile */
+                      NULL,                   /* ErrorFunc */
+                      NULL                    /* WarningFunc */
 };
 
 
@@ -377,7 +379,8 @@ static void fghInitialize( const char* displayName )
         }
         else
            fgWarning("fghInitialize: "
-                     "CreateDC failed, Screen size info may be incorrect");
+                     "CreateDC failed, Screen size info may be incorrect\n"
+          "This is quite likely caused by a bad '-display' parameter");
       
     }
     /* Set the timer granularity to 1 ms */
@@ -1142,4 +1145,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.ErrorFunc = vfgWarning;
+}
+
 /*** END OF FILE ***/