Agar

<-- Back to AG_Intro.3

SYNOPSIS

#include <agar/core.h>

DESCRIPTION

These functions provide a low-level interface to monotonically increasing time sources. Different time backends may be implemented (see INTERNAL API below). Agar provides the following backends:
agTimeOps_dummyNo-op, timers will be unavailable.
agTimeOps_posixMonotonic clock using clock_gettime() interface
agTimeOps_gettimeofdayTraditional gettimeofday() interface.
agTimeOps_win32Windows winmm API.
agTimeOps_rendererMonotonic clock which stops while graphical rendering is performed. This is useful for applications performing offline rendering, where the outcome may be influenced by different threads relying on Agar timers or AG_Delay() calls.

INTERFACE


Uint32 AG_GetTicks (void)

void AG_Delay (Uint32 t)

void AG_SetTimeOps (const AG_TimeOps *ops)


The AG_GetTicks() function returns the current time in ticks. One tick usually corresponds to one millisecond.

The AG_Delay() function blocks the current thread, waiting at least t ticks before returning. The exact amount of time which AG_Delay() waits is backend-dependent.

The AG_SetTimeOps() function selects a time backend (see below).

BACKEND INTERFACE

The argument to AG_SetTimeOps() should point to the following structure:
typedef struct ag_time_ops {
	const char *name;
	void   (*Init)(void);
	void   (*Destroy)(void);
	Uint32 (*GetTicks)(void);
	void   (*Delay)(Uint32);
} AG_TimeOps;

Init() performs any necessary initialization. Destroy() cleans up any allocated resources.

The GetTicks() operation is the backend to AG_GetTicks() and Delay() is the backend to AG_Delay().

EXAMPLES

The following code fragment selects the rendering-aware time backend, agTimeOps_renderer, if it is available:
#include <agar/config/have_clock_gettime.h>
#include <agar/config/have_pthreads.h>

#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_PTHREADS)
AG_SetTimeOps(&agTimeOps_renderer);
#endif

SEE ALSO

AG_Intro(3), AG_Timer(3)

HISTORY

The AG_Time interface first appeared in Agar 1.3.4

Csoft.net ElectronTubeStore.com