In glutMainLoop, the checking of ExecState, and wether it's equal to

GLUT_EXEC_STATE_RUNNING should not have been at the top of the loop, but rather
right after glutMainLoopEvent returns, after it processes a single event. As it
was, we would be sleeping, waiting for further events even if the user just
called glutLeaveMainLoop (which sets ExecState to GLUT_EXEC_STATE_STOP).

Also fixed a couple cases if inconsistent use of tabs/spaces for indentation
which was causing gcc to emit bogus warnings about misleading indentation
around braceless ifs.



git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1803 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
jtsiomb 2017-05-25 06:34:57 +00:00
parent f9acc79690
commit d860b2e225
2 changed files with 8 additions and 6 deletions

View File

@ -324,7 +324,7 @@ static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes )
if( joy->error ) if( joy->error )
return; return;
fgPlatformJoystickRawRead ( joy, buttons, axes ); fgPlatformJoystickRawRead ( joy, buttons, axes );
} }
/* /*

View File

@ -154,7 +154,7 @@ static void fghcbProcessWork( SFG_Window *window,
SFG_Enumerator *enumerator ) SFG_Enumerator *enumerator )
{ {
if( window->State.WorkMask ) if( window->State.WorkMask )
fgProcessWork ( window ); fgProcessWork ( window );
fgEnumSubWindows( window, fghcbProcessWork, enumerator ); fgEnumSubWindows( window, fghcbProcessWork, enumerator );
} }
@ -376,10 +376,10 @@ static void fghSleepForEvents( void )
msec = fghNextTimer( ); msec = fghNextTimer( );
/* XXX Should use GLUT timers for joysticks... */ /* XXX Should use GLUT timers for joysticks... */
/* XXX Dumb; forces granularity to .01sec */ /* XXX Dumb; forces granularity to .01sec */
if( fgState.NumActiveJoysticks>0 && ( msec > 10 ) ) if( fgState.NumActiveJoysticks>0 && ( msec > 10 ) )
msec = 10; msec = 10;
fgPlatformSleepForEvents ( msec ); fgPlatformSleepForEvents ( msec );
} }
@ -479,14 +479,16 @@ void FGAPIENTRY glutMainLoop( void )
if (!fgStructure.Windows.First) if (!fgStructure.Windows.First)
fgError(" ERROR: glutMainLoop called with no windows created."); fgError(" ERROR: glutMainLoop called with no windows created.");
fgPlatformMainLoopPreliminaryWork (); fgPlatformMainLoopPreliminaryWork ();
fgState.ExecState = GLUT_EXEC_STATE_RUNNING ; fgState.ExecState = GLUT_EXEC_STATE_RUNNING ;
while( fgState.ExecState == GLUT_EXEC_STATE_RUNNING ) for(;;)
{ {
SFG_Window *window; SFG_Window *window;
glutMainLoopEvent( ); glutMainLoopEvent( );
if( fgState.ExecState != GLUT_EXEC_STATE_RUNNING )
break;
/* /*
* Step through the list of windows, seeing if there are any * Step through the list of windows, seeing if there are any
* that are not menus * that are not menus