| | |
| | | |
| | | static SDL_TLSID tls; |
| | | static int alive = 0; |
| | | static int testprio = 0; |
| | | |
| | | /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ |
| | | static void |
| | |
| | | exit(rc); |
| | | } |
| | | |
| | | static const char * |
| | | getprioritystr(SDL_ThreadPriority priority) |
| | | { |
| | | switch(priority) |
| | | { |
| | | case SDL_THREAD_PRIORITY_LOW: return "SDL_THREAD_PRIORITY_LOW"; |
| | | case SDL_THREAD_PRIORITY_NORMAL: return "SDL_THREAD_PRIORITY_NORMAL"; |
| | | case SDL_THREAD_PRIORITY_HIGH: return "SDL_THREAD_PRIORITY_HIGH"; |
| | | case SDL_THREAD_PRIORITY_TIME_CRITICAL: return "SDL_THREAD_PRIORITY_TIME_CRITICAL"; |
| | | } |
| | | |
| | | return "???"; |
| | | } |
| | | |
| | | int SDLCALL |
| | | ThreadFunc(void *data) |
| | | { |
| | | SDL_ThreadPriority prio = SDL_THREAD_PRIORITY_NORMAL; |
| | | |
| | | SDL_TLSSet(tls, "baby thread", NULL); |
| | | SDL_Log("Started thread %s: My thread id is %lu, thread data = %s\n", |
| | | (char *) data, SDL_ThreadID(), (const char *)SDL_TLSGet(tls)); |
| | | while (alive) { |
| | | SDL_Log("Thread '%s' is alive!\n", (char *) data); |
| | | |
| | | if (testprio) { |
| | | SDL_Log("SDL_SetThreadPriority(%s):%d\n", getprioritystr(prio), SDL_SetThreadPriority(prio)); |
| | | if (++prio > SDL_THREAD_PRIORITY_TIME_CRITICAL) |
| | | prio = SDL_THREAD_PRIORITY_LOW; |
| | | } |
| | | |
| | | SDL_Delay(1 * 1000); |
| | | } |
| | | SDL_Log("Thread '%s' exiting!\n", (char *) data); |
| | |
| | | int |
| | | main(int argc, char *argv[]) |
| | | { |
| | | int arg = 1; |
| | | SDL_Thread *thread; |
| | | |
| | | /* Enable standard application logging */ |
| | |
| | | return (1); |
| | | } |
| | | |
| | | while (argv[arg] && *argv[arg] == '-') { |
| | | if (SDL_strcmp(argv[arg], "--prio") == 0) { |
| | | testprio = 1; |
| | | } |
| | | ++arg; |
| | | } |
| | | |
| | | tls = SDL_TLSCreate(); |
| | | SDL_assert(tls); |
| | | SDL_TLSSet(tls, "main thread", NULL); |