view test/testtimer.c @ 3957:b1d5b56aa549 SDL-1.2

Date: Mon, 4 Jun 2007 06:17:59 +0000 (UTC) From: George Gensure <werkt0@gmail.com> Subject: [SDL] error removal patch for SDL_x11dyn.c I found that calling SDL_GetError when an error hasn't necessarily occurred is still reporting problems from loadso regarding dynamic functions in X11. I've added the following to my local copy to avoid revealing the 'many library lookup' approach adopted by x11dyn.c:
author Ryan C. Gordon <icculus@icculus.org>
date Wed, 13 Jun 2007 07:54:10 +0000
parents 290b5baf2fca
children 782fd950bd46 c121d94672cb
line wrap: on
line source


/* 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 SDLCALL ticktock(Uint32 interval)
{
	++ticks;
	return(interval);
}

static Uint32 SDLCALL callback(Uint32 interval, void *param)
{
  printf("Timer %d : param = %d\n", interval, (int)(uintptr_t)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 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);

	SDL_Quit();
	return(0);
}