diff --git a/contrib/sdk/sources/SDL2-2.30.7/Makefile b/contrib/sdk/sources/SDL2-2.30.7/Makefile index 6d57cfaf06..37e4bd481b 100644 --- a/contrib/sdk/sources/SDL2-2.30.7/Makefile +++ b/contrib/sdk/sources/SDL2-2.30.7/Makefile @@ -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 \ diff --git a/contrib/sdk/sources/SDL2-2.30.7/include/SDL_config_kolibri.h b/contrib/sdk/sources/SDL2-2.30.7/include/SDL_config_kolibri.h index d9ba21bd8e..ea7378dcd6 100644 --- a/contrib/sdk/sources/SDL2-2.30.7/include/SDL_config_kolibri.h +++ b/contrib/sdk/sources/SDL2-2.30.7/include/SDL_config_kolibri.h @@ -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 diff --git a/contrib/sdk/sources/SDL2-2.30.7/src/timer/kolibri/SDL_systimer.c b/contrib/sdk/sources/SDL2-2.30.7/src/timer/kolibri/SDL_systimer.c new file mode 100644 index 0000000000..d95892d9ad --- /dev/null +++ b/contrib/sdk/sources/SDL2-2.30.7/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 /* SDL_TIMER_KOLIBRI */