#ifndef FREEGLUT_INTERNAL_H
#define FREEGLUT_INTERNAL_H
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
/* XXX Update these for each release! */
#define VERSION_MAJOR 2
#define VERSION_MINOR 2
#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: */
/*
+ * 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 );
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:
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 */
* of the menu user interface handling code...
*/
void fgActivateMenu( SFG_Window* window, int button );
-void fgExecuteMenuCallback( SFG_Menu* menu );
-GLboolean fgCheckActiveMenu ( SFG_Window *window, SFG_Menu *menu );
+GLboolean fgCheckActiveMenu ( SFG_Window *window, int button, GLboolean pressed,
+ int mouse_x, int mouse_y );
void fgDeactivateMenu( SFG_Window *window );
void fgDeactivateSubMenu( SFG_MenuEntry *menuEntry );