comparison include/SDL_thread.h @ 1895:c121d94672cb

SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
author Sam Lantinga <slouken@libsdl.org>
date Mon, 10 Jul 2006 21:04:37 +0000
parents d5d3a6fe05a1
children 5f6550e5184f
comparison
equal deleted inserted replaced
1894:c69cee13dd76 1895:c121d94672cb
21 */ 21 */
22 22
23 #ifndef _SDL_thread_h 23 #ifndef _SDL_thread_h
24 #define _SDL_thread_h 24 #define _SDL_thread_h
25 25
26 /* Header for the SDL thread management routines 26 /**
27 27 * \file SDL_thread.h
28 These are independent of the other SDL routines. 28 *
29 */ 29 * Header for the SDL thread management routines
30 */
30 31
31 #include "SDL_stdinc.h" 32 #include "SDL_stdinc.h"
32 #include "SDL_error.h" 33 #include "SDL_error.h"
33 34
34 /* Thread synchronization primitives */ 35 /* Thread synchronization primitives */
35 #include "SDL_mutex.h" 36 #include "SDL_mutex.h"
36 37
37 #include "begin_code.h" 38 #include "begin_code.h"
38 /* Set up for C function definitions, even when using C++ */ 39 /* Set up for C function definitions, even when using C++ */
39 #ifdef __cplusplus 40 #ifdef __cplusplus
41 /* *INDENT-OFF* */
40 extern "C" { 42 extern "C" {
43 /* *INDENT-ON* */
41 #endif 44 #endif
42 45
43 /* The SDL thread structure, defined in SDL_thread.c */ 46 /* The SDL thread structure, defined in SDL_thread.c */
44 struct SDL_Thread; 47 struct SDL_Thread;
45 typedef struct SDL_Thread SDL_Thread; 48 typedef struct SDL_Thread SDL_Thread;
59 So, in short: 62 So, in short:
60 Always use the _beginthread() and _endthread() of the calling runtime library! 63 Always use the _beginthread() and _endthread() of the calling runtime library!
61 */ 64 */
62 #define SDL_PASSED_BEGINTHREAD_ENDTHREAD 65 #define SDL_PASSED_BEGINTHREAD_ENDTHREAD
63 #ifndef _WIN32_WCE 66 #ifndef _WIN32_WCE
64 #include <process.h> /* This has _beginthread() and _endthread() defined! */ 67 #include <process.h> /* This has _beginthread() and _endthread() defined! */
65 #endif 68 #endif
66 69
67 #ifdef __OS2__ 70 #ifdef __OS2__
68 typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void *arg); 71 typedef int (*pfnSDL_CurrentBeginThread) (void (*func) (void *), void *,
69 typedef void (*pfnSDL_CurrentEndThread)(void); 72 unsigned, void *arg);
73 typedef void (*pfnSDL_CurrentEndThread) (void);
70 #elif __GNUC__ 74 #elif __GNUC__
71 typedef unsigned long (__cdecl *pfnSDL_CurrentBeginThread) (void *, unsigned, 75 typedef unsigned long (__cdecl * pfnSDL_CurrentBeginThread) (void *, unsigned,
72 unsigned (__stdcall *func)(void *), void *arg, 76 unsigned
73 unsigned, unsigned *threadID); 77 (__stdcall *
74 typedef void (__cdecl *pfnSDL_CurrentEndThread)(unsigned code); 78 func) (void *),
79 void *arg,
80 unsigned,
81 unsigned
82 *threadID);
83 typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code);
75 #else 84 #else
76 typedef uintptr_t (__cdecl *pfnSDL_CurrentBeginThread) (void *, unsigned, 85 typedef uintptr_t(__cdecl * pfnSDL_CurrentBeginThread) (void *, unsigned,
77 unsigned (__stdcall *func)(void *), void *arg, 86 unsigned (__stdcall *
78 unsigned, unsigned *threadID); 87 func) (void
79 typedef void (__cdecl *pfnSDL_CurrentEndThread)(unsigned code); 88 *),
89 void *arg, unsigned,
90 unsigned *threadID);
91 typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code);
80 #endif 92 #endif
81 93
82 extern DECLSPEC SDL_Thread * SDLCALL SDL_CreateThread(int (SDLCALL *fn)(void *), void *data, pfnSDL_CurrentBeginThread pfnBeginThread, pfnSDL_CurrentEndThread pfnEndThread); 94 extern DECLSPEC SDL_Thread *SDLCALL SDL_CreateThread(int (*fn) (void *),
95 void *data,
96 pfnSDL_CurrentBeginThread
97 pfnBeginThread,
98 pfnSDL_CurrentEndThread
99 pfnEndThread);
83 100
84 #ifdef __OS2__ 101 #ifdef __OS2__
85 #define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, _beginthread, _endthread) 102 #define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, _beginthread, _endthread)
86 #elif defined(_WIN32_WCE) 103 #elif defined(_WIN32_WCE)
87 #define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, NULL, NULL) 104 #define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, NULL, NULL)
88 #else 105 #else
89 #define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, _beginthreadex, _endthreadex) 106 #define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, _beginthreadex, _endthreadex)
90 #endif 107 #endif
91 #else 108 #else
92 extern DECLSPEC SDL_Thread * SDLCALL SDL_CreateThread(int (SDLCALL *fn)(void *), void *data); 109 extern DECLSPEC SDL_Thread *SDLCALL
110 SDL_CreateThread(int (SDLCALL * fn) (void *), void *data);
93 #endif 111 #endif
94 112
95 /* Get the 32-bit thread identifier for the current thread */ 113 /* Get the 32-bit thread identifier for the current thread */
96 extern DECLSPEC Uint32 SDLCALL SDL_ThreadID(void); 114 extern DECLSPEC Uint32 SDLCALL SDL_ThreadID(void);
97 115
98 /* Get the 32-bit thread identifier for the specified thread, 116 /* Get the 32-bit thread identifier for the specified thread,
99 equivalent to SDL_ThreadID() if the specified thread is NULL. 117 equivalent to SDL_ThreadID() if the specified thread is NULL.
100 */ 118 */
101 extern DECLSPEC Uint32 SDLCALL SDL_GetThreadID(SDL_Thread *thread); 119 extern DECLSPEC Uint32 SDLCALL SDL_GetThreadID(SDL_Thread * thread);
102 120
103 /* Wait for a thread to finish. 121 /* Wait for a thread to finish.
104 The return code for the thread function is placed in the area 122 The return code for the thread function is placed in the area
105 pointed to by 'status', if 'status' is not NULL. 123 pointed to by 'status', if 'status' is not NULL.
106 */ 124 */
107 extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread *thread, int *status); 125 extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status);
108 126
109 /* Forcefully kill a thread without worrying about its state */ 127 /* Forcefully kill a thread without worrying about its state */
110 extern DECLSPEC void SDLCALL SDL_KillThread(SDL_Thread *thread); 128 extern DECLSPEC void SDLCALL SDL_KillThread(SDL_Thread * thread);
111 129
112 130
113 /* Ends C function definitions when using C++ */ 131 /* Ends C function definitions when using C++ */
114 #ifdef __cplusplus 132 #ifdef __cplusplus
133 /* *INDENT-OFF* */
115 } 134 }
135 /* *INDENT-ON* */
116 #endif 136 #endif
117 #include "close_code.h" 137 #include "close_code.h"
118 138
119 #endif /* _SDL_thread_h */ 139 #endif /* _SDL_thread_h */
140
141 /* vi: set ts=4 sw=4 expandtab: */