X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_callbacks.c;h=8c7280547910268db626b5caef0e5aa4b4ba1e2b;hb=3d059cdfbb1482fd92174664fbca0c29672f4db8;hp=b741a0c19a53e0db21c9f2a32f47bd72891b26ce;hpb=646676b8dbf8ab504ac8a275fe9a63a403a3190b;p=freeglut diff --git a/src/freeglut_callbacks.c b/src/freeglut_callbacks.c index b741a0c..8c72805 100644 --- a/src/freeglut_callbacks.c +++ b/src/freeglut_callbacks.c @@ -48,7 +48,16 @@ */ 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 )