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: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@382
7f0cb862-5218-0410-a997-
914c9d46530a
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;
else
{
if( fgState.IdleCallback )
fgState.IdleCallback( );
- fgSleepForEvents();
+ fgSleepForEvents( );
}
}
* of a freeglut session, so that another glutInit() call can happen
*/
fgDeinitialize( );
+ if( fgState.ActionOnWindowClose == GLUT_ACTION_EXIT )
+ exit( 0 );
}
/*