|| ( defined(__CYGWIN__) && defined(X_DISPLAY_MISSING) )
# define TARGET_HOST_MS_WINDOWS 1
-#elif defined (ANDROID)
+#elif defined (__ANDROID__)
# define TARGET_HOST_ANDROID 1
#elif defined(__posix__) || defined(__unix__) || defined(__linux__) || defined(__sun)
typedef unsigned long fg_time_t;
#endif
-
+#ifndef __fg_unused
+# ifdef __GNUC__
+# define __fg_unused __attribute__((unused))
+# else
+# define __fg_unused
+# endif
+#endif
/* Platform-specific includes */
#if TARGET_HOST_POSIX_X11
typedef void (* FGCBMultiMotion )( int, int, int );
typedef void (* FGCBMultiPassive )( int, int, int );
+typedef void (* FGCBInitContext)();
+typedef void (* FGCBPause)();
+typedef void (* FGCBResume)();
+
/* The global callbacks type definitions */
typedef void (* FGCBIdle )( void );
typedef void (* FGCBTimer )( int );
int AuxiliaryBufferNumber; /* Number of auxiliary buffers */
int SampleNumber; /* Number of samples per pixel */
+ GLboolean SkipStaleMotion; /* skip stale motion events */
+
int MajorVersion; /* Major OpenGL context version */
int MinorVersion; /* Minor OpenGL context version */
int ContextFlags; /* OpenGL context flags */
int ContextProfile; /* OpenGL context profile */
+ int HasOpenGL20; /* fgInitGL2 could find all OpenGL 2.0 functions */
FGError ErrorFunc; /* User defined error handler */
FGWarning WarningFunc; /* User defined warning handler */
};
SFG_PlatformContext pContext; /* The window's FBConfig (X11) or device context (Windows) */
int DoubleBuffered; /* Treat the window as double-buffered */
+ GLint attribute_v_coord;
+ GLint attribute_v_normal;
};
GLboolean NeedToResize; /* Do we need to resize the window? */
GLboolean IsFullscreen; /* is the window fullscreen? */
+
+ GLboolean NeedToInitContext; /* are OpenGL context/resources loaded? */
};
CB_MultiMotion,
CB_MultiPassive,
+ /* Mobile platforms LifeCycle */
+ CB_InitContext,
+ CB_Pause,
+ CB_Resume,
+
/* Presently ignored */
CB_Select,
CB_OverlayDisplay,
GLboolean found; /* Used to terminate search */
void* data; /* Custom data pointer */
};
-typedef void (* FGCBenumerator )( SFG_Window *, SFG_Enumerator * );
+typedef void (* FGCBWindowEnumerator )( SFG_Window *, SFG_Enumerator * );
+typedef void (* FGCBMenuEnumerator )( SFG_Menu *, SFG_Enumerator * );
/* The bitmap font structure */
typedef struct tagSFG_Font SFG_Font;
* and userData is the a custom user-supplied pointer. Functions
* are defined and exported from freeglut_structure.c file.
*/
-void fgEnumWindows( FGCBenumerator enumCallback, SFG_Enumerator* enumerator );
-void fgEnumSubWindows( SFG_Window* window, FGCBenumerator enumCallback,
+void fgEnumWindows( FGCBWindowEnumerator enumCallback, SFG_Enumerator* enumerator );
+void fgEnumSubWindows( SFG_Window* window, FGCBWindowEnumerator enumCallback,
SFG_Enumerator* enumerator );
/*
SFG_Menu* fgMenuByID( int menuID );
/*
+ * Returns active menu, if any. Assumption: only one menu active throughout application at any one time.
+ * This is easier than fgWindowByXXX as all menus are placed in one doubly linked list...
+ */
+SFG_Menu* fgGetActiveMenu( );
+
+/*
* The menu activation and deactivation the code. This is the meat
* of the menu user interface handling code...
*/