Rev 1 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1 | Rev 8 | ||
|---|---|---|---|
| Line 1... | Line 1... | ||
| 1 | /* | 1 | /* | 
| 2 |   Simple DirectMedia Layer | 2 |   Simple DirectMedia Layer | 
| 3 |   Copyright (C) 1997- | 3 |   Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org> | 
| 4 | 4 | ||
| 5 |   This software is provided 'as-is', without any express or implied | 5 |   This software is provided 'as-is', without any express or implied | 
| 6 |   warranty.  In no event will the authors be held liable for any damages | 6 |   warranty.  In no event will the authors be held liable for any damages | 
| 7 |   arising from the use of this software. | 7 |   arising from the use of this software. | 
| 8 | 8 | ||
| Line 52... | Line 52... | ||
| 52 | typedef unsigned int SDL_TLSID; | 52 | typedef unsigned int SDL_TLSID; | 
| 53 | 53 | ||
| 54 | /** | 54 | /** | 
| 55 |  *  The SDL thread priority. | 55 |  *  The SDL thread priority. | 
| 56 |  * | 56 |  * | 
| 57 |  *  \note On many systems you require special privileges to set high priority. | 57 |  *  \note On many systems you require special privileges to set high or time critical priority. | 
| 58 |  */ | 58 |  */ | 
| 59 | typedef enum { | 59 | typedef enum { | 
| 60 | SDL_THREAD_PRIORITY_LOW, | 60 | SDL_THREAD_PRIORITY_LOW, | 
| 61 | SDL_THREAD_PRIORITY_NORMAL, | 61 | SDL_THREAD_PRIORITY_NORMAL, | 
| 62 | 
 | 62 | SDL_THREAD_PRIORITY_HIGH, | 
| - | 63 | SDL_THREAD_PRIORITY_TIME_CRITICAL | |
| 63 | } SDL_ThreadPriority; | 64 | } SDL_ThreadPriority; | 
| 64 | 65 | ||
| 65 | /** | 66 | /** | 
| 66 |  *  The function passed to SDL_CreateThread(). | 67 |  *  The function passed to SDL_CreateThread(). | 
| 67 |  *  It is passed a void* user context parameter and returns an int. | 68 |  *  It is passed a void* user context parameter and returns an int. | 
| Line 102... | Line 103... | ||
| 102 |  */ | 103 |  */ | 
| 103 | extern DECLSPEC SDL_Thread *SDLCALL | 104 | extern DECLSPEC SDL_Thread *SDLCALL | 
| 104 | SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, | 105 | SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, | 
| 105 | pfnSDL_CurrentBeginThread pfnBeginThread, | 106 | pfnSDL_CurrentBeginThread pfnBeginThread, | 
| 106 | pfnSDL_CurrentEndThread pfnEndThread); | 107 | pfnSDL_CurrentEndThread pfnEndThread); | 
| - | 108 | ||
| - | 109 | extern DECLSPEC SDL_Thread *SDLCALL | |
| - | 110 | SDL_CreateThreadWithStackSize(int (SDLCALL * fn) (void *), | |
| - | 111 | const char *name, const size_t stacksize, void *data, | |
| - | 112 | pfnSDL_CurrentBeginThread pfnBeginThread, | |
| - | 113 | pfnSDL_CurrentEndThread pfnEndThread); | |
| - | 114 | ||
| 107 | 115 | ||
| 108 | /** | 116 | /** | 
| 109 |  *  Create a thread. | 117 |  *  Create a thread. | 
| 110 |  */ | 118 |  */ | 
| 111 | #if defined(SDL_CreateThread) && SDL_DYNAMIC_API | 119 | #if defined(SDL_CreateThread) && SDL_DYNAMIC_API | 
| 112 | #undef SDL_CreateThread | 120 | #undef SDL_CreateThread | 
| 113 | #define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) | 121 | #define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) | 
| - | 122 | #undef SDL_CreateThreadWithStackSize | |
| - | 123 | #define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) | |
| 114 | #else | 124 | #else | 
| 115 | #define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) | 125 | #define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) | 
| - | 126 | #define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) | |
| 116 | #endif | 127 | #endif | 
| 117 | 128 | ||
| 118 | #elif defined(__OS2__) | 129 | #elif defined(__OS2__) | 
| 119 | /* | 130 | /* | 
| 120 |  * just like the windows case above:  We compile SDL2 | 131 |  * just like the windows case above:  We compile SDL2 | 
| Line 128... | Line 139... | ||
| 128 | #endif | 139 | #endif | 
| 129 | typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/); | 140 | typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/); | 
| 130 | typedef void (*pfnSDL_CurrentEndThread)(void); | 141 | typedef void (*pfnSDL_CurrentEndThread)(void); | 
| 131 | extern DECLSPEC SDL_Thread *SDLCALL | 142 | extern DECLSPEC SDL_Thread *SDLCALL | 
| 132 | SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, | 143 | SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, | 
| - | 144 | pfnSDL_CurrentBeginThread pfnBeginThread, | |
| - | 145 | pfnSDL_CurrentEndThread pfnEndThread); | |
| - | 146 | extern DECLSPEC SDL_Thread *SDLCALL | |
| - | 147 | SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data, | |
| 133 | pfnSDL_CurrentBeginThread pfnBeginThread, | 148 | pfnSDL_CurrentBeginThread pfnBeginThread, | 
| 134 | pfnSDL_CurrentEndThread pfnEndThread); | 149 | pfnSDL_CurrentEndThread pfnEndThread); | 
| 135 | #if defined(SDL_CreateThread) && SDL_DYNAMIC_API | 150 | #if defined(SDL_CreateThread) && SDL_DYNAMIC_API | 
| 136 | #undef SDL_CreateThread | 151 | #undef SDL_CreateThread | 
| 137 | #define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread) | 152 | #define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread) | 
| - | 153 | #undef SDL_CreateThreadWithStackSize | |
| - | 154 | #define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread) | |
| 138 | #else | 155 | #else | 
| 139 | #define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread) | 156 | #define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread) | 
| - | 157 | #define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread) | |
| 140 | #endif | 158 | #endif | 
| 141 | 159 | ||
| 142 | #else | 160 | #else | 
| - | 161 | ||
| - | 162 | /** | |
| - | 163 |  *  Create a thread with a default stack size. | |
| - | 164 |  * | |
| - | 165 |  *  This is equivalent to calling: | |
| - | 166 |  *  SDL_CreateThreadWithStackSize(fn, name, 0, data); | |
| - | 167 |  */ | |
| - | 168 | extern DECLSPEC SDL_Thread *SDLCALL | |
| - | 169 | SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); | |
| 143 | 170 | ||
| 144 | /** | 171 | /** | 
| 145 |  *  Create a thread. | 172 |  *  Create a thread. | 
| 146 |  * | 173 |  * | 
| 147 |  *   Thread naming is a little complicated: Most systems have very small | 174 |  *   Thread naming is a little complicated: Most systems have very small | 
| Line 156... | Line 183... | ||
| 156 |  *    http://stackoverflow.com/questions/149932/naming-conventions-for-threads | 183 |  *    http://stackoverflow.com/questions/149932/naming-conventions-for-threads | 
| 157 |  * | 184 |  * | 
| 158 |  *   If a system imposes requirements, SDL will try to munge the string for | 185 |  *   If a system imposes requirements, SDL will try to munge the string for | 
| 159 |  *    it (truncate, etc), but the original string contents will be available | 186 |  *    it (truncate, etc), but the original string contents will be available | 
| 160 |  *    from SDL_GetThreadName(). | 187 |  *    from SDL_GetThreadName(). | 
| - | 188 |  * | |
| - | 189 |  *   The size (in bytes) of the new stack can be specified. Zero means "use | |
| - | 190 |  *    the system default" which might be wildly different between platforms | |
| - | 191 |  *    (x86 Linux generally defaults to eight megabytes, an embedded device | |
| - | 192 |  *    might be a few kilobytes instead). | |
| - | 193 |  * | |
| - | 194 |  *   In SDL 2.1, stacksize will be folded into the original SDL_CreateThread | |
| - | 195 |  *    function. | |
| 161 |  */ | 196 |  */ | 
| 162 | extern DECLSPEC SDL_Thread *SDLCALL | 197 | extern DECLSPEC SDL_Thread *SDLCALL | 
| 163 | 
 | 198 | SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data); | 
| 164 | 199 | ||
| 165 | #endif | 200 | #endif | 
| 166 | 201 | ||
| 167 | /** | 202 | /** | 
| 168 |  * Get the thread name, as it was specified in SDL_CreateThread(). | 203 |  * Get the thread name, as it was specified in SDL_CreateThread(). |