diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/engine.cc | 20 | 
1 files changed, 20 insertions, 0 deletions
| 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; +} | 
