From ca8754a3a2296ff2842c781d1936dd47cecb3c9f Mon Sep 17 00:00:00 2001 From: pixel Date: Sun, 9 Mar 2003 21:19:43 +0000 Subject: FPS --- lib/engine.cc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lib') diff --git a/lib/engine.cc b/lib/engine.cc index ed52d8c..2d53beb 100644 --- a/lib/engine.cc +++ b/lib/engine.cc @@ -5,6 +5,11 @@ bool mogltk::engine::inited = false, mogltk::engine::postsetuped = false; bool mogltk::engine::appactive = false, mogltk::engine::cursorvisible = false, mogltk::engine::quitrequest = false; int mogltk::engine::mx, mogltk::engine::my, mogltk::engine::mbuttons; +int mogltk::engine::frames; +double mogltk::engine::curfps = -1; +Uint32 mogltk::engine::curticks; + +#define UPDATERATE 1000 int mogltk::engine::setup() throw(GeneralException) { if (inited) { @@ -28,6 +33,7 @@ int mogltk::engine::postsetup() throw(GeneralException) { } SDL_EnableUNICODE(1); + curticks = SDL_GetTicks(); postsetuped = true; @@ -110,6 +116,16 @@ void mogltk::engine::pollevents() { if (!postsetuped) postsetup(); + if (appactive) { + Uint32 ticks = SDL_GetTicks(); + frames++; + if (ticks - curticks > UPDATERATE) { + curfps = (double) frames * 1000 / (ticks - curticks); + frames = 0; + curticks = ticks; + } + } + while(true) { if (hastoreturn) if (!SDL_PollEvent(NULL)) { @@ -197,3 +213,7 @@ int mogltk::engine::mouseY() { int mogltk::engine::mousebuttons() { return mbuttons; } + +double mogltk::engine::FPS() { + return curfps; +} -- cgit v1.2.3