(234) Fixed part of bug #926883 (Video mode matching code, memory leaks,
[freeglut] / src / freeglut_internal.h
index a032851..a6a4a76 100644 (file)
 #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 <assert.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: */
@@ -634,7 +648,26 @@ extern SFG_State fgState;
  * A call to this function makes us sure that the Display and Structure
  * subsystems have been properly initialized and are ready to be used
  */
-#define  freeglut_assert_ready  assert( fgState.Initialised );
+#define  FREEGLUT_EXIT_IF_NOT_INITIALISED( string )               \
+  if ( ! fgState.Initialised )                                    \
+  {                                                               \
+    fgError ( " ERROR:  Function <%s> called"                     \
+              " without first calling 'glutInit'.", (string) ) ;  \
+  }
+
+#define  FREEGLUT_INTERNAL_ERROR_EXIT_IF_NOT_INITIALISED( string )  \
+  if ( ! fgState.Initialised )                                      \
+  {                                                                 \
+    fgError ( " ERROR:  Internal <%s> function called"              \
+              " without first calling 'glutInit'.", (string) ) ;    \
+  }
+
+#define  FREEGLUT_INTERNAL_ERROR_EXIT( cond, string, function )  \
+  if ( ! ( cond ) )                                              \
+  {                                                              \
+    fgError ( " ERROR:  Internal error <%s> in function %s",     \
+              (string), (function) ) ;                           \
+  }
 
 /*
  * Following definitions are somewhat similiar to GLib's,
@@ -649,10 +682,14 @@ extern SFG_State fgState;
 
 /*
  * A call to those macros assures us that there is a current
- * window and menu set, respectively:
+ * window set, respectively:
  */
-#define  freeglut_assert_window assert( fgStructure.Window != NULL );
-#define  freeglut_assert_menu   assert( fgStructure.Menu != NULL );
+#define  FREEGLUT_EXIT_IF_NO_WINDOW( string )                   \
+  if ( ! fgStructure.Window )                                   \
+  {                                                             \
+    fgError ( " ERROR:  Function <%s> called"                   \
+              " with no current window defined.", (string) ) ;  \
+  }
 
 /*
  * The deinitialize function gets called on glutMainLoop() end. It should clean up
@@ -755,8 +792,8 @@ SFG_Menu* fgMenuByID( int menuID );
  * 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 );