SDL
2.0
testerror.c
Go to the documentation of this file.
1
/*
2
Copyright (C) 1997-2018 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
18
#include "
SDL.h
"
19
20
static
int
alive
= 0;
21
22
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
23
static
void
24
quit
(
int
rc)
25
{
26
SDL_Quit
();
27
exit(rc);
28
}
29
30
int
SDLCALL
31
ThreadFunc
(
void
*
data
)
32
{
33
/* Set the child thread error string */
34
SDL_SetError
(
"Thread %s (%lu) had a problem: %s"
,
35
(
char
*) data,
SDL_ThreadID
(),
"nevermind"
);
36
while
(
alive
) {
37
SDL_Log
(
"Thread '%s' is alive!\n"
, (
char
*) data);
38
SDL_Delay
(1 * 1000);
39
}
40
SDL_Log
(
"Child thread error string: %s\n"
,
SDL_GetError
());
41
return
(0);
42
}
43
44
int
45
main
(
int
argc,
char
*argv[])
46
{
47
SDL_Thread
*thread;
48
49
/* Enable standard application logging */
50
SDL_LogSetPriority
(
SDL_LOG_CATEGORY_APPLICATION
,
SDL_LOG_PRIORITY_INFO
);
51
52
/* Load the SDL library */
53
if
(
SDL_Init
(0) < 0) {
54
SDL_LogError
(
SDL_LOG_CATEGORY_APPLICATION
,
"Couldn't initialize SDL: %s\n"
,
SDL_GetError
());
55
return
(1);
56
}
57
58
/* Set the error value for the main thread */
59
SDL_SetError
(
"No worries"
);
60
61
alive
= 1;
62
thread =
SDL_CreateThread
(
ThreadFunc
,
NULL
,
"#1"
);
63
if
(thread ==
NULL
) {
64
SDL_LogError
(
SDL_LOG_CATEGORY_APPLICATION
,
"Couldn't create thread: %s\n"
,
SDL_GetError
());
65
quit
(1);
66
}
67
SDL_Delay
(5 * 1000);
68
SDL_Log
(
"Waiting for thread #1\n"
);
69
alive
= 0;
70
SDL_WaitThread
(thread,
NULL
);
71
72
SDL_Log
(
"Main thread error string: %s\n"
,
SDL_GetError
());
73
74
SDL_Quit
();
75
return
(0);
76
}
SDL_ThreadID
#define SDL_ThreadID
Definition:
SDL_dynapi_overrides.h:475
SDL_GetError
#define SDL_GetError
Definition:
SDL_dynapi_overrides.h:113
data
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition:
SDL_opengl.h:1974
SDL_LogError
#define SDL_LogError
Definition:
SDL_dynapi_overrides.h:36
SDL_Log
#define SDL_Log
Definition:
SDL_dynapi_overrides.h:31
SDL_Quit
#define SDL_Quit
Definition:
SDL_dynapi_overrides.h:58
ThreadFunc
int ThreadFunc(void *data)
Definition:
testerror.c:31
SDL_LOG_PRIORITY_INFO
Definition:
SDL_log.h:106
quit
static void quit(int rc)
Definition:
testerror.c:24
SDL_CreateThread
#define SDL_CreateThread
Definition:
SDL_dynapi_overrides.h:41
SDL_Delay
#define SDL_Delay
Definition:
SDL_dynapi_overrides.h:486
SDL_LogSetPriority
#define SDL_LogSetPriority
Definition:
SDL_dynapi_overrides.h:236
NULL
#define NULL
Definition:
begin_code.h:164
SDL_SetError
#define SDL_SetError
Definition:
SDL_dynapi_overrides.h:30
SDL_Thread
Definition:
SDL_thread_c.h:54
SDL_Init
#define SDL_Init
Definition:
SDL_dynapi_overrides.h:54
SDL.h
SDLCALL
#define SDLCALL
Definition:
SDL_internal.h:45
SDL_LOG_CATEGORY_APPLICATION
Definition:
SDL_log.h:66
main
int main(int argc, char *argv[])
Definition:
testerror.c:45
SDL_WaitThread
#define SDL_WaitThread
Definition:
SDL_dynapi_overrides.h:478
alive
static int alive
Definition:
testerror.c:20
test
testerror.c
Generated by
1.8.13