#include <GL/freeglut.h>
#include "fg_internal.h"
-#ifdef HAVE_ERRNO_H
-# include <errno.h>
-#endif
+#include <errno.h>
#include <stdarg.h>
/*
SFG_Enumerator *enumerator )
{
if( window->State.WorkMask )
- fgProcessWork ( window );
+ fgProcessWork ( window );
fgEnumSubWindows( window, fghcbProcessWork, enumerator );
}
fgListRemove( &fgState.Timers, &timer->Node );
fgListAppend( &fgState.FreeTimers, &timer->Node );
- timer->Callback( timer->ID );
+ timer->Callback( timer->ID, timer->CallbackData );
}
}
va_start( ap, fmt );
/* call user set error handler here */
- fgState.ErrorFunc(fmt, ap);
+ fgState.ErrorFunc(fmt, ap, fgState.ErrorFuncData);
va_end( ap );
va_start( ap, fmt );
/* call user set warning handler here */
- fgState.WarningFunc(fmt, ap);
+ fgState.WarningFunc(fmt, ap, fgState.WarningFuncData);
va_end( ap );
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 );
}
fgPlatformInitWork(window);
/* Call init context callback */
- INVOKE_WCB( *window, InitContext, ());
+ INVOKE_WCB( *window, InitContext, ( ) );
/* Lastly, check if we have a display callback, error out if not
* This is the right place to do it, as the redisplay will be
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
fgStructure.CurrentWindow->IsMenu )
/* fail safe */
fgSetWindow( window );
- fgState.IdleCallback( );
+ fgState.IdleCallback( fgState.IdleCallbackData );
}
else
fghSleepForEvents( );