|| ( defined(__CYGWIN__) && defined(X_DISPLAY_MISSING) )
# define TARGET_HOST_MS_WINDOWS 1
-#elif defined(__posix__) || defined(__unix__) || defined(__linux__)
+#elif defined(__posix__) || defined(__unix__) || defined(__linux__) || defined(__sun)
# define TARGET_HOST_POSIX_X11 1
#elif defined(__APPLE__)
#include <string.h>
#include <math.h>
#include <stdlib.h>
+#include <stdarg.h>
/* These are included based on autoconf directives. */
#ifdef HAVE_SYS_TYPES_H
# endif
#endif
+#if TARGET_HOST_MS_WINDOWS
+# define HAVE_VFPRINTF 1
+#endif
+
/* MinGW may lack a prototype for ChangeDisplaySettingsEx() (depending on the version?) */
#if TARGET_HOST_MS_WINDOWS && !defined(ChangeDisplaySettingsEx)
LONG WINAPI ChangeDisplaySettingsExA(LPCSTR,LPDEVMODEA,HWND,DWORD,LPVOID);
/* The callback used when creating/using menus */
typedef void (* FGCBMenu )( int );
+/* The FreeGLUT error/warning handler type definition */
+typedef void (* FGError ) ( const char *fmt, va_list ap);
+typedef void (* FGWarning ) ( const char *fmt, va_list ap);
+
/* A list structure */
typedef struct tagSFG_List SFG_List;
int MinorVersion; /* Minor OpenGL context version */
int ContextFlags; /* OpenGL context flags */
int ContextProfile; /* OpenGL context profile */
+ FGError ErrorFunc; /* User defined error handler */
+ FGWarning WarningFunc; /* User defined warning handler */
};
/* The structure used by display initialization in freeglut_init.c */
* A call to those macros assures us that there is a current
* window set, respectively:
*/
-#define FREEGLUT_EXIT_IF_NO_WINDOW( string ) \
- if ( ! fgStructure.CurrentWindow ) \
- { \
- fgError ( " ERROR: Function <%s> called" \
- " with no current window defined.", (string) ) ; \
+#define FREEGLUT_EXIT_IF_NO_WINDOW( string ) \
+ if ( ! fgStructure.CurrentWindow && \
+ ( fgState.ActionOnWindowClose != GLUT_ACTION_CONTINUE_EXECUTION ) ) \
+ { \
+ fgError ( " ERROR: Function <%s> called" \
+ " with no current window defined.", (string) ) ; \
}
/*
/* A helper function to check if a display mode is possible to use */
#if TARGET_HOST_POSIX_X11
-GLXFBConfig* fgChooseFBConfig( void );
+GLXFBConfig* fgChooseFBConfig( int* numcfgs );
#endif
/* The window procedure for Win32 events handling */