Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
100 lines (79 loc) · 2.27 KB

testtimer.c

File metadata and controls

100 lines (79 loc) · 2.27 KB
 
Apr 26, 2001
Apr 26, 2001
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* Test program to check the resolution of the SDL timer on the current
platform
*/
#include <stdlib.h>
#include <stdio.h>
#include "SDL.h"
#define DEFAULT_RESOLUTION 1
static int ticks = 0;
Jul 10, 2006
Jul 10, 2006
15
16
static Uint32 SDLCALL
ticktock(Uint32 interval)
Apr 26, 2001
Apr 26, 2001
17
{
Jul 10, 2006
Jul 10, 2006
18
19
++ticks;
return (interval);
Apr 26, 2001
Apr 26, 2001
20
21
}
Jul 10, 2006
Jul 10, 2006
22
23
static Uint32 SDLCALL
callback(Uint32 interval, void *param)
Apr 26, 2001
Apr 26, 2001
24
{
Jul 10, 2006
Jul 10, 2006
25
26
printf("Timer %d : param = %d\n", interval, (int) (uintptr_t) param);
return interval;
Apr 26, 2001
Apr 26, 2001
27
28
}
Jul 10, 2006
Jul 10, 2006
29
30
int
main(int argc, char *argv[])
Apr 26, 2001
Apr 26, 2001
31
{
Mar 25, 2011
Mar 25, 2011
32
int i, desired;
Jul 10, 2006
Jul 10, 2006
33
SDL_TimerID t1, t2, t3;
Mar 25, 2011
Mar 25, 2011
34
Uint64 start, now;
Jul 10, 2006
Jul 10, 2006
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
if (SDL_Init(SDL_INIT_TIMER) < 0) {
fprintf(stderr, "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;
}
SDL_SetTimer(desired, ticktock);
/* Wait 10 seconds */
printf("Waiting 10 seconds\n");
SDL_Delay(10 * 1000);
/* Stop the timer */
SDL_SetTimer(0, NULL);
/* Print the results */
if (ticks) {
fprintf(stderr,
"Timer resolution: desired = %d ms, actual = %f ms\n",
desired, (double) (10 * 1000) / ticks);
}
/* Test multiple timers */
printf("Testing multiple timers...\n");
t1 = SDL_AddTimer(100, callback, (void *) 1);
if (!t1)
fprintf(stderr, "Could not create timer 1: %s\n", SDL_GetError());
t2 = SDL_AddTimer(50, callback, (void *) 2);
if (!t2)
fprintf(stderr, "Could not create timer 2: %s\n", SDL_GetError());
t3 = SDL_AddTimer(233, callback, (void *) 3);
if (!t3)
fprintf(stderr, "Could not create timer 3: %s\n", SDL_GetError());
/* Wait 10 seconds */
printf("Waiting 10 seconds\n");
SDL_Delay(10 * 1000);
printf("Removing timer 1 and waiting 5 more seconds\n");
SDL_RemoveTimer(t1);
SDL_Delay(5 * 1000);
SDL_RemoveTimer(t2);
SDL_RemoveTimer(t3);
Mar 25, 2011
Mar 25, 2011
89
90
91
92
93
94
95
start = SDL_GetPerformanceCounter();
for (i = 0; i < 1000000; ++i) {
ticktock(0);
}
now = SDL_GetPerformanceCounter();
printf("1 million iterations of ticktock took %f ms\n", (double)((now - start)*1000) / SDL_GetPerformanceFrequency());
Jul 10, 2006
Jul 10, 2006
96
97
SDL_Quit();
return (0);
Apr 26, 2001
Apr 26, 2001
98
}
Mar 25, 2011
Mar 25, 2011
99
100
/* vi: set ts=4 sw=4 expandtab: */