Added a new state variable "Initalized".
[freeglut] / src / freeglut_structure.c
index 21b6cfb..8a19aff 100644 (file)
@@ -54,9 +54,12 @@ SFG_Structure fgStructure = { { NULL, NULL },  /* The list of windows       */
 
 void fgClearCallBacks( SFG_Window *window )
 {
-    int i;
-    for( i = 0; i < TOTAL_CALLBACKS; ++i )
-        window->CallBacks[ i ] = NULL;
+    if( window )
+    {
+        int i;
+        for( i = 0; i < TOTAL_CALLBACKS; ++i )
+            window->CallBacks[ i ] = NULL;
+    }
 }
 
 /*
@@ -80,7 +83,7 @@ SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title,
      * If the freeglut internals haven't been initialized yet,
      * do it now. Hack's idea courtesy of Chris Purnell...
      */
-    if( !fgState.Time.Set )
+    if( !fgState.Initalized )
         glutInit( &fakeArgc, NULL );
 
     /*
@@ -133,7 +136,7 @@ SFG_Menu* fgCreateMenu( FGCBMenu menuCallback )
      * If the freeglut internals haven't been initialized yet,
      * do it now. Hack's idea courtesy of Chris Purnell...
      */
-    if( !fgState.Time.Set )
+    if( !fgState.Initalized )
         glutInit( &fakeArgc, NULL );
 
     menu->ParentWindow = fgStructure.Window;
@@ -314,12 +317,12 @@ void fgDestroyWindow( SFG_Window* window, GLboolean needToClose )
         window->Menu[menu_index]->ParentWindow = NULL ;
     }
 
+    fgClearCallBacks( window );
     if( needToClose == TRUE )
         fgCloseWindow( window );
     free( window );
     if( fgStructure.Window == window )
         fgStructure.Window = NULL;
-    fgClearCallBacks( window );
 }
 
 /*