Commit dee1deeb authored by Sam Lantinga's avatar Sam Lantinga

Pth threading bug fix

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40398
parent 60236871
...@@ -150,6 +150,12 @@ int SDL_InitSubSystem(Uint32 flags) ...@@ -150,6 +150,12 @@ int SDL_InitSubSystem(Uint32 flags)
int SDL_Init(Uint32 flags) int SDL_Init(Uint32 flags)
{ {
#if !defined(DISABLE_THREADS) && defined(ENABLE_PTH)
if (!pth_init()) {
return -1;
}
#endif
/* Clear the error message */ /* Clear the error message */
SDL_ClearError(); SDL_ClearError();
...@@ -223,6 +229,10 @@ void SDL_Quit(void) ...@@ -223,6 +229,10 @@ void SDL_Quit(void)
/* Uninstall any parachute signal handlers */ /* Uninstall any parachute signal handlers */
SDL_UninstallParachute(); SDL_UninstallParachute();
#if !defined(DISABLE_THREADS) && defined(ENABLE_PTH)
pth_kill();
#endif
} }
/* Return the library version number */ /* Return the library version number */
......
...@@ -52,12 +52,6 @@ int SDL_ThreadsInit(void) ...@@ -52,12 +52,6 @@ int SDL_ThreadsInit(void)
{ {
int retval; int retval;
#ifdef ENABLE_PTH
if (!pth_init()) {
return -1;
}
#endif
retval = 0; retval = 0;
/* Set the thread lock creation flag so that we can reuse an /* Set the thread lock creation flag so that we can reuse an
existing lock on the system - since this mutex never gets existing lock on the system - since this mutex never gets
...@@ -86,10 +80,6 @@ void SDL_ThreadsQuit() ...@@ -86,10 +80,6 @@ void SDL_ThreadsQuit()
if ( mutex != NULL ) { if ( mutex != NULL ) {
SDL_DestroyMutex(mutex); SDL_DestroyMutex(mutex);
} }
#ifdef ENABLE_PTH
pth_kill();
#endif
} }
/* Routines for manipulating the thread list */ /* Routines for manipulating the thread list */
......
...@@ -64,7 +64,8 @@ int SDL_SYS_CreateThread(SDL_Thread *thread, void *args) ...@@ -64,7 +64,8 @@ int SDL_SYS_CreateThread(SDL_Thread *thread, void *args)
pth_attr_set(type, PTH_ATTR_JOINABLE, TRUE); pth_attr_set(type, PTH_ATTR_JOINABLE, TRUE);
/* Create the thread and go! */ /* Create the thread and go! */
if ( pth_spawn(type, RunThread, args) == NULL ) { thread->handle = pth_spawn(type, RunThread, args);
if ( thread->handle == NULL ) {
SDL_SetError("Not enough resources to create thread"); SDL_SetError("Not enough resources to create thread");
return(-1); return(-1);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment