1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- // based on "sdl_timer.h" (2.0.14)
- {**
- * Get the number of milliseconds since the SDL library initialization.
- *
- * This value wraps if the program runs for more than ~49 days.
- *}
- function SDL_GetTicks: cuint32; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GetTicks' {$ENDIF} {$ENDIF};
- {**
- * Get the number of milliseconds since SDL library initialization.
- *
- * Note that you should not use the SDL_TICKS_PASSED macro with values
- * returned by this function, as that macro does clever math to compensate for
- * the 32-bit overflow every ~49 days that SDL_GetTicks() suffers from. 64-bit
- * values from this function can be safely compared directly.
- *}
- function SDL_GetTicks64: cuint64; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GetTicks64' {$ENDIF} {$ENDIF};
- {**
- * \brief Compare SDL ticks values, and return true if A has passed B
- *
- * e.g. if you want to wait 100 ms, you could do this:
- * Uint32 timeout = SDL_GetTicks() + 100;
- * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) [
- * ... do work until timeout has elapsed
- * ]
- *}
- // #define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0)
- { Type conversion unnecessary bc. types are declared in func. param. list! }
- function SDL_TICKS_PASSED(const A, B: cint32): Boolean;
- {**
- * Get the current value of the high resolution counter
- *}
- function SDL_GetPerformanceCounter: cuint64; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GetPerformanceCounter' {$ENDIF} {$ENDIF};
- {**
- * Get the count per second of the high resolution counter
- *}
- function SDL_GetPerformanceFrequency: cuint64; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GetPerformanceFrequency' {$ENDIF} {$ENDIF};
- {**
- * Wait a specified number of milliseconds before returning.
- *}
- procedure SDL_Delay(ms: cuint32); cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_Delay' {$ENDIF} {$ENDIF};
- type
- {**
- * Function prototype for the timer callback function.
- *
- * The callback function is passed the current timer interval and returns
- * the next timer interval. 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 cancelled.
- *}
- PPSDL_TimerCallback = ^PSDL_TimerCallback;
- PSDL_TimerCallback = ^TSDL_TimerCallback;
- TSDL_TimerCallback = function(interval: cuint32; param: Pointer): cuint32; cdecl;
- {**
- * Definition of the timer ID type.
- *}
- PPSDL_TimerID = ^PSDL_TimerID;
- PSDL_TimerID = ^TSDL_TimerID;
- TSDL_TimerID = cint;
- {**
- * Add a new timer to the pool of timers already running.
- *
- * A timer ID, or NULL when an error occurs.
- *}
- function SDL_AddTimer(interval: cuint32; callback: TSDL_TimerCallback; param: Pointer): TSDL_TimerID; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_AddTimer' {$ENDIF} {$ENDIF};
- {**
- * Remove a timer knowing its ID.
- *
- * A boolean value indicating success or failure.
- *
- * It is not safe to remove a timer multiple times.
- *}
- function SDL_RemoveTimer(id: TSDL_TimerID): Boolean; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_RemoveTimer' {$ENDIF} {$ENDIF};
|