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:
parent
f9acc79690
commit
d860b2e225
@ -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 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -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 );
|
||||||
}
|
}
|
||||||
@ -379,7 +379,7 @@ static void fghSleepForEvents( void )
|
|||||||
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
|
||||||
|
Reference in New Issue
Block a user