Still fighting with calling conventions in Cygwin/MingW/VisualC...
--HG-- branch : SDL-1.2
This commit is contained in:
parent
a4f2d4f2ce
commit
07f5929948
1 changed files with 13 additions and 3 deletions
|
@ -60,7 +60,7 @@ typedef struct ThreadStartParms
|
||||||
pfnSDL_CurrentEndThread pfnCurrentEndThread;
|
pfnSDL_CurrentEndThread pfnCurrentEndThread;
|
||||||
} tThreadStartParms, *pThreadStartParms;
|
} tThreadStartParms, *pThreadStartParms;
|
||||||
|
|
||||||
static DWORD WINAPI RunThread(LPVOID data)
|
static DWORD RunThread(void *data)
|
||||||
{
|
{
|
||||||
pThreadStartParms pThreadParms = (pThreadStartParms)data;
|
pThreadStartParms pThreadParms = (pThreadStartParms)data;
|
||||||
pfnSDL_CurrentEndThread pfnCurrentEndThread = NULL;
|
pfnSDL_CurrentEndThread pfnCurrentEndThread = NULL;
|
||||||
|
@ -80,6 +80,16 @@ static DWORD WINAPI RunThread(LPVOID data)
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static DWORD WINAPI RunThreadViaCreateThread(LPVOID data)
|
||||||
|
{
|
||||||
|
return RunThread(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static unsigned __stdcall RunThreadViaBeginThreadEx(void *data)
|
||||||
|
{
|
||||||
|
return (unsigned) RunThread(data);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef SDL_PASSED_BEGINTHREAD_ENDTHREAD
|
#ifdef SDL_PASSED_BEGINTHREAD_ENDTHREAD
|
||||||
int SDL_SYS_CreateThread(SDL_Thread *thread, void *args, pfnSDL_CurrentBeginThread pfnBeginThread, pfnSDL_CurrentEndThread pfnEndThread)
|
int SDL_SYS_CreateThread(SDL_Thread *thread, void *args, pfnSDL_CurrentBeginThread pfnBeginThread, pfnSDL_CurrentEndThread pfnEndThread)
|
||||||
{
|
{
|
||||||
|
@ -108,11 +118,11 @@ int SDL_SYS_CreateThread(SDL_Thread *thread, void *args)
|
||||||
if (pfnBeginThread) {
|
if (pfnBeginThread) {
|
||||||
unsigned threadid = 0;
|
unsigned threadid = 0;
|
||||||
thread->handle = (SYS_ThreadHandle)
|
thread->handle = (SYS_ThreadHandle)
|
||||||
((size_t) pfnBeginThread(NULL, 0, RunThread,
|
((size_t) pfnBeginThread(NULL, 0, RunThreadViaBeginThreadEx,
|
||||||
pThreadParms, 0, &threadid));
|
pThreadParms, 0, &threadid));
|
||||||
} else {
|
} else {
|
||||||
DWORD threadid = 0;
|
DWORD threadid = 0;
|
||||||
thread->handle = CreateThread(NULL, 0, RunThread, pThreadParms, 0, &threadid);
|
thread->handle = CreateThread(NULL, 0, RunThreadViaCreateThread, pThreadParms, 0, &threadid);
|
||||||
}
|
}
|
||||||
if (thread->handle == NULL) {
|
if (thread->handle == NULL) {
|
||||||
SDL_SetError("Not enough resources to create thread");
|
SDL_SetError("Not enough resources to create thread");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue