SDL
2.0
testerror.c
Go to the documentation of this file.
1
/*
2
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
3
4
This software is provided 'as-is', without any express or implied
5
warranty. In no event will the authors be held liable for any damages
6
arising from the use of this software.
7
8
Permission is granted to anyone to use this software for any purpose,
9
including commercial applications, and to alter it and redistribute it
10
freely.
11
*/
12
13
/* Simple test of the SDL threading code and error handling */
14
15
#include <stdio.h>
16
#include <stdlib.h>
17
#include <signal.h>
18
19
#include "
SDL.h
"
20
21
static
int
alive
= 0;
22
23
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
24
static
void
25
quit
(
int
rc)
26
{
27
SDL_Quit
();
28
exit(rc);
29
}
30
31
int
SDLCALL
32
ThreadFunc
(
void
*
data
)
33
{
34
/* Set the child thread error string */
35
SDL_SetError
(
"Thread %s (%lu) had a problem: %s"
,
36
(
char
*) data,
SDL_ThreadID
(),
"nevermind"
);
37
while
(
alive
) {
38
SDL_Log
(
"Thread '%s' is alive!\n"
, (
char
*) data);
39
SDL_Delay
(1 * 1000);
40
}
41
SDL_Log
(
"Child thread error string: %s\n"
,
SDL_GetError
());
42
return
(0);
43
}
44
45
int
46
main
(
int
argc,
char
*argv[])
47
{
48
SDL_Thread
*thread;
49
50
/* Enable standard application logging */
51
SDL_LogSetPriority
(
SDL_LOG_CATEGORY_APPLICATION
,
SDL_LOG_PRIORITY_INFO
);
52
53
/* Load the SDL library */
54
if
(
SDL_Init
(0) < 0) {
55
SDL_LogError
(
SDL_LOG_CATEGORY_APPLICATION
,
"Couldn't initialize SDL: %s\n"
,
SDL_GetError
());
56
return
(1);
57
}
58
59
/* Set the error value for the main thread */
60
SDL_SetError
(
"No worries"
);
61
62
alive
= 1;
63
thread =
SDL_CreateThread
(
ThreadFunc
,
NULL
,
"#1"
);
64
if
(thread ==
NULL
) {
65
SDL_LogError
(
SDL_LOG_CATEGORY_APPLICATION
,
"Couldn't create thread: %s\n"
,
SDL_GetError
());
66
quit
(1);
67
}
68
SDL_Delay
(5 * 1000);
69
SDL_Log
(
"Waiting for thread #1\n"
);
70
alive
= 0;
71
SDL_WaitThread
(thread,
NULL
);
72
73
SDL_Log
(
"Main thread error string: %s\n"
,
SDL_GetError
());
74
75
SDL_Quit
();
76
return
(0);
77
}
SDL_ThreadID
#define SDL_ThreadID
Definition:
SDL_dynapi_overrides.h:481
SDL_GetError
#define SDL_GetError
Definition:
SDL_dynapi_overrides.h:119
data
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition:
SDL_opengl.h:1967
SDL_LogError
#define SDL_LogError
Definition:
SDL_dynapi_overrides.h:42
SDL_Log
#define SDL_Log
Definition:
SDL_dynapi_overrides.h:37
SDL_Quit
#define SDL_Quit
Definition:
SDL_dynapi_overrides.h:64
ThreadFunc
int ThreadFunc(void *data)
Definition:
testerror.c:32
SDL_LOG_PRIORITY_INFO
Definition:
SDL_log.h:106
quit
static void quit(int rc)
Definition:
testerror.c:25
SDL_CreateThread
#define SDL_CreateThread
Definition:
SDL_dynapi_overrides.h:47
SDL_Delay
#define SDL_Delay
Definition:
SDL_dynapi_overrides.h:492
SDL_LogSetPriority
#define SDL_LogSetPriority
Definition:
SDL_dynapi_overrides.h:242
NULL
#define NULL
Definition:
begin_code.h:143
SDL_SetError
#define SDL_SetError
Definition:
SDL_dynapi_overrides.h:36
SDL_Thread
Definition:
SDL_thread_c.h:54
SDL_Init
#define SDL_Init
Definition:
SDL_dynapi_overrides.h:60
SDL.h
SDLCALL
#define SDLCALL
Definition:
SDL_internal.h:31
SDL_LOG_CATEGORY_APPLICATION
Definition:
SDL_log.h:66
main
int main(int argc, char *argv[])
Definition:
testerror.c:46
SDL_WaitThread
#define SDL_WaitThread
Definition:
SDL_dynapi_overrides.h:484
alive
static int alive
Definition:
testerror.c:21
test
testerror.c
Generated by
1.8.12