cleaned up a bunch of warnings
[freeglut] / progs / demos / CallbackMaker / CallbackMaker.c
index ff19b91..e280148 100644 (file)
@@ -8,6 +8,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
+#include <string.h>
 
 static int sequence_number = 0 ;
 
@@ -25,6 +26,7 @@ int windows[CALLBACKMAKER_N_WINDOWS] = {0};
 CALLBACK_2V(reshape,width,height);
 CALLBACK_2V(position,top,left);
 CALLBACK_1V(visibility,vis);
+CALLBACK_1V(windowStatus,state);
 CALLBACK_4V(key,key,x,y,mod);
 CALLBACK_4V(keyup,key,x,y,mod);
 CALLBACK_4V(special,key,x,y,mod);
@@ -79,15 +81,19 @@ Mod2Text(int mods, char *text)
     if (mods&GLUT_ACTIVE_CTRL)
         strcat(text,"CTRL");
     if (mods&GLUT_ACTIVE_SHIFT)
+    {
         if (text[0])
             strcat(text,"+SHIFT");
         else
             strcat(text,"SHIFT");
+    }
     if (mods&GLUT_ACTIVE_ALT)
+    {
         if (text[0])
             strcat(text,"+ALT");
         else
             strcat(text,"ALT");
+    }
 
     if (!text[0])
         strcat(text,"none");
@@ -122,6 +128,11 @@ Display(void)
     bitmapPrintf ( "Visibility %d:  %d\n", visibility_seq[winIdx], visibility_vis[winIdx] );
   }
 
+  if ( windowStatus_called[winIdx] )
+  {
+    bitmapPrintf ( "WindowStatus %d:  %d\n", windowStatus_seq[winIdx], windowStatus_state[winIdx] );
+  }
+
   if ( reshape_called[winIdx] )
   {
     bitmapPrintf ( "Reshape %d:  %d %d\n", reshape_seq[winIdx], reshape_width[winIdx], reshape_height[winIdx] );
@@ -207,7 +218,7 @@ Display(void)
 static void
 Warning(const char *fmt, va_list ap)
 {
-    printf("%6d Warning callback:\n");
+    printf("%6d Warning callback:\n",++sequence_number);
 
     /* print warning message */
     vprintf(fmt, ap);
@@ -217,10 +228,11 @@ static void
 Error(const char *fmt, va_list ap)
 {
     char dummy_string[STRING_LENGTH];
-    printf("%6d Error callback:\n");
+    printf("%6d Error callback:\n",++sequence_number);
 
     /* print warning message */
     vprintf(fmt, ap);
+    printf("\n");
 
     /* terminate program, after pause for input so user can see */
     printf ( "Please enter something to exit: " );
@@ -233,19 +245,6 @@ Error(const char *fmt, va_list ap)
 }
 
 static void 
-Visibility(int vis)
-{
-  int winIdx;
-  int window = getWindowAndIdx(&winIdx);
-  printf ( "%6d Window %d Visibility Callback:  %d\n",
-            ++sequence_number, window, vis ) ;
-  visibility_called[winIdx] = 1 ;
-  visibility_vis[winIdx] = vis ;
-  visibility_seq[winIdx] = sequence_number ;
-  glutPostRedisplay () ;
-}
-
-static void 
 Reshape(int width, int height)
 {
   int winIdx;
@@ -449,11 +448,28 @@ OverlayDisplay(void)
 }
 
 static void 
+Visibility(int vis)
+{
+  int winIdx;
+  int window = getWindowAndIdx(&winIdx);
+  printf ( "%6d Window %d Visibility Callback:  %d\n",
+            ++sequence_number, window, vis ) ;
+  visibility_called[winIdx] = 1 ;
+  visibility_vis[winIdx] = vis ;
+  visibility_seq[winIdx] = sequence_number ;
+  glutPostRedisplay () ;
+}
+
+static void 
 WindowStatus(int state)
 {
-  int window = getWindowAndIdx(NULL);
+  int winIdx;
+  int window = getWindowAndIdx(&winIdx);
   printf ( "%6d Window %d WindowStatus Callback:  %d\n",
             ++sequence_number, window, state ) ;
+  windowStatus_called[winIdx] = 1 ;
+  windowStatus_state[winIdx] = state ;
+  windowStatus_seq[winIdx] = sequence_number ;
   glutPostRedisplay () ;
 }
 
@@ -576,7 +592,6 @@ static void SetWindowCallbacks( int first )
     glutPositionFunc( Position );
     glutKeyboardFunc( Key );
     glutSpecialFunc( Special );
-    glutVisibilityFunc( Visibility );
     glutKeyboardUpFunc( KeyUp );
     glutSpecialUpFunc( SpecialUp );
     if (first)
@@ -588,7 +603,6 @@ static void SetWindowCallbacks( int first )
     glutEntryFunc ( Entry ) ;
     glutCloseFunc ( Close ) ;
     glutOverlayDisplayFunc ( OverlayDisplay ) ;
-    glutWindowStatusFunc ( WindowStatus ) ;
     glutSpaceballMotionFunc ( SpaceMotion ) ;
     glutSpaceballRotateFunc ( SpaceRotation ) ;
     glutSpaceballButtonFunc ( SpaceButton ) ;
@@ -596,6 +610,11 @@ static void SetWindowCallbacks( int first )
     glutDialsFunc ( Dials ) ;
     glutTabletMotionFunc ( TabletMotion ) ;
     glutTabletButtonFunc ( TabletButton ) ;
+    /* glutVisibilityFunc is deprecated in favor of glutWindowStatusFunc, which provides more detail.
+     * Setting one of these overwrites the other (see docs).
+     */
+    glutVisibilityFunc ( Visibility );  /* This will thus never be called, as glutWindowStatusFunc is set afterwards */
+    glutWindowStatusFunc ( WindowStatus ) ;
 }
 
 int 
@@ -637,6 +656,7 @@ main(int argc, char *argv[])
   /* callbacks, settings and menus for this window */
   SetWindowCallbacks( 1 );
   glutIgnoreKeyRepeat(GL_TRUE);
+  glutSetIconTitle("Icon Test - Callback Demo");
 
   subMenuA = glutCreateMenu( MenuCallback );
   glutAddMenuEntry( "Sub menu A1 (01)", 11 );
@@ -702,6 +722,8 @@ main(int argc, char *argv[])
 
   /* callbacks and menus for this window */
   SetWindowCallbacks( 0 );
+  glutSetCursor(GLUT_CURSOR_INHERIT);   /* Inherit cursor look from parent (this is default on window creation) - comment the below to see in action */
+  glutSetCursor(GLUT_CURSOR_CYCLE);
 
 
   printf ( "Please enter something to continue: " );