SDL-1.2.14
[sdl_omap.git] / test / testtimer.c
1
2 /* Test program to check the resolution of the SDL timer on the current
3    platform
4 */
5
6 #include <stdlib.h>
7 #include <stdio.h>
8
9 #include "SDL.h"
10
11 #define DEFAULT_RESOLUTION      1
12
13 static int ticks = 0;
14
15 static Uint32 SDLCALL ticktock(Uint32 interval)
16 {
17         ++ticks;
18         return(interval);
19 }
20
21 static Uint32 SDLCALL callback(Uint32 interval, void *param)
22 {
23   printf("Timer %d : param = %d\n", interval, (int)(uintptr_t)param);
24   return interval;
25 }
26
27 int main(int argc, char *argv[])
28 {
29         int desired;
30         SDL_TimerID t1, t2, t3;
31
32         if ( SDL_Init(SDL_INIT_TIMER) < 0 ) {
33                 fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
34                 return(1);
35         }
36
37         /* Start the timer */
38         desired = 0;
39         if ( argv[1] ) {
40                 desired = atoi(argv[1]);
41         }
42         if ( desired == 0 ) {
43                 desired = DEFAULT_RESOLUTION;
44         }
45         SDL_SetTimer(desired, ticktock);
46
47         /* Wait 10 seconds */
48         printf("Waiting 10 seconds\n");
49         SDL_Delay(10*1000);
50
51         /* Stop the timer */
52         SDL_SetTimer(0, NULL);
53
54         /* Print the results */
55         if ( ticks ) {
56                 fprintf(stderr,
57                 "Timer resolution: desired = %d ms, actual = %f ms\n",
58                                         desired, (double)(10*1000)/ticks);
59         }
60         
61         /* Test multiple timers */
62         printf("Testing multiple timers...\n");
63         t1 = SDL_AddTimer(100, callback, (void*)1);
64         if(!t1)
65           fprintf(stderr,"Could not create timer 1: %s\n", SDL_GetError());
66         t2 = SDL_AddTimer(50, callback, (void*)2);
67         if(!t2)
68           fprintf(stderr,"Could not create timer 2: %s\n", SDL_GetError());
69         t3 = SDL_AddTimer(233, callback, (void*)3);
70         if(!t3)
71           fprintf(stderr,"Could not create timer 3: %s\n", SDL_GetError());
72         
73         /* Wait 10 seconds */
74         printf("Waiting 10 seconds\n");
75         SDL_Delay(10*1000);
76
77         printf("Removing timer 1 and waiting 5 more seconds\n");
78         SDL_RemoveTimer(t1);
79
80         SDL_Delay(5*1000);
81
82         SDL_RemoveTimer(t2);
83         SDL_RemoveTimer(t3);
84
85         SDL_Quit();
86         return(0);
87 }