###### (This is the documentation for SDL3, which is under heavy development and the API is changing! [SDL2](https://wiki.libsdl.org/SDL2/) is the current stable version!) # SDL_NSTimerCallback Function prototype for the nanosecond timer callback function. ## Header File Defined in [](https://github.com/libsdl-org/SDL/blob/main/include/SDL3/SDL_timer.h) ## Syntax ```c typedef Uint64 (SDLCALL *SDL_NSTimerCallback)(void *userdata, SDL_TimerID timerID, Uint64 interval); ``` ## Function Parameters | | | | ------------ | ----------------------------------------------------------------------------------------------- | | **userdata** | an arbitrary pointer provided by the app through [SDL_AddTimer](SDL_AddTimer), for its own use. | | **timerID** | the current timer being processed. | | **interval** | the current callback time interval. | ## Return Value Returns the new callback time interval, or 0 to disable further runs of the callback. ## Remarks The callback function is passed the current timer interval and returns the next timer interval, in nanoseconds. If the returned value is the same as the one passed in, the periodic alarm continues, otherwise a new alarm is scheduled. If the callback returns 0, the periodic alarm is canceled and will be removed. ## Thread Safety SDL may call this callback at any time from a background thread; the application is responsible for locking resources the callback touches that need to be protected. ## Version This datatype is available since SDL 3.0.0. ## See Also - [SDL_AddTimerNS](SDL_AddTimerNS) ---- [CategoryAPI](CategoryAPI), [CategoryAPIDatatype](CategoryAPIDatatype), [CategoryTimer](CategoryTimer)