X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FEngine.cc;h=53fca73e9e883cfab1d18aced70cd125391f26d1;hp=be8ca5fac61e184f0b54a0da244355e5b33e89a2;hb=72d4af22710317acffab861421c4364b1780b6fe;hpb=493ddb59a8620b49dfa0ff62ce93395ebfd02e86 diff --git a/src/Moof/Engine.cc b/src/Moof/Engine.cc index be8ca5f..53fca73 100644 --- a/src/Moof/Engine.cc +++ b/src/Moof/Engine.cc @@ -103,7 +103,7 @@ public: * The main loop. This just calls dispatchEvents(), update(), and draw() * over and over again. The timing of the update and draw are decoupled. * The actual frame rate is also calculated here. This function will return - * with a value of 0 if the member variable running becomes true. + * the exit code used to stop the loop. */ int run() @@ -141,6 +141,10 @@ public: nextStep += timestep; } + if (ticksNow >= nextStep) + { + nextStep = ticksNow + timestep; + } if (ticksNow >= nextDraw) { @@ -179,7 +183,7 @@ public: } while (running); - return 0; + return exitCode; } @@ -216,6 +220,7 @@ public: VideoPtr video; bool running; + int exitCode; Scalar timestep; Scalar drawRate; @@ -238,9 +243,10 @@ int Engine::run() return impl_->run(); } -void Engine::stop() +void Engine::stop(int exitCode) { impl_->running = false; + impl_->exitCode = exitCode; }