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 } 88