[SDL2] Add timer subsystem
This commit is contained in:
parent
a6821141d8
commit
628233a836
@ -73,7 +73,7 @@ thread_OBJS = src/thread/SDL_thread.o src/thread/generic/SDL_syscond.o \
|
||||
src/thread/generic/SDL_sysmutex.o src/thread/generic/SDL_syssem.o \
|
||||
src/thread/generic/SDL_systhread.o src/thread/generic/SDL_systls.o
|
||||
|
||||
timer_OBJS = src/timer/SDL_timer.o src/timer/dummy/SDL_systimer.o
|
||||
timer_OBJS = src/timer/SDL_timer.o src/timer/kolibri/SDL_systimer.o
|
||||
|
||||
video_OBJS = src/video/SDL_blit_0.o src/video/SDL_blit_1.o src/video/SDL_blit_A.o \
|
||||
src/video/SDL_blit_auto.o src/video/SDL_blit_copy.o src/video/SDL_blit_N.o \
|
||||
|
@ -110,8 +110,8 @@
|
||||
/* Enable the stub thread support (src/thread/generic/\*.c) */
|
||||
#define SDL_THREADS_DISABLED 1
|
||||
|
||||
/* Enable the stub timer support (src/timer/dummy/\*.c) */
|
||||
#define SDL_TIMERS_DISABLED 1
|
||||
/* Enable the Kolibri timer driver (src/timer/kolibri/\*.c) */
|
||||
#define SDL_TIMER_KOLIBRI 1
|
||||
|
||||
/* Enable the dummy video driver (src/video/dummy/\*.c) */
|
||||
#define SDL_VIDEO_DRIVER_DUMMY 1
|
||||
|
@ -0,0 +1,54 @@
|
||||
|
||||
#include "../../SDL_internal.h"
|
||||
|
||||
#ifdef SDL_TIMER_KOLIBRI
|
||||
|
||||
#include <sys/ksys.h>
|
||||
|
||||
#include "SDL_timer.h"
|
||||
|
||||
static uint64_t start_tick;
|
||||
static SDL_bool ticks_started = SDL_FALSE;
|
||||
|
||||
void SDL_TicksInit(void)
|
||||
{
|
||||
if (ticks_started)
|
||||
return;
|
||||
|
||||
ticks_started = SDL_TRUE;
|
||||
|
||||
/* Set first ticks value */
|
||||
start_tick = _ksys_get_ns_count();
|
||||
}
|
||||
|
||||
void SDL_TicksQuit(void)
|
||||
{
|
||||
ticks_started = SDL_FALSE;
|
||||
}
|
||||
|
||||
Uint64 SDL_GetTicks64(void)
|
||||
{
|
||||
uint64_t elapsed;
|
||||
if (!ticks_started) {
|
||||
SDL_TicksInit();
|
||||
}
|
||||
|
||||
return (Uint64)((_ksys_get_ns_count() - start_tick) / 1000000);
|
||||
}
|
||||
|
||||
Uint64 SDL_GetPerformanceCounter(void)
|
||||
{
|
||||
return _ksys_get_ns_count();
|
||||
}
|
||||
|
||||
Uint64 SDL_GetPerformanceFrequency(void)
|
||||
{
|
||||
return 1000000000;
|
||||
}
|
||||
|
||||
void SDL_Delay(Uint32 ms)
|
||||
{
|
||||
_ksys_delay((uint32_t)(ms / 10 + (ms % 10 > 0)));
|
||||
}
|
||||
|
||||
#endif /* SDL_TIMER_KOLIBRI */
|
Loading…
Reference in New Issue
Block a user