John reported, and fixed, a problem that recent changes caused for
[freeglut] / src / freeglut_structure.c
index 3e55bfd..55ce297 100644 (file)
@@ -84,7 +84,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.Initalized )
+    if( !fgState.Initialised )
         glutInit( &fakeArgc, NULL );
 
     /*
@@ -93,7 +93,7 @@ SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title,
     window->ID = ++fgStructure.WindowID;
 
     fgListInit( &window->Children );
-    if( parent != NULL )
+    if( parent )
     {
         fgListAppend( &parent->Children, &window->Node );
         window->Parent = parent;
@@ -105,7 +105,6 @@ SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title,
      * Set the default mouse cursor and reset the modifiers value
      */
     window->State.Cursor    = GLUT_CURSOR_INHERIT;
-    window->State.Modifiers = 0xffffffff;
 
     window->IsMenu = isMenu;
 
@@ -137,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.Initalized )
+    if( !fgState.Initialised )
         glutInit( &fakeArgc, NULL );
 
     menu->ParentWindow = fgStructure.Window;
@@ -213,23 +212,6 @@ void fgAddToWindowDestroyList( SFG_Window* window, GLboolean needToClose )
         FETCH_WCB( *window, Destroy ) = destroy;
     }
     
-
-    /*
-     * If the destroyed window has the highest window ID number, decrement
-     * the window ID number.
-     *
-     * XXX Do we REALLY want to *ever* recycle window IDs?  Integers are
-     * XXX plentiful, and clients may rely upon the implied promise in
-     * XXX the GLUT docs to not recycle these.  (I can't remember if it
-     * XXX is explicit.)
-     *
-     * XXX If we *do* want to do this, we should actually recompute the
-     * XXX highest window-ID; the new highest may not in fact be one less
-     * XXX than what we have just deleted.
-     */
-    if ( window->ID == fgStructure.WindowID )
-        fgStructure.WindowID--;
-
     /*
      * Check the execution state.  If this has been called from
      * "glutDestroyWindow", a statement in that function will reset the
@@ -283,16 +265,10 @@ void fgDestroyWindow( SFG_Window* window, GLboolean needToClose )
     while( subWindow = ( SFG_Window * )window->Children.First )
         fgDestroyWindow( subWindow, needToClose );
 
-    /*
-     * XXX Since INVOKE_WCB() tests the function pointer, why not make
-     * XXX this unconditional?  Overhead is close to nil, and it would
-     * XXX clarify the code by omitting a conditional test.
-     */
-    if( FETCH_WCB( *window, Destroy ) )
     {
         SFG_Window *activeWindow = fgStructure.Window ;
         INVOKE_WCB( *window, Destroy, ( ) );
-        fgSetWindow ( activeWindow ) ;
+        fgSetWindow ( activeWindow );
     }
 
     if( window->Parent )
@@ -305,7 +281,7 @@ void fgDestroyWindow( SFG_Window* window, GLboolean needToClose )
 
     for ( menu_index = 0; menu_index < 3; menu_index ++ )
     {
-      if ( window->Menu[menu_index] != NULL )
+      if ( window->Menu[menu_index] )
         window->Menu[menu_index]->ParentWindow = NULL ;
     }
 
@@ -519,16 +495,10 @@ static void fghcbWindowByHandle( SFG_Window *window,
     if ( enumerator->found )
         return;
 
-#if TARGET_HOST_UNIX_X11
-    #define WBHANDLE (Window)
-#elif TARGET_HOST_WIN32
-    #define WBHANDLE (HWND)
-#endif
-
     /*
      * Check the window's handle. Hope this works. Looks ugly. That's for sure.
      */
-    if( window->Window.Handle == WBHANDLE (enumerator->data) )
+    if( window->Window.Handle == (SFG_WindowHandleType) (enumerator->data) )
     {
         enumerator->found = GL_TRUE;
         enumerator->data = window;
@@ -540,8 +510,6 @@ static void fghcbWindowByHandle( SFG_Window *window,
      * Otherwise, check this window's children
      */
     fgEnumSubWindows( window, fghcbWindowByHandle, enumerator );
-
-#undef WBHANDLE
 }
 
 /*
@@ -549,12 +517,7 @@ static void fghcbWindowByHandle( SFG_Window *window,
  * first window in the queue matching the specified window handle.
  * The function is defined in freeglut_structure.c file.
  */
-SFG_Window* fgWindowByHandle
-#if TARGET_HOST_UNIX_X11
-( Window hWindow )
-#elif TARGET_HOST_WIN32
-( HWND hWindow )
-#endif
+SFG_Window* fgWindowByHandle ( SFG_WindowHandleType hWindow )
 {
     SFG_Enumerator enumerator;
 
@@ -652,7 +615,7 @@ void fgListAppend(SFG_List *list, SFG_Node *node)
 {
     SFG_Node *ln;
 
-    if ( (ln = (SFG_Node *)list->Last) != NULL )
+    if ( ln = (SFG_Node *)list->Last )
     {
         ln->Next = node;
         node->Prev = ln;
@@ -675,9 +638,9 @@ void fgListRemove(SFG_List *list, SFG_Node *node)
         ln->Prev = node->Prev;
     if( ln = (SFG_Node *)node->Prev )
         ln->Next = node->Next;
-    if( ( ln = (SFG_Node *)list->First ) == node )
+    if( (ln = (SFG_Node *)list->First) == node )
         list->First = node->Next;
-    if( ( ln = (SFG_Node *)list->Last ) == node )
+    if( (ln = (SFG_Node *)list->Last) == node )
         list->Last = node->Prev;
 }