Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Pth threading bug fix
- Loading branch information
Showing
with
12 additions
and
11 deletions.
-
+10
−0
src/SDL.c
-
+0
−10
src/thread/SDL_thread.c
-
+2
−1
src/thread/pth/SDL_systhread.c
|
@@ -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 */ |
|
|
|
@@ -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 */ |
|
|
|
@@ -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); |
|
|
} |
|
|
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.