src/thread/SDL_thread.c
changeset 1190 173c063d4f55
parent 769 b8d311d90021
child 1312 c9b51268668f
equal deleted inserted replaced
1189:c96b326b90ba 1190:173c063d4f55
   216 
   216 
   217 	/* Run the function */
   217 	/* Run the function */
   218 	*statusloc = userfunc(userdata);
   218 	*statusloc = userfunc(userdata);
   219 }
   219 }
   220 
   220 
   221 SDL_Thread *SDL_CreateThread(int (*fn)(void *), void *data)
   221 #ifdef __OS2__
       
   222 DECLSPEC SDL_Thread * SDLCALL SDL_CreateThread_Core(int (*fn)(void *), void *data, pfnSDL_CurrentBeginThread pfnBeginThread, pfnSDL_CurrentEndThread pfnEndThread)
       
   223 #else
       
   224 DECLSPEC SDL_Thread * SDLCALL SDL_CreateThread(int (*fn)(void *), void *data)
       
   225 #endif
   222 {
   226 {
   223 	SDL_Thread *thread;
   227 	SDL_Thread *thread;
   224 	thread_args *args;
   228 	thread_args *args;
   225 	int ret;
   229 	int ret;
   226 
   230 
   252 
   256 
   253 	/* Add the thread to the list of available threads */
   257 	/* Add the thread to the list of available threads */
   254 	SDL_AddThread(thread);
   258 	SDL_AddThread(thread);
   255 
   259 
   256 	/* Create the thread and go! */
   260 	/* Create the thread and go! */
       
   261 #ifdef __OS2__
       
   262         ret = SDL_SYS_CreateThread(thread, args, pfnBeginThread, pfnEndThread);
       
   263 #else
   257 	ret = SDL_SYS_CreateThread(thread, args);
   264 	ret = SDL_SYS_CreateThread(thread, args);
       
   265 #endif
   258 	if ( ret >= 0 ) {
   266 	if ( ret >= 0 ) {
   259 		/* Wait for the thread function to use arguments */
   267 		/* Wait for the thread function to use arguments */
   260 		SDL_SemWait(args->wait);
   268 		SDL_SemWait(args->wait);
   261 	} else {
   269 	} else {
   262 		/* Oops, failed.  Gotta free everything */
   270 		/* Oops, failed.  Gotta free everything */