Home | History | Annotate | Download | only in test
      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