X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffg_main.c;h=330a7bcaaeccb8ddca9cfe44bacd1b9b9bc2d9d0;hb=2c138d649ed28a1e9184ddfcd8c2f2d89300b824;hp=71902729704b4f4ccf4bd1d05f2e5754967d9acf;hpb=a857e58176328995447a10addf3ea74f54fe63ae;p=freeglut diff --git a/src/fg_main.c b/src/fg_main.c index 7190272..330a7bc 100644 --- a/src/fg_main.c +++ b/src/fg_main.c @@ -1,5 +1,5 @@ /* - * freeglut_main.c + * fg_main.c * * The windows message processing methods. * @@ -27,17 +27,8 @@ #include #include "fg_internal.h" -#ifdef HAVE_ERRNO_H -# include -#endif +#include #include -#ifdef HAVE_VFPRINTF -# define VFPRINTF(s,f,a) vfprintf((s),(f),(a)) -#elif defined(HAVE__DOPRNT) -# define VFPRINTF(s,f,a) _doprnt((f),(a),(s)) -#else -# define VFPRINTF(s,f,a) -#endif /* * Try to get the maximum value allowed for ints, falling back to the minimum @@ -54,7 +45,7 @@ # define MIN(a,b) (((a)<(b)) ? (a) : (b)) #endif -extern void fgPlatformProcessWork ( SFG_Window *window ); +extern void fgProcessWork ( SFG_Window *window ); extern fg_time_t fgPlatformSystemTime ( void ); extern void fgPlatformSleepForEvents( fg_time_t msec ); extern void fgPlatformProcessSingleEvent ( void ); @@ -163,7 +154,7 @@ static void fghcbProcessWork( SFG_Window *window, SFG_Enumerator *enumerator ) { if( window->State.WorkMask ) - fgPlatformProcessWork ( window ); + fgProcessWork ( window ); fgEnumSubWindows( window, fghcbProcessWork, enumerator ); } @@ -289,7 +280,7 @@ void fgError( const char *fmt, ... ) fprintf( stderr, "freeglut "); if( fgState.ProgramName ) fprintf( stderr, "(%s): ", fgState.ProgramName ); - VFPRINTF( stderr, fmt, ap ); + vfprintf( stderr, fmt, ap ); fprintf( stderr, "\n" ); va_end( ap ); @@ -322,7 +313,7 @@ void fgWarning( const char *fmt, ... ) fprintf( stderr, "freeglut "); if( fgState.ProgramName ) fprintf( stderr, "(%s): ", fgState.ProgramName ); - VFPRINTF( stderr, fmt, ap ); + vfprintf( stderr, fmt, ap ); fprintf( stderr, "\n" ); va_end( ap ); @@ -393,7 +384,7 @@ static void fghSleepForEvents( void ) /* Step through the work list */ -void fgPlatformProcessWork(SFG_Window *window) +void fgProcessWork(SFG_Window *window) { unsigned int workMask = window->State.WorkMask; /* Now clear it so that any callback generated by the actions below can set work again */ @@ -465,6 +456,13 @@ void FGAPIENTRY glutMainLoopEvent( void ) /* Perform work on the window (position, reshape, display, etc) */ fghProcessWork( ); + /* Check OpenGL error state if requested. + * Don't call if no more open windows (can happen if user closes window from + * title bar), would lead to infinite error loop in glutReportErrors + */ + if (fgState.GLDebugSwitch && fgStructure.CurrentWindow) + glutReportErrors( ); + fgCloseWindows( ); }