#include "../../SDL_internal.h"
#if defined(SDL_TIMER_NGAGE)
#include <e32std.h>
#include <e32hal.h>
#include "SDL_timer.h"
static SDL_bool ticks_started = SDL_FALSE;
static TUint start = 0;
static TInt tickPeriodMilliSeconds;
#ifdef __cplusplus
extern "C" {
#endif
void
SDL_TicksInit(void)
{
if (ticks_started)
{
return;
}
ticks_started = SDL_TRUE;
start = User::TickCount();
TTimeIntervalMicroSeconds32 period;
TInt tmp = UserHal::TickPeriod(period);
(void)tmp;
tickPeriodMilliSeconds = period.Int() / 1000;
}
void
SDL_TicksQuit(void)
{
ticks_started = SDL_FALSE;
}
Uint64
SDL_GetTicks64(void)
{
if (! ticks_started)
{
SDL_TicksInit();
}
TUint deltaTics = User::TickCount() - start;
return (Uint64)(deltaTics * tickPeriodMilliSeconds);
}
Uint64
SDL_GetPerformanceCounter(void)
{
return (Uint64)User::TickCount();
}
Uint64
SDL_GetPerformanceFrequency(void)
{
return 1000000;
}
void
SDL_Delay(Uint32 ms)
{
User::After(TTimeIntervalMicroSeconds32(ms * 1000));
}
#ifdef __cplusplus
}
#endif
#endif