Fixed getMicroTime (for real this time)

This commit is contained in:
Bart
2009-11-22 22:01:28 +01:00
parent 21f1f90bb5
commit f761e7e000
+85 -85
View File
@@ -16,47 +16,47 @@
* 2. Altered source versions must be plainly marked as such, and must not be * 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software. * misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution. * 3. This notice may not be removed or altered from any source distribution.
**/ **/
#include <common/config.h> #include <common/config.h>
#ifdef LOVE_WINDOWS #ifdef LOVE_WINDOWS
# include <windows.h> # include <windows.h>
# include <time.h> # include <time.h>
#else #else
# include <sys/time.h> # include <sys/time.h>
#endif #endif
#include "Timer.h" #include "Timer.h"
namespace love namespace love
{ {
namespace timer namespace timer
{ {
namespace sdl namespace sdl
{ {
Timer::Timer() Timer::Timer()
: time_init(0), currTime(0), prevFpsUpdate(0), fps(0), fpsUpdateFrequency(1), : time_init(0), currTime(0), prevFpsUpdate(0), fps(0), fpsUpdateFrequency(1),
frames(0), dt(0) frames(0), dt(0)
{ {
// Init the SDL timer system. // Init the SDL timer system.
if(SDL_InitSubSystem(SDL_INIT_TIMER) < 0) if(SDL_InitSubSystem(SDL_INIT_TIMER) < 0)
throw Exception(SDL_GetError()); throw Exception(SDL_GetError());
} }
Timer::~Timer() Timer::~Timer()
{ {
// Quit SDL timer. // Quit SDL timer.
SDL_QuitSubSystem(SDL_INIT_TIMER); SDL_QuitSubSystem(SDL_INIT_TIMER);
} }
const char * Timer::getName() const const char * Timer::getName() const
{ {
return "love.timer.sdl"; return "love.timer.sdl";
} }
void Timer::step() void Timer::step()
{ {
// Frames rendered // Frames rendered
frames++; frames++;
@@ -75,49 +75,49 @@ namespace sdl
fps = frames/fpsUpdateFrequency; fps = frames/fpsUpdateFrequency;
prevFpsUpdate = currTime; prevFpsUpdate = currTime;
frames = 0; frames = 0;
} }
} }
void Timer::sleep(int ms) void Timer::sleep(int ms)
{ {
if(ms > 0) if(ms > 0)
SDL_Delay(ms); SDL_Delay(ms);
} }
float Timer::getDelta() const float Timer::getDelta() const
{ {
return dt; return dt;
} }
float Timer::getFPS() const float Timer::getFPS() const
{ {
return fps; return fps;
} }
float Timer::getTime() const float Timer::getTime() const
{ {
return (SDL_GetTicks() - time_init)/1000.0f; return (SDL_GetTicks() - time_init)/1000.0f;
} }
float Timer::getMicroTime() const float Timer::getMicroTime() const
{ {
#ifdef LOVE_WINDOWS #ifdef LOVE_WINDOWS
/* __int64 ticks, freq;
long ticks, freq; LARGE_INTEGER temp;
QueryPeformanceCounter(&ticks); QueryPerformanceCounter(&temp);
QueryPeformanceFrequency(&freq); ticks = temp.QuadPart;
long secs = ticks/freq; QueryPerformanceFrequency(&temp);
long usecs = (ticks%freq)/(freq/1000000.0f); freq = temp.QuadPart;
return secs%86400 + usecs/1000000.0f; __int64 secs = ticks/freq;
*/ __int64 usecs = (ticks%freq)/(freq/1000000.0f);
return 0; return secs%86400 + usecs/1000000.0f;
#else #else
timeval t; timeval t;
gettimeofday(&t, NULL); gettimeofday(&t, NULL);
return t.tv_sec%86400 + t.tv_usec/1000000.0f; return t.tv_sec%86400 + t.tv_usec/1000000.0f;
#endif #endif
} }
} // sdl } // sdl
} // timer } // timer
} // love } // love