Pth threading bug fix

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40398
This commit is contained in:
Sam Lantinga 2002-06-10 20:42:02 +00:00
parent 60236871ea
commit dee1deebe1
3 changed files with 12 additions and 11 deletions

View file

@ -150,6 +150,12 @@ int SDL_InitSubSystem(Uint32 flags)
int SDL_Init(Uint32 flags)
{
#if !defined(DISABLE_THREADS) && defined(ENABLE_PTH)
if (!pth_init()) {
return -1;
}
#endif
/* Clear the error message */
SDL_ClearError();
@ -223,6 +229,10 @@ void SDL_Quit(void)
/* Uninstall any parachute signal handlers */
SDL_UninstallParachute();
#if !defined(DISABLE_THREADS) && defined(ENABLE_PTH)
pth_kill();
#endif
}
/* Return the library version number */

View file

@ -52,12 +52,6 @@ int SDL_ThreadsInit(void)
{
int retval;
#ifdef ENABLE_PTH
if (!pth_init()) {
return -1;
}
#endif
retval = 0;
/* Set the thread lock creation flag so that we can reuse an
existing lock on the system - since this mutex never gets
@ -86,10 +80,6 @@ void SDL_ThreadsQuit()
if ( mutex != NULL ) {
SDL_DestroyMutex(mutex);
}
#ifdef ENABLE_PTH
pth_kill();
#endif
}
/* Routines for manipulating the thread list */

View file

@ -64,7 +64,8 @@ int SDL_SYS_CreateThread(SDL_Thread *thread, void *args)
pth_attr_set(type, PTH_ATTR_JOINABLE, TRUE);
/* 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");
return(-1);
}