SDL  2.0
testtimer.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include "SDL.h"
+ Include dependency graph for testtimer.c:

Go to the source code of this file.

Macros

#define DEFAULT_RESOLUTION   1

Functions

static Uint32 ticktock (Uint32 interval, void *param)
static Uint32 callback (Uint32 interval, void *param)
int main (int argc, char *argv[])

Variables

static int ticks = 0

Macro Definition Documentation

#define DEFAULT_RESOLUTION   1

Definition at line 22 of file testtimer.c.

Referenced by main().

Function Documentation

static Uint32 callback ( Uint32  interval,
void param 
)
static

Definition at line 34 of file testtimer.c.

References SDL_Log.

Referenced by main(), SDL_AddHintCallback(), SDL_AddTimer(), SDL_CaptureAudio(), SDL_DelEventWatch(), SDL_LogSetOutputFunction(), SDL_RunAudio(), SDL_SetWindowHitTest(), and SDLTest_SetTestTimeout().

{
SDL_Log("Timer %d : param = %d\n", interval, (int) (uintptr_t) param);
return interval;
}
int main ( int  argc,
char *  argv[] 
)

Definition at line 41 of file testtimer.c.

References callback(), DEFAULT_RESOLUTION, i, NULL, SDL_AddTimer, SDL_Delay, SDL_GetError, SDL_GetPerformanceCounter, SDL_GetPerformanceFrequency(), SDL_GetTicks(), SDL_Init, SDL_INIT_TIMER, SDL_Log, SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, SDL_LogError, SDL_LogSetPriority, SDL_PRIu64, SDL_Quit, SDL_RemoveTimer, ticks, and ticktock().

{
int i, desired;
SDL_TimerID t1, t2, t3;
Uint32 start32, now32;
Uint64 start, now;
/* Enable standard application logging */
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError());
return (1);
}
/* Start the timer */
desired = 0;
if (argv[1]) {
desired = atoi(argv[1]);
}
if (desired == 0) {
desired = DEFAULT_RESOLUTION;
}
t1 = SDL_AddTimer(desired, ticktock, NULL);
/* Wait 10 seconds */
SDL_Log("Waiting 10 seconds\n");
SDL_Delay(10 * 1000);
/* Stop the timer */
/* Print the results */
if (ticks) {
SDL_Log("Timer resolution: desired = %d ms, actual = %f ms\n",
desired, (double) (10 * 1000) / ticks);
}
/* Test multiple timers */
SDL_Log("Testing multiple timers...\n");
t1 = SDL_AddTimer(100, callback, (void *) 1);
if (!t1)
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"Could not create timer 1: %s\n", SDL_GetError());
t2 = SDL_AddTimer(50, callback, (void *) 2);
if (!t2)
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"Could not create timer 2: %s\n", SDL_GetError());
t3 = SDL_AddTimer(233, callback, (void *) 3);
if (!t3)
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"Could not create timer 3: %s\n", SDL_GetError());
/* Wait 10 seconds */
SDL_Log("Waiting 10 seconds\n");
SDL_Delay(10 * 1000);
SDL_Log("Removing timer 1 and waiting 5 more seconds\n");
SDL_Delay(5 * 1000);
for (i = 0; i < 1000000; ++i) {
}
SDL_Log("1 million iterations of ticktock took %f ms\n", (double)((now - start)*1000) / SDL_GetPerformanceFrequency());
SDL_Log("Performance counter frequency: %"SDL_PRIu64"\n", (unsigned long long) SDL_GetPerformanceFrequency());
start32 = SDL_GetTicks();
SDL_Delay(1000);
now32 = SDL_GetTicks();
SDL_Log("Delay 1 second = %d ms in ticks, %f ms according to performance counter\n", (now32-start32), (double)((now - start)*1000) / SDL_GetPerformanceFrequency());
return (0);
}
static Uint32 ticktock ( Uint32  interval,
void param 
)
static

Definition at line 27 of file testtimer.c.

References ticks.

Referenced by main().

{
++ticks;
return (interval);
}

Variable Documentation

int ticks = 0
static

Definition at line 24 of file testtimer.c.

Referenced by main(), and ticktock().