From: John Tsiombikas Date: Thu, 25 May 2017 06:34:57 +0000 (+0000) Subject: In glutMainLoop, the checking of ExecState, and wether it's equal to X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=freeglut;a=commitdiff_plain;h=b304f6f9002f17cc263e06641a92f19ffbfaf062 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: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@1803 7f0cb862-5218-0410-a997-914c9d46530a --- diff --git a/src/fg_joystick.c b/src/fg_joystick.c index 7d4c502..6f6771c 100644 --- a/src/fg_joystick.c +++ b/src/fg_joystick.c @@ -324,7 +324,7 @@ static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes ) if( joy->error ) return; - fgPlatformJoystickRawRead ( joy, buttons, axes ); + fgPlatformJoystickRawRead ( joy, buttons, axes ); } /* diff --git a/src/fg_main.c b/src/fg_main.c index 330a7bc..0f47c8d 100644 --- a/src/fg_main.c +++ b/src/fg_main.c @@ -154,7 +154,7 @@ static void fghcbProcessWork( SFG_Window *window, SFG_Enumerator *enumerator ) { if( window->State.WorkMask ) - fgProcessWork ( window ); + fgProcessWork ( window ); fgEnumSubWindows( window, fghcbProcessWork, enumerator ); } @@ -376,10 +376,10 @@ static void fghSleepForEvents( void ) msec = fghNextTimer( ); /* XXX Should use GLUT timers for joysticks... */ /* XXX Dumb; forces granularity to .01sec */ - if( fgState.NumActiveJoysticks>0 && ( msec > 10 ) ) + if( fgState.NumActiveJoysticks>0 && ( msec > 10 ) ) msec = 10; - fgPlatformSleepForEvents ( msec ); + fgPlatformSleepForEvents ( msec ); } @@ -479,14 +479,16 @@ void FGAPIENTRY glutMainLoop( void ) if (!fgStructure.Windows.First) fgError(" ERROR: glutMainLoop called with no windows created."); - fgPlatformMainLoopPreliminaryWork (); + fgPlatformMainLoopPreliminaryWork (); fgState.ExecState = GLUT_EXEC_STATE_RUNNING ; - while( fgState.ExecState == GLUT_EXEC_STATE_RUNNING ) + for(;;) { SFG_Window *window; glutMainLoopEvent( ); + if( fgState.ExecState != GLUT_EXEC_STATE_RUNNING ) + break; /* * Step through the list of windows, seeing if there are any * that are not menus