X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_structure.c;h=1d064b68bd96461d28780bb281194a31de5bc52d;hb=1b9a554a58e5595d9512540df60a3d681dc784a9;hp=d3f9f05dbb12828371b599350a1b20847009f512;hpb=1ac074e1a4507135f6ddf628b8531356cacbfb0e;p=freeglut diff --git a/src/freeglut_structure.c b/src/freeglut_structure.c index d3f9f05..1d064b6 100644 --- a/src/freeglut_structure.c +++ b/src/freeglut_structure.c @@ -65,12 +65,16 @@ static void fghClearCallBacks( SFG_Window *window ) * If parent is set to NULL, the window created will be a topmost one. */ SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title, - int x, int y, int w, int h, + GLboolean positionUse, int x, int y, + GLboolean sizeUse, int w, int h, GLboolean gameMode, GLboolean isMenu ) { /* Have the window object created */ SFG_Window *window = (SFG_Window *)calloc( sizeof(SFG_Window), 1 ); +#if TARGET_HOST_UNIX_X11 + window->Window.FBConfig = NULL; +#endif fghClearCallBacks( window ); /* Initialize the object properties */ @@ -98,7 +102,7 @@ SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title, * Open the window now. The fgOpenWindow() function is system * dependant, and resides in freeglut_window.c. Uses fgState. */ - fgOpenWindow( window, title, x, y, w, h, gameMode, + fgOpenWindow( window, title, positionUse, x, y, sizeUse, w, h, gameMode, (GLboolean)(parent ? GL_TRUE : GL_FALSE) ); return window; @@ -119,7 +123,8 @@ SFG_Menu* fgCreateMenu( FGCBMenu menuCallback ) /* Create a window for the menu to reside in. */ - fgCreateWindow( NULL, "freeglut menu", x, y, w, h, GL_FALSE, GL_TRUE ); + fgCreateWindow( NULL, "freeglut menu", GL_TRUE, x, y, GL_TRUE, w, h, + GL_FALSE, GL_TRUE ); menu->Window = fgStructure.CurrentWindow; glutDisplayFunc( fgDisplayMenu ); @@ -165,7 +170,7 @@ void fgAddToWindowDestroyList( SFG_Window* window ) * to ensure that they are no longer called after this point. */ { - FGCBDestroy destroy = FETCH_WCB( *window, Destroy ); + FGCBDestroy destroy = (FGCBDestroy)FETCH_WCB( *window, Destroy ); fghClearCallBacks( window ); SET_WCB( *window, Destroy, destroy ); } @@ -214,6 +219,12 @@ void fgDestroyWindow( SFG_Window* window ) fghClearCallBacks( window ); fgCloseWindow( window ); +#if TARGET_HOST_UNIX_X11 + if (window->Window.FBConfig != NULL) + { + XFree( window->Window.FBConfig ); + } +#endif free( window ); if( fgStructure.CurrentWindow == window ) fgStructure.CurrentWindow = NULL; @@ -346,7 +357,7 @@ void fgCreateStructure( void ) fgStructure.CurrentWindow = NULL; fgStructure.CurrentMenu = NULL; fgStructure.MenuContext = NULL; - fgStructure.GameMode = NULL; + fgStructure.GameModeWindow = NULL; fgStructure.WindowID = 0; fgStructure.MenuID = 0; }