view test/testhread.c @ 720:f90d80d68071

N Sep 17 8791 Sam Lantinga Re: tks source released Date: Sun, 07 Sep 2003 02:51:58 +0200 From: Stephane Marchesin Subject: [SDL] Two little patches Compiling SDL with a recent gcc (gcc 3.3.1, 3.3 doesn't have this behaviour) gives some nasty warnings : SDL_blit_A.c: In function `BlitRGBtoRGBSurfaceAlpha128MMX': SDL_blit_A.c:223: warning: integer constant is too large for "long" type SDL_blit_A.c:225: warning: integer constant is too large for "long" type SDL_blit_A.c:227: warning: integer constant is too large for "long" type [...] The first attached patch (longlongfix.patch) tells gcc to really treat those constants as unsigned long long and not long. The second patch (nasinclude.patch) fixes an include problem I had while compiling nas audio : when the <audio/audiolib.h> file lies in /usr/X11R6/include, a -I/usr/X11R6/include option is needed or the file isn't found.
author Sam Lantinga <slouken@libsdl.org>
date Sun, 21 Sep 2003 18:32:04 +0000
parents 74212992fb08
children be9c9c8f6d53
line wrap: on
line source


/* Simple test of the SDL threading code */

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

#include "SDL.h"
#include "SDL_thread.h"

static int alive = 0;

int ThreadFunc(void *data)
{
	printf("Started thread %s: My thread id is %u\n",
				(char *)data, SDL_ThreadID());
	while ( alive ) {
		printf("Thread '%s' is alive!\n", (char *)data);
		SDL_Delay(1*1000);
	}
	printf("Thread '%s' exiting!\n", (char *)data);
	return(0);
}

static void killed(int sig)
{
	printf("Killed with SIGTERM, waiting 5 seconds to exit\n");
	SDL_Delay(5*1000);
	alive = 0;
	exit(0);
}

int main(int argc, char *argv[])
{
	SDL_Thread *thread;

	/* Load the SDL library */
	if ( SDL_Init(0) < 0 ) {
		fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
		exit(1);
	}
	atexit(SDL_Quit);

	alive = 1;
	thread = SDL_CreateThread(ThreadFunc, "#1");
	if ( thread == NULL ) {
		fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError());
		exit(1);
	}
	SDL_Delay(5*1000);
	printf("Waiting for thread #1\n");
	alive = 0;
	SDL_WaitThread(thread, NULL);

	alive = 1;
	thread = SDL_CreateThread(ThreadFunc, "#2");
	if ( thread == NULL ) {
		fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError());
		exit(1);
	}
	SDL_Delay(5*1000);
	printf("Killing thread #2\n");
	SDL_KillThread(thread);

	alive = 1;
	signal(SIGTERM, killed);
	thread = SDL_CreateThread(ThreadFunc, "#3");
	if ( thread == NULL ) {
		fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError());
		exit(1);
	}
	raise(SIGTERM);

	return(0);	/* Never reached */
}