--- a/src/SDL.c Mon Jun 10 20:37:39 2002 +0000
+++ b/src/SDL.c Mon Jun 10 20:42:02 2002 +0000
@@ -150,6 +150,12 @@
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 @@
/* Uninstall any parachute signal handlers */
SDL_UninstallParachute();
+
+#if !defined(DISABLE_THREADS) && defined(ENABLE_PTH)
+ pth_kill();
+#endif
}
/* Return the library version number */
--- a/src/thread/SDL_thread.c Mon Jun 10 20:37:39 2002 +0000
+++ b/src/thread/SDL_thread.c Mon Jun 10 20:42:02 2002 +0000
@@ -52,12 +52,6 @@
{
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 @@
if ( mutex != NULL ) {
SDL_DestroyMutex(mutex);
}
-
-#ifdef ENABLE_PTH
- pth_kill();
-#endif
}
/* Routines for manipulating the thread list */
--- a/src/thread/pth/SDL_systhread.c Mon Jun 10 20:37:39 2002 +0000
+++ b/src/thread/pth/SDL_systhread.c Mon Jun 10 20:42:02 2002 +0000
@@ -64,7 +64,8 @@
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);
}