X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffg_main.c;h=6e9ff48899a3bbfda28a71a43d1ba17693abded9;hb=76bb5e2f2b60a3cb15fe7fa0142d80a89065cf30;hp=240e5f76296d5f85ded33e09d8694914fca11ff2;hpb=786cd90847d39adf72ca0bcaeb5307985c7b7850;p=freeglut diff --git a/src/fg_main.c b/src/fg_main.c index 240e5f7..6e9ff48 100644 --- a/src/fg_main.c +++ b/src/fg_main.c @@ -27,9 +27,7 @@ #include #include "fg_internal.h" -#ifdef HAVE_ERRNO_H -# include -#endif +#include #include /* @@ -156,7 +154,7 @@ static void fghcbProcessWork( SFG_Window *window, SFG_Enumerator *enumerator ) { if( window->State.WorkMask ) - fgProcessWork ( window ); + fgProcessWork ( window ); fgEnumSubWindows( window, fghcbProcessWork, enumerator ); } @@ -235,7 +233,7 @@ static void fghCheckTimers( void ) fgListRemove( &fgState.Timers, &timer->Node ); fgListAppend( &fgState.FreeTimers, &timer->Node ); - timer->Callback( timer->ID ); + timer->Callback( timer->ID, timer->CallbackData ); } } @@ -378,10 +376,10 @@ static void fghSleepForEvents( void ) msec = fghNextTimer( ); /* XXX Should use GLUT timers for joysticks... */ /* XXX Dumb; forces granularity to .01sec */ - if( fgState.NumActiveJoysticks>0 && ( msec > 10 ) ) + if( fgState.NumActiveJoysticks>0 && ( msec > 10 ) ) msec = 10; - fgPlatformSleepForEvents ( msec ); + fgPlatformSleepForEvents ( msec ); } @@ -481,14 +479,16 @@ void FGAPIENTRY glutMainLoop( void ) if (!fgStructure.Windows.First) fgError(" ERROR: glutMainLoop called with no windows created."); - fgPlatformMainLoopPreliminaryWork (); + fgPlatformMainLoopPreliminaryWork (); fgState.ExecState = GLUT_EXEC_STATE_RUNNING ; - while( fgState.ExecState == GLUT_EXEC_STATE_RUNNING ) + for(;;) { SFG_Window *window; glutMainLoopEvent( ); + if( fgState.ExecState != GLUT_EXEC_STATE_RUNNING ) + break; /* * Step through the list of windows, seeing if there are any * that are not menus @@ -509,7 +509,7 @@ void FGAPIENTRY glutMainLoop( void ) fgStructure.CurrentWindow->IsMenu ) /* fail safe */ fgSetWindow( window ); - fgState.IdleCallback( ); + fgState.IdleCallback( fgState.IdleCallbackData ); } else fghSleepForEvents( );