dxx-rebirth/arch/sdl/timer.c

41 lines
729 B
C
Raw Normal View History

2006-03-20 17:12:09 +00:00
/*
*
* SDL library timer functions
*
*/
#include <SDL/SDL.h>
2006-03-20 17:12:09 +00:00
#include "maths.h"
#include "timer.h"
#include "config.h"
2006-03-20 17:12:09 +00:00
fix timer_get_fixed_seconds(void)
{
fix x;
unsigned long tv_now = SDL_GetTicks();
x=i2f(tv_now/1000) | fixdiv(i2f(tv_now % 1000),i2f(1000));
return x;
}
void timer_delay(fix seconds)
{
SDL_Delay(f2i(fixmul(seconds, i2f(1000))));
}
// Replacement for timer_delay which considers calc time the program needs between frames (not reentrant)
void timer_delay2(int fps)
{
static u_int32_t FrameStart=0;
u_int32_t FrameLoop=0;
while (FrameLoop < 1000/(GameCfg.VSync?MAXIMUM_FPS:fps))
{
if (!GameCfg.VSync)
SDL_Delay(1);
FrameLoop=SDL_GetTicks()-FrameStart;
}
FrameStart=SDL_GetTicks();
}