Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
64 lines (52 loc) · 1.38 KB

testerror.c

File metadata and controls

64 lines (52 loc) · 1.38 KB
 
Apr 26, 2001
Apr 26, 2001
1
2
3
4
5
6
7
8
9
10
11
12
/* Simple test of the SDL threading code and error handling */
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include "SDL.h"
#include "SDL_thread.h"
static int alive = 0;
Sep 28, 2005
Sep 28, 2005
13
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
Jul 10, 2006
Jul 10, 2006
14
15
static void
quit(int rc)
Sep 28, 2005
Sep 28, 2005
16
{
Jul 10, 2006
Jul 10, 2006
17
18
SDL_Quit();
exit(rc);
Sep 28, 2005
Sep 28, 2005
19
20
}
Jul 10, 2006
Jul 10, 2006
21
22
int SDLCALL
ThreadFunc(void *data)
Apr 26, 2001
Apr 26, 2001
23
{
Jul 10, 2006
Jul 10, 2006
24
25
26
27
28
29
30
31
32
/* Set the child thread error string */
SDL_SetError("Thread %s (%d) had a problem: %s",
(char *) data, SDL_ThreadID(), "nevermind");
while (alive) {
printf("Thread '%s' is alive!\n", (char *) data);
SDL_Delay(1 * 1000);
}
printf("Child thread error string: %s\n", SDL_GetError());
return (0);
Apr 26, 2001
Apr 26, 2001
33
34
}
Jul 10, 2006
Jul 10, 2006
35
36
int
main(int argc, char *argv[])
Apr 26, 2001
Apr 26, 2001
37
{
Jul 10, 2006
Jul 10, 2006
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
SDL_Thread *thread;
/* Load the SDL library */
if (SDL_Init(0) < 0) {
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
return (1);
}
/* Set the error value for the main thread */
SDL_SetError("No worries");
alive = 1;
thread = SDL_CreateThread(ThreadFunc, "#1");
if (thread == NULL) {
fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError());
quit(1);
}
SDL_Delay(5 * 1000);
printf("Waiting for thread #1\n");
alive = 0;
SDL_WaitThread(thread, NULL);
printf("Main thread error string: %s\n", SDL_GetError());
SDL_Quit();
return (0);
Apr 26, 2001
Apr 26, 2001
64
}