Fixed a basic readability/style error in the code. (Two statements per
[freeglut] / src / freeglut_callbacks.c
index b741a0c..8c72805 100644 (file)
  */
 void FGAPIENTRY glutDisplayFunc( void (* callback)( void ) )
 {
+    if( !callback )
+       fgError ("Fatal error in program.  NULL display callback not "
+           "permitted in GLUT 3.0+ or freeglut 2.0.1+\n");
     SET_CALLBACK( Display );
+
+    /*
+     * Force a redisplay with the new callback
+     */
+    fgStructure.Window->State.Redisplay = TRUE;
+
 }
 
 /*
@@ -100,7 +109,10 @@ void FGAPIENTRY glutTimerFunc( unsigned int timeOut, void (* callback)( int ), i
     /*
      * Create a new freeglut timer hook structure
      */
-    timer = calloc( sizeof(SFG_Timer), 1 );
+    timer = (SFG_Timer *)calloc( sizeof(SFG_Timer), 1 );
+    if (!timer)
+       fgError ("Fatal error: "
+           "Memory allocation failure in glutTimerFunc()\n");
 
     /*
      * Remember the callback address and timer hook's ID
@@ -127,7 +139,8 @@ void FGAPIENTRY glutTimerFunc( unsigned int timeOut, void (* callback)( int ), i
  */
 static void fghVisibility( int status )
 {
-    freeglut_assert_ready; freeglut_return_if_fail( fgStructure.Window != NULL );
+    freeglut_assert_ready;
+    freeglut_return_if_fail( fgStructure.Window != NULL );
     freeglut_return_if_fail( fgStructure.Window->Callbacks.Visibility != NULL );
 
     if( status == GLUT_HIDDEN  || status == GLUT_FULLY_COVERED )