Mercurial > sdl-ios-xcode
annotate test/testhread.c @ 761:c5b2b6d2d1fe
Date: Wed, 31 Dec 2003 21:55:30 +0100
From: Max Horn
Subject: SDL: video/quartz cleanup
while doing some experimental changes in the quartz code, I was annoyed
by having to recompile that one big .o file over and over again. So I
decided to finally realize one TODO: properly splitting the code over
multiple files :-).
With two exceptions, I didn't make code changes, only rearranged files
and added new headers. Since there are several new files, making a
patch didn't work out so well, so I decided to just send you all the
new & modified files.
The one source change I made is related to showing/hiding the mouse. I
renamed cursor_visible to cursor_should_be_visible and cursor_hidden to
cursor_visible; I think that makes reading the code easier.
Then I added two new functions: QZ_ShowMouse and QZ_HideMouse. They
help manage cursor_visible (the former 'cursor_hidden'). Finally I
replaced the Carbon ShowCursor/HiderCuror calls by [NSCursor hide] and
[NSCursor unhide]. The API docs are not conclusive, but it might be
that with those the "cursor_visible" (former 'cursor_hidden') hack may
not be necessary anymore; however so far I didn't test this hypothesis,
so I left that in.
The other change was to remove in_foreground and use [NSApp isActive]
instead: Manually keeping track of whether we are in the foreground is
error prone. This should work better in some corner cases.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 04 Jan 2004 14:55:35 +0000 |
parents | 74212992fb08 |
children | be9c9c8f6d53 |
rev | line source |
---|---|
0 | 1 |
2 /* Simple test of the SDL threading code */ | |
3 | |
4 #include <stdio.h> | |
5 #include <stdlib.h> | |
6 #include <signal.h> | |
7 | |
8 #include "SDL.h" | |
9 #include "SDL_thread.h" | |
10 | |
11 static int alive = 0; | |
12 | |
13 int ThreadFunc(void *data) | |
14 { | |
15 printf("Started thread %s: My thread id is %u\n", | |
16 (char *)data, SDL_ThreadID()); | |
17 while ( alive ) { | |
18 printf("Thread '%s' is alive!\n", (char *)data); | |
19 SDL_Delay(1*1000); | |
20 } | |
21 printf("Thread '%s' exiting!\n", (char *)data); | |
22 return(0); | |
23 } | |
24 | |
25 static void killed(int sig) | |
26 { | |
27 printf("Killed with SIGTERM, waiting 5 seconds to exit\n"); | |
28 SDL_Delay(5*1000); | |
29 alive = 0; | |
30 exit(0); | |
31 } | |
32 | |
33 int main(int argc, char *argv[]) | |
34 { | |
35 SDL_Thread *thread; | |
36 | |
37 /* Load the SDL library */ | |
38 if ( SDL_Init(0) < 0 ) { | |
39 fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); | |
40 exit(1); | |
41 } | |
42 atexit(SDL_Quit); | |
43 | |
44 alive = 1; | |
45 thread = SDL_CreateThread(ThreadFunc, "#1"); | |
46 if ( thread == NULL ) { | |
47 fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError()); | |
48 exit(1); | |
49 } | |
50 SDL_Delay(5*1000); | |
51 printf("Waiting for thread #1\n"); | |
52 alive = 0; | |
53 SDL_WaitThread(thread, NULL); | |
54 | |
55 alive = 1; | |
56 thread = SDL_CreateThread(ThreadFunc, "#2"); | |
57 if ( thread == NULL ) { | |
58 fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError()); | |
59 exit(1); | |
60 } | |
61 SDL_Delay(5*1000); | |
62 printf("Killing thread #2\n"); | |
63 SDL_KillThread(thread); | |
64 | |
65 alive = 1; | |
66 signal(SIGTERM, killed); | |
67 thread = SDL_CreateThread(ThreadFunc, "#3"); | |
68 if ( thread == NULL ) { | |
69 fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError()); | |
70 exit(1); | |
71 } | |
72 raise(SIGTERM); | |
73 | |
74 return(0); /* Never reached */ | |
75 } |