view test/testhread.c @ 897:9e27fdb98eab

Date: Tue, 11 May 2004 22:05:32 -0400 From: Bob Ippolito Subject: [SDL] SDL_QuartzWM patches I've sent in two small patches to SDL_QuartzWM directly to Sam over the past few months (well, I think I sent both anyway) and neither of them have been implemented. I didn't receive a response, so I'm sure he was just busy and/or they got lost, so I decided to sign up to the list and post them here. This patch rolls both of them together: - Mouse cursor becomes visible if hidden when it moves outside of the game window. If you want it to stay invisible you should warp it because if it's not warped a user might click some random other application! Commercial games behave in this way (or at least Warcraft III does, which is the only one that uses a custom mouse cursor and no warping that I've played in recent memory). - Right mouse button emulation is changed from Command-Click to Control-Click, which is how OS X behaves. Consider copyright assigned to whomever needs it under whichever license it needs to be under.. yadda yadda yadda.
author Sam Lantinga <slouken@libsdl.org>
date Mon, 17 May 2004 00:16:24 +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 */
}