Mercurial > sdl-ios-xcode
annotate test/testerror.c @ 3883:cfe850b334e7 SDL-1.2
Also save/restore fpu register in vbl interrupt
author | Patrice Mandin <patmandin@gmail.com> |
---|---|
date | Sat, 21 Oct 2006 18:53:33 +0000 |
parents | 290b5baf2fca |
children | 782fd950bd46 c121d94672cb |
rev | line source |
---|---|
0 | 1 |
2 /* Simple test of the SDL threading code and error handling */ | |
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 | |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
13 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
14 static void quit(int rc) |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
15 { |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
16 SDL_Quit(); |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
17 exit(rc); |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
18 } |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
19 |
1769 | 20 int SDLCALL ThreadFunc(void *data) |
0 | 21 { |
22 /* Set the child thread error string */ | |
23 SDL_SetError("Thread %s (%d) had a problem: %s", | |
24 (char *)data, SDL_ThreadID(), "nevermind"); | |
25 while ( alive ) { | |
26 printf("Thread '%s' is alive!\n", (char *)data); | |
27 SDL_Delay(1*1000); | |
28 } | |
29 printf("Child thread error string: %s\n", SDL_GetError()); | |
30 return(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()); | |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
40 return(1); |
0 | 41 } |
42 | |
43 /* Set the error value for the main thread */ | |
44 SDL_SetError("No worries"); | |
45 | |
46 alive = 1; | |
47 thread = SDL_CreateThread(ThreadFunc, "#1"); | |
48 if ( thread == NULL ) { | |
49 fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError()); | |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
50 quit(1); |
0 | 51 } |
52 SDL_Delay(5*1000); | |
53 printf("Waiting for thread #1\n"); | |
54 alive = 0; | |
55 SDL_WaitThread(thread, NULL); | |
56 | |
57 printf("Main thread error string: %s\n", SDL_GetError()); | |
58 | |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
59 SDL_Quit(); |
0 | 60 return(0); |
61 } |