X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffg_internal.h;h=129654a085ae33f3b8b315d685294788ce5b0301;hb=450b0d2bd03f4d7721fa2fe5f54f38d787accb06;hp=da0b44df15dc5472f058f5d8efa59ca79fc6d744;hpb=39c957d9929f0aba775c4a07a70b6124bc4b50e6;p=freeglut diff --git a/src/fg_internal.h b/src/fg_internal.h index da0b44d..129654a 100644 --- a/src/fg_internal.h +++ b/src/fg_internal.h @@ -42,7 +42,7 @@ || ( 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) @@ -166,7 +166,13 @@ 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 @@ -213,6 +219,10 @@ typedef void (* FGCBMultiButton )( int, int, int, int, int ); 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 ); @@ -361,8 +371,8 @@ struct tagSFG_Context 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; + GLint attribute_v_coord; + GLint attribute_v_normal; }; @@ -391,6 +401,8 @@ struct tagSFG_WindowState GLboolean NeedToResize; /* Do we need to resize the window? */ GLboolean IsFullscreen; /* is the window fullscreen? */ + + GLboolean NeedToInitContext; /* are OpenGL context/resources loaded? */ }; @@ -522,6 +534,11 @@ enum CB_MultiMotion, CB_MultiPassive, + /* Mobile platforms LifeCycle */ + CB_InitContext, + CB_Pause, + CB_Resume, + /* Presently ignored */ CB_Select, CB_OverlayDisplay, @@ -644,7 +661,8 @@ struct tagSFG_Enumerator 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; @@ -898,8 +916,8 @@ void fgSetCursor ( SFG_Window *window, int cursorID ); * 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 ); /* @@ -923,6 +941,12 @@ SFG_Window* fgWindowByID( int windowID ); 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... */