[SDL2] Add timer subsystem

This commit is contained in:
Arnav Bhatt 2024-09-26 20:58:17 +05:30
parent a6821141d8
commit 628233a836
3 changed files with 57 additions and 3 deletions

View File

@ -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 \

View File

@ -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

View File

@ -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 */