Commit of John's change to stop an infinite-loop condition when the
only windows left are freeglut menu windows, and correctly calls exit() if we drop out of the main loop without having requested any freeglut extensions to glutMainLoop() handling. git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@382 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
3ae658e166
commit
d4f3ec79de
@ -1088,9 +1088,20 @@ void FGAPIENTRY glutMainLoop( void )
|
|||||||
fgState.ExecState = GLUT_EXEC_STATE_RUNNING ;
|
fgState.ExecState = GLUT_EXEC_STATE_RUNNING ;
|
||||||
while( fgState.ExecState == GLUT_EXEC_STATE_RUNNING )
|
while( fgState.ExecState == GLUT_EXEC_STATE_RUNNING )
|
||||||
{
|
{
|
||||||
glutMainLoopEvent( );
|
SFG_Window *window;
|
||||||
|
|
||||||
if( fgStructure.Windows.First == NULL )
|
glutMainLoopEvent( );
|
||||||
|
/*
|
||||||
|
* Step through the list of windows, seeing if there are any
|
||||||
|
* that are not menus
|
||||||
|
*/
|
||||||
|
for( window = ( SFG_Window * )fgStructure.Windows.First;
|
||||||
|
window;
|
||||||
|
window = ( SFG_Window * )window->Node.Next )
|
||||||
|
if ( ! ( window->IsMenu ) )
|
||||||
|
break;
|
||||||
|
|
||||||
|
if( ! window )
|
||||||
fgState.ExecState = GLUT_EXEC_STATE_STOP;
|
fgState.ExecState = GLUT_EXEC_STATE_STOP;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1106,6 +1117,8 @@ void FGAPIENTRY glutMainLoop( void )
|
|||||||
* of a freeglut session, so that another glutInit() call can happen
|
* of a freeglut session, so that another glutInit() call can happen
|
||||||
*/
|
*/
|
||||||
fgDeinitialize( );
|
fgDeinitialize( );
|
||||||
|
if( fgState.ActionOnWindowClose == GLUT_ACTION_EXIT )
|
||||||
|
exit( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user