X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffg_main.c;h=45f13f5db28eb6c3187b40641605b3d72e12a167;hb=831749819dcdc1ea884c18607c2b447bbf5fca72;hp=330a7bcaaeccb8ddca9cfe44bacd1b9b9bc2d9d0;hpb=34617b0203c6a98039588e84b801aec805963610;p=freeglut diff --git a/src/fg_main.c b/src/fg_main.c index 330a7bc..45f13f5 100644 --- a/src/fg_main.c +++ b/src/fg_main.c @@ -154,7 +154,7 @@ static void fghcbProcessWork( SFG_Window *window, SFG_Enumerator *enumerator ) { if( window->State.WorkMask ) - fgProcessWork ( window ); + fgProcessWork ( window ); fgEnumSubWindows( window, fghcbProcessWork, enumerator ); } @@ -233,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 ); } } @@ -269,7 +269,7 @@ void fgError( const char *fmt, ... ) va_start( ap, fmt ); /* call user set error handler here */ - fgState.ErrorFunc(fmt, ap); + fgState.ErrorFunc(fmt, ap, fgState.ErrorFuncData); va_end( ap ); @@ -302,7 +302,7 @@ void fgWarning( const char *fmt, ... ) va_start( ap, fmt ); /* call user set warning handler here */ - fgState.WarningFunc(fmt, ap); + fgState.WarningFunc(fmt, ap, fgState.WarningFuncData); va_end( ap ); @@ -376,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 ); } @@ -479,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 @@ -507,7 +509,7 @@ void FGAPIENTRY glutMainLoop( void ) fgStructure.CurrentWindow->IsMenu ) /* fail safe */ fgSetWindow( window ); - fgState.IdleCallback( ); + fgState.IdleCallback( fgState.IdleCallbackData ); } else fghSleepForEvents( );