X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_internal.h;h=5da2140be4a6cc203c415d8175f17091975bebfd;hb=2e8c8e1910a0f5a18c6108174bad31f13af38165;hp=f74b71c2d7e33f6825fcf0f12257f618cdc7424c;hpb=6af9cb78643b6b461c8886cb1ec6f935c8107429;p=freeglut diff --git a/src/freeglut_internal.h b/src/freeglut_internal.h index f74b71c..5da2140 100644 --- a/src/freeglut_internal.h +++ b/src/freeglut_internal.h @@ -198,13 +198,15 @@ struct tagSFG_Time }; /* - * An enumeration containing the state of the GLUT execution: initializing, running, or stopping + * An enumeration containing the state of the GLUT execution: + * initializing, running, or stopping */ -typedef enum { - GLUT_EXEC_STATE_INIT, - GLUT_EXEC_STATE_RUNNING, - GLUT_EXEC_STATE_STOP -} fgExecutionState ; +typedef enum +{ + GLUT_EXEC_STATE_INIT, + GLUT_EXEC_STATE_RUNNING, + GLUT_EXEC_STATE_STOP +} fgExecutionState; /* * This structure holds different freeglut settings @@ -216,6 +218,8 @@ struct tagSFG_State SFG_XYUse Size; /* The default windows' size */ unsigned int DisplayMode; /* Display mode for new windows */ + GLboolean Initalized; /* Freeglut has been initalized */ + GLboolean ForceDirectContext; /* Force direct rendering? */ GLboolean TryDirectContext; /* What about giving a try to? */ @@ -226,6 +230,7 @@ struct tagSFG_State GLboolean XSyncSwitch; /* X11 sync protocol switch */ GLboolean IgnoreKeyRepeat; /* Whether to ignore key repeat. */ + int Modifiers; /* Current ALT/SHIFT/CTRL state */ GLuint FPSInterval; /* Interval between FPS printfs */ GLuint SwapCount; /* Count of glutSwapBuffer calls */ @@ -236,7 +241,6 @@ struct tagSFG_State FGCBIdle IdleCallback; /* The global idle callback */ - GLboolean BuildingAMenu; /* Are we presently making a menu */ int ActiveMenus; /* Num. of currently active menus */ FGCBMenuState MenuStateCallback; /* Menu callbacks are global */ FGCBMenuStatus MenuStatusCallback; @@ -339,7 +343,6 @@ struct tagSFG_WindowState GLboolean Visible; /* Is the window visible now */ int Cursor; /* The currently selected cursor */ - int Modifiers; /* The current ALT/SHIFT/CTRL state */ long JoystickPollRate; /* The joystick polling rate */ long JoystickLastPoll; /* When the last poll has happened */ @@ -363,8 +366,7 @@ struct tagSFG_WindowState * {Visibility} is the window-specific callback to fetch. * * The result is correctly type-cast to the callback function pointer - * type. (This is accomlished by abutting the callback name to a - * common prefix, using ANSI C token-pasting.) + * type. */ #define FETCH_WCB(window,cbname) \ ((FGCB ## cbname)((window).CallBacks[CB_ ## cbname])) @@ -389,13 +391,14 @@ struct tagSFG_WindowState * */ #define INVOKE_WCB(window,cbname,arg_list) \ +do \ { \ if( FETCH_WCB( window, cbname ) ) \ { \ fgSetWindow( &window ); \ FETCH_WCB( window, cbname ) arg_list; \ } \ -} +} while( 0 ) /* * The window callbacks the user can supply us with. Should be kept portable. @@ -527,12 +530,12 @@ struct tagSFG_Window /* * A linked list structure of windows */ -typedef struct tagSFG_WindowList SFG_WindowList ; +typedef struct tagSFG_WindowList SFG_WindowList; struct tagSFG_WindowList { - SFG_Window *window ; - GLboolean needToClose ; - SFG_WindowList *next ; + SFG_Window *window; + GLboolean needToClose; + SFG_WindowList *next; }; /* @@ -641,7 +644,7 @@ 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.Time.Set ); +#define freeglut_assert_ready assert( fgState.Initalized ); /* * Following definitions are somewhat similiar to GLib's, @@ -652,7 +655,7 @@ extern SFG_State fgState; return; #define freeglut_return_val_if_fail( expr, val ) \ if( !(expr) ) \ - return( val ); + return val; /* * A call to those macros assures us that there is a current @@ -701,15 +704,16 @@ GLboolean fgSetupPixelFormat( SFG_Window* window, GLboolean checkOnly, * Defined in freeglut_structure.c, freeglut_window.c. */ SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title, - int x, int y, int w, int h, GLboolean gameMode ); -void fgSetWindow ( SFG_Window *window ) ; + int x, int y, int w, int h, + GLboolean gameMode, GLboolean isMenu ); +void fgSetWindow ( SFG_Window *window ); void fgOpenWindow( SFG_Window* window, const char* title, int x, int y, int w, int h, GLboolean gameMode, - int isSubWindow ); + GLboolean isSubWindow ); void fgCloseWindow( SFG_Window* window ); void fgAddToWindowDestroyList ( SFG_Window* window, - GLboolean needToClose ) ; -void fgCloseWindows (); + GLboolean needToClose ); +void fgCloseWindows( ); void fgDestroyWindow( SFG_Window* window, GLboolean needToClose ); void fgClearCallBacks( SFG_Window *window );