X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_internal.h;h=177b200533d6769480db1ed63c82335fcc19b16f;hb=e914664550e34587f4b10d3fe52c61fbe6d61771;hp=9105338166ac082665375ace15c522e95d0436f3;hpb=8f96cc73e71a8e4f2acb579c29132c16358191f0;p=freeglut diff --git a/src/freeglut_internal.h b/src/freeglut_internal.h index 9105338..177b200 100644 --- a/src/freeglut_internal.h +++ b/src/freeglut_internal.h @@ -31,7 +31,7 @@ /* XXX Update these for each release! */ #define VERSION_MAJOR 2 #define VERSION_MINOR 0 -#define VERSION_PATCH 0 +#define VERSION_PATCH 2 /* * Freeglut is meant to be available under all Unix/X11 and Win32 platforms. @@ -239,6 +239,7 @@ struct tagSFG_State SFG_Time Time; /* Time that glutInit was called */ SFG_List Timers; /* The freeglut timer hooks */ + SFG_List FreeTimers; /* The unused timer hooks */ FGCBIdle IdleCallback; /* The global idle callback */ @@ -310,22 +311,35 @@ struct tagSFG_Timer }; /* + * Make "freeglut" window handle and context types so that we don't need so + * much conditionally-compiled code later in the library. + */ +#if TARGET_HOST_UNIX_X11 + +typedef Window SFG_WindowHandleType ; +typedef GLXContext SFG_WindowContextType ; + +#elif TARGET_HOST_WIN32 + +typedef HWND SFG_WindowHandleType ; +typedef HGLRC SFG_WindowContextType ; + +#endif + +/* * A window and its OpenGL context. The contents of this structure * are highly dependant on the target operating system we aim at... */ typedef struct tagSFG_Context SFG_Context; struct tagSFG_Context { + SFG_WindowHandleType Handle; /* The window's handle */ + SFG_WindowContextType Context; /* The window's OpenGL/WGL context */ + #if TARGET_HOST_UNIX_X11 - Window Handle; /* The window's handle */ - GLXContext Context; /* The OpenGL context */ XVisualInfo* VisualInfo; /* The window's visual information */ - #elif TARGET_HOST_WIN32 - HWND Handle; /* The window's handle */ HDC Device; /* The window's device context */ - HGLRC Context; /* The window's WGL context */ - #endif int DoubleBuffered; /* Treat the window as double-buffered */ @@ -339,6 +353,8 @@ struct tagSFG_WindowState { int Width; /* Window's width in pixels */ int Height; /* The same about the height */ + int OldWidth; /* Window width from before a resize */ + int OldHeight; /* " height " " " " */ GLboolean Redisplay; /* Do we have to redisplay? */ GLboolean Visible; /* Is the window visible now */ @@ -456,12 +472,10 @@ typedef struct tagSFG_MenuContext SFG_MenuContext; struct tagSFG_MenuContext { #if TARGET_HOST_UNIX_X11 - GLXContext Context; /* The menu OpenGL context */ XVisualInfo* VisualInfo; /* The window's visual information */ -#elif TARGET_HOST_WIN32 - HGLRC Context; /* The menu window's WGL context */ #endif + SFG_WindowContextType Context; /* The menu window's WGL context */ }; /* @@ -533,7 +547,6 @@ typedef struct tagSFG_WindowList SFG_WindowList ; struct tagSFG_WindowList { SFG_Window *window ; - GLboolean needToClose ; SFG_WindowList *next ; }; @@ -705,15 +718,14 @@ GLboolean fgSetupPixelFormat( SFG_Window* window, GLboolean checkOnly, SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title, int x, int y, int w, int h, GLboolean gameMode, GLboolean isMenu ); -void fgSetWindow ( SFG_Window *window ) ; +void fgSetWindow ( SFG_Window *window ); void fgOpenWindow( SFG_Window* window, const char* title, int x, int y, int w, int h, GLboolean gameMode, GLboolean isSubWindow ); void fgCloseWindow( SFG_Window* window ); -void fgAddToWindowDestroyList ( SFG_Window* window, - GLboolean needToClose ) ; +void fgAddToWindowDestroyList ( SFG_Window* window ); void fgCloseWindows (); -void fgDestroyWindow( SFG_Window* window, GLboolean needToClose ); +void fgDestroyWindow( SFG_Window* window ); void fgClearCallBacks( SFG_Window *window ); /* @@ -750,11 +762,7 @@ void fgEnumSubWindows( SFG_Window* window, FGCBenumerator enumCallback, * first window in the queue matching the specified window handle. * The function is defined in freeglut_structure.c file. */ -#if TARGET_HOST_UNIX_X11 - SFG_Window* fgWindowByHandle( Window hWindow ); -#elif TARGET_HOST_WIN32 - SFG_Window* fgWindowByHandle( HWND hWindow ); -#endif +SFG_Window* fgWindowByHandle( SFG_WindowHandleType hWindow ); /* * This function is similiar to the previous one, except it is @@ -764,7 +772,7 @@ void fgEnumSubWindows( SFG_Window* window, FGCBenumerator enumCallback, SFG_Window* fgWindowByID( int windowID ); /* - * Looks up a menu given its ID. This is easier that fgWindowByXXX + * Looks up a menu given its ID. This is easier than fgWindowByXXX * as all menus are placed in a single doubly linked list... */ SFG_Menu* fgMenuByID( int menuID ); @@ -804,6 +812,7 @@ void fgListInit(SFG_List *list); void fgListAppend(SFG_List *list, SFG_Node *node); void fgListRemove(SFG_List *list, SFG_Node *node); int fgListLength(SFG_List *list); +void fgListInsert(SFG_List *list, SFG_Node *next, SFG_Node *node); /* * Error Messages functions