Tidy nested if/else to suppress gcc -Wall -pedantic noise
[freeglut] / src / freeglut_init.c
index 13656fb..0289ddd 100644 (file)
@@ -76,6 +76,7 @@ SFG_State fgState = { { -1, -1, GL_FALSE },  /* Position */
                       { { 0, 0 }, GL_FALSE },
 #endif
                       { NULL, NULL },         /* Timers */
+                      { NULL, NULL },         /* FreeTimers */
                       NULL,                   /* IdleCallback */
                       0,                      /* ActiveMenus */
                       NULL,                   /* MenuStateCallback */
@@ -147,7 +148,7 @@ void fgInitialize( const char* displayName )
     ATOM atom;
 
     /*
-     * What we need to do is to initialize the fgDisplay global structure here...
+     * What we need to do is to initialize the fgDisplay global structure here.
      */
     fgDisplay.Instance = GetModuleHandle( NULL );
 
@@ -157,9 +158,14 @@ void fgInitialize( const char* displayName )
         ZeroMemory( &wc, sizeof(WNDCLASS) );
 
         /*
-         * Each of the windows should have its own device context...
+         * Each of the windows should have its own device context, and we
+         * want redraw events during Vertical and Horizontal Resizes by
+         * the user.
+         *
+         * XXX Old code had "| CS_DBCLCKS" commented out.  Plans for the
+         * XXX future?  Dead-end idea?
          */
-        wc.style          = CS_OWNDC /* | CS_DBLCLKS */;
+        wc.style          = CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
         wc.lpfnWndProc    = fgWindowProc;
         wc.cbClsExtra     = 0;
         wc.cbWndExtra     = 0;
@@ -230,9 +236,15 @@ void fgDeinitialize( void )
 
     fgDestroyStructure( );
 
-    while( (timer = ( SFG_Timer * )fgState.Timers.First) )
+    while( (timer = fgState.Timers.First) )
     {
-        fgListRemove ( &fgState.Timers, &timer->Node );
+        fgListRemove( &fgState.Timers, &timer->Node );
+        free( timer );
+    }
+
+    while( (timer = fgState.FreeTimers.First) )
+    {
+        fgListRemove( &fgState.FreeTimers, &timer->Node );
         free( timer );
     }
 
@@ -269,7 +281,9 @@ void fgDeinitialize( void )
 
     fgState.Time.Set = GL_FALSE;
 
-    fgState.Timers.First = fgState.Timers.Last = NULL;
+    fgListInit( &fgState.Timers );
+    fgListInit( &fgState.FreeTimers );
+
     fgState.IdleCallback = NULL;
     fgState.MenuStateCallback = ( FGCBMenuState )NULL;
     fgState.MenuStatusCallback = ( FGCBMenuStatus )NULL;
@@ -376,9 +390,9 @@ ReadInteger(char *string, char **NextString)
     }
     *NextString = string;
     if (Sign >= 0)
-        return (Result);
+        return Result;
     else
-        return (-Result);
+        return -Result;
 }
 
 static int XParseGeometry (
@@ -394,7 +408,8 @@ static int XParseGeometry (
     int tempX = 0, tempY = 0;
     char *nextCharacter;
 
-    if ( (string == NULL) || (*string == '\0')) return(mask);
+    if ( (string == NULL) || (*string == '\0'))
+      return mask;
     if (*string == '=')
         string++;  /* ignore possible '=' at beg of geometry spec */
 
@@ -402,7 +417,7 @@ static int XParseGeometry (
     if (*strind != '+' && *strind != '-' && *strind != 'x') {
         tempWidth = ReadInteger(strind, &nextCharacter);
         if (strind == nextCharacter) 
-            return (0);
+            return 0;
         strind = nextCharacter;
         mask |= WidthValue;
     }
@@ -411,7 +426,7 @@ static int XParseGeometry (
         strind++;
         tempHeight = ReadInteger(strind, &nextCharacter);
         if (strind == nextCharacter)
-            return (0);
+            return 0;
         strind = nextCharacter;
         mask |= HeightValue;
     }
@@ -421,7 +436,7 @@ static int XParseGeometry (
             strind++;
             tempX = -ReadInteger(strind, &nextCharacter);
             if (strind == nextCharacter)
-                return (0);
+                return 0;
             strind = nextCharacter;
             mask |= XNegative;
         }
@@ -430,7 +445,7 @@ static int XParseGeometry (
             strind++;
             tempX = ReadInteger(strind, &nextCharacter);
             if (strind == nextCharacter)
-                return(0);
+                return 0;
             strind = nextCharacter;
         }
         mask |= XValue;
@@ -439,7 +454,7 @@ static int XParseGeometry (
                 strind++;
                 tempY = -ReadInteger(strind, &nextCharacter);
                 if (strind == nextCharacter)
-                    return(0);
+                    return 0;
                 strind = nextCharacter;
                 mask |= YNegative;
             }
@@ -448,7 +463,7 @@ static int XParseGeometry (
                 strind++;
                 tempY = ReadInteger(strind, &nextCharacter);
                 if (strind == nextCharacter)
-                    return(0);
+                    return 0;
                 strind = nextCharacter;
             }
             mask |= YValue;
@@ -458,7 +473,7 @@ static int XParseGeometry (
     /* If strind isn't at the end of the string the it's an invalid
        geometry specification. */
 
-    if (*strind != '\0') return (0);
+    if (*strind != '\0') return 0;
 
     if (mask & XValue)
         *x = tempX;
@@ -468,7 +483,7 @@ static int XParseGeometry (
         *width = tempWidth;
     if (mask & HeightValue)
         *height = tempHeight;
-    return (mask);
+    return mask;
 }
 #endif
 
@@ -699,12 +714,12 @@ void FGAPIENTRY glutInitDisplayString( const char* displayMode )
      * delimited by blanks or tabs.
      */
     char *token ;
-    int len = strlen ( displayMode ) ;
-    char *buffer = (char *)malloc ( (len+1) * sizeof(char) ) ;
-    memcpy ( buffer, displayMode, len ) ;
-    buffer[len] = '\0' ;
+    int len = strlen ( displayMode );
+    char *buffer = (char *)malloc ( (len+1) * sizeof(char) );
+    memcpy ( buffer, displayMode, len );
+    buffer[len] = '\0';
 
-    token = strtok ( buffer, " \t" ) ;
+    token = strtok ( buffer, " \t" );
     while ( token )
     {
         /*
@@ -856,14 +871,14 @@ void FGAPIENTRY glutInitDisplayString( const char* displayMode )
 
         case 28 :  /* Unrecognized */
             printf ( "WARNING - Display string token not recognized:  %s\n",
-                     token ) ;
+                     token );
             break ;
         }
 
-        token = strtok ( NULL, " \t" ) ;
+        token = strtok ( NULL, " \t" );
     }
 
-    free ( buffer ) ;
+    free ( buffer );
 
     /*
      * We will make use of this value when creating a new OpenGL context...