Fixing the build after Diederick Niehorster's full screen fixes: they are only valid...
[freeglut] / src / freeglut_structure.c
index 03c1a8f..c5a2d73 100644 (file)
@@ -65,17 +65,23 @@ 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 */
     window->ID = ++fgStructure.WindowID;
+#if TARGET_HOST_POSIX_X11
     window->State.OldHeight = window->State.OldWidth = -1;
+#endif
 
     fgListInit( &window->Children );
     if( parent )
@@ -93,12 +99,13 @@ SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title,
 
     window->State.IgnoreKeyRepeat = GL_FALSE;
     window->State.KeyRepeating    = GL_FALSE;
+    window->State.IsFullscreen    = GL_FALSE;
 
     /*
      * 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;
@@ -109,7 +116,7 @@ SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title,
  */
 SFG_Menu* fgCreateMenu( FGCBMenu menuCallback )
 {
-    int x = 100, y = 100, w = 100, h = 100;
+    int x = 100, y = 100, w = 1, h = 1;
     SFG_Window *current_window = fgStructure.CurrentWindow;
 
     /* Have the menu object created */
@@ -119,7 +126,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 +173,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 );
     }
@@ -236,7 +244,7 @@ static void fghRemoveMenuFromWindow( SFG_Window* window, SFG_Menu* menu )
      * Check if the menu is attached to the current window,
      * if so, have it detached (by overwriting with a NULL):
      */
-    for( i = 0; i < 3; i++ )
+    for( i = 0; i < FREEGLUT_MAX_MENUS; i++ )
         if( window->Menu[ i ] == menu )
             window->Menu[ i ] = NULL;
 
@@ -342,6 +350,13 @@ void fgCreateStructure( void )
     fgListInit(&fgStructure.Windows);
     fgListInit(&fgStructure.Menus);
     fgListInit(&fgStructure.WindowsToDestroy);
+
+    fgStructure.CurrentWindow = NULL;
+    fgStructure.CurrentMenu = NULL;
+    fgStructure.MenuContext = NULL;
+    fgStructure.GameModeWindow = NULL;
+    fgStructure.WindowID = 0;
+    fgStructure.MenuID = 0;
 }
 
 /*