From e432f80a0594a909b71ed1a12e0ae7f571c95b14 Mon Sep 17 00:00:00 2001 From: Arnav Bhatt Date: Sun, 23 Jun 2024 02:22:36 +0530 Subject: [PATCH] add timer support Signed-off-by: Arnav Bhatt --- Makefile | 2 +- include/SDL_config_kolibri.h | 4 +-- src/timer/kolibri/SDL_systimer.c | 54 ++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 src/timer/kolibri/SDL_systimer.c diff --git a/Makefile b/Makefile index 6d335ea..5bb7b00 100755 --- a/Makefile +++ b/Makefile @@ -70,7 +70,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 \ diff --git a/include/SDL_config_kolibri.h b/include/SDL_config_kolibri.h index 6a64d79..11a4758 100644 --- a/include/SDL_config_kolibri.h +++ b/include/SDL_config_kolibri.h @@ -92,8 +92,8 @@ /* Enable the dummy thread support (src/thread/dummy/\*.c) */ #define SDL_THREADS_DISABLED 1 -/* Enable the dummy timer support (src/timer/dummy/\*.c) */ -#define SDL_TIMER_DUMMY 1 +/* Enable the Kolibri timer support (src/timer/dummy/\*.c) */ +#define SDL_TIMER_KOLIBRI 1 /* Enable the Kolibri video driver (src/video/kolibri/\*.c) */ #define SDL_VIDEO_DRIVER_KOLIBRI 1 diff --git a/src/timer/kolibri/SDL_systimer.c b/src/timer/kolibri/SDL_systimer.c new file mode 100644 index 0000000..57a3aac --- /dev/null +++ b/src/timer/kolibri/SDL_systimer.c @@ -0,0 +1,54 @@ + +#include "../../SDL_internal.h" + +#ifdef SDL_TIMER_KOLIBRI + +#include + +#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