diff test/testtimer.c @ 0:74212992fb08

Initial revision
author Sam Lantinga <slouken@lokigames.com>
date Thu, 26 Apr 2001 16:45:43 +0000
parents
children ed57c876700d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/testtimer.c	Thu Apr 26 16:45:43 2001 +0000
@@ -0,0 +1,87 @@
+
+/* 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;
+
+static Uint32 ticktock(Uint32 interval)
+{
+	++ticks;
+	return(interval);
+}
+
+static Uint32 callback(Uint32 interval, void *param)
+{
+  printf("Timer %d : param = %d\n", interval, (int) param);
+  return interval;
+}
+
+int main(int argc, char *argv[])
+{
+	int desired;
+	SDL_TimerID t1, t2, t3;
+
+	if ( SDL_Init(SDL_INIT_TIMER) < 0 ) {
+		fprintf(stderr, "Couldn't load SDL: %s\n", SDL_GetError());
+		exit(1);
+	}
+	atexit(SDL_Quit);
+
+	/* 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\n");
+	t2 = SDL_AddTimer(50, callback, (void*)2);
+	if(!t2)
+	  fprintf(stderr,"Could not create timer 2\n");
+	t3 = SDL_AddTimer(233, callback, (void*)3);
+	if(!t3)
+	  fprintf(stderr,"Could not create timer 3\n");
+	
+	/* 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);
+
+	return(0);
+}