Elaztek Developer Hub
Blamite Game Engine - blam!  00398.09.22.23.2015.blamite
The core library for the Blamite Game Engine.
YieldTimer.h
Go to the documentation of this file.
1 
2 #ifndef _Demo_YieldTimer_H_
3 #define _Demo_YieldTimer_H_
4 
5 #include "OGRE/OgreTimer.h"
6 
7 namespace Demo
8 {
9  class YieldTimer
10  {
11  Ogre::Timer *mExternalTimer;
12 
13  public:
14  YieldTimer( Ogre::Timer *externalTimer ) :
15  mExternalTimer( externalTimer )
16  {
17  }
18 
19  Ogre::uint64 yield( double frameTime, Ogre::uint64 startTime )
20  {
21  Ogre::uint64 endTime = mExternalTimer->getMicroseconds();
22 
23  while( frameTime * 1000000.0 > (endTime - startTime) )
24  {
25  endTime = mExternalTimer->getMicroseconds();
26 
27 #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
28  SwitchToThread();
29 #elif OGRE_PLATFORM == OGRE_PLATFORM_LINUX || OGRE_PLATFORM == OGRE_PLATFORM_ANDROID
30  sched_yield();
31 #endif
32  }
33 
34  return endTime;
35  }
36  };
37 }
38 
39 #endif
Demo::YieldTimer
Definition: YieldTimer.h:9
Demo
Definition: BaseSystem.cpp:5
startTime
Ogre::uint64 startTime
Definition: ogre.cpp:58
Demo::YieldTimer::YieldTimer
YieldTimer(Ogre::Timer *externalTimer)
Definition: YieldTimer.h:14
Demo::YieldTimer::yield
Ogre::uint64 yield(double frameTime, Ogre::uint64 startTime)
Definition: YieldTimer.h:19