added error check (John Fay)
[freeglut] / src / freeglut_internal.h
index b9cc632..96326c7 100644 (file)
@@ -28,7 +28,7 @@
 #ifndef  FREEGLUT_INTERNAL_H
 #define  FREEGLUT_INTERNAL_H
 
-#ifdef HAVE_CONFIG_H
+#if HAVE_CONFIG_H
 #    include "config.h"
 #endif
 
 #include <string.h>
 #include <math.h>
 #include <stdlib.h>
-#include <stdarg.h>
-#if TARGET_HOST_UNIX_X11
-#include <unistd.h>
-#include <sys/time.h>
+#if HAVE_SYS_TYPES_H
+#    include <sys/types.h>
+#endif
+#if HAVE_UNISTD_H
+#    include <unistd.h>
+#endif
+#if TIME_WITH_SYS_TIME
+#    include <sys/time.h>
+#    include <time.h>
+#else
+#    if HAVE_SYS_TIME_H
+#        include <sys/time.h>
+#    else
+#        include <time.h>
+#    endif
 #endif
 
 /* The system-dependant include files should go here: */
@@ -349,6 +360,14 @@ struct tagSFG_WindowState
 
 
 /*
+ * A generic function pointer.  We should really use the GLUTproc type
+ * defined in freeglut_ext.h, but if we include that header in this file
+ * a bunch of other stuff (font-related) blows up!
+ */
+typedef void (*SFG_Proc)();
+
+
+/*
  * SET_WCB() is used as:
  *
  *     SET_WCB( window, Visibility, func );
@@ -369,8 +388,8 @@ struct tagSFG_WindowState
 do                                                             \
 {                                                              \
     if( FETCH_WCB( window, cbname ) != func )                  \
-        (((window).CallBacks[CB_ ## cbname]) = (void *) func); \
-} while( 0 )                                                   \
+        (((window).CallBacks[CB_ ## cbname]) = (SFG_Proc) func); \
+} while( 0 )
 
 /*
  * FETCH_WCB() is used as:
@@ -521,7 +540,7 @@ struct tagSFG_Window
 
     SFG_Context         Window;                 /* Window and OpenGL context */
     SFG_WindowState     State;                  /* The window state          */
-    void         *CallBacks[ TOTAL_CALLBACKS ]; /* Array of window callbacks */
+    SFG_Proc            CallBacks[ TOTAL_CALLBACKS ]; /* Array of window callbacks */
     void               *UserData ;              /* For use by user           */
 
     SFG_Menu*       Menu[ FREEGLUT_MAX_MENUS ]; /* Menus appended to window  */