Mercurial > sdl-ios-xcode
diff src/thread/pthread/SDL_syscond.c @ 1895:c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 10 Jul 2006 21:04:37 +0000 |
parents | d910939febfa |
children | 99210400e8b9 |
line wrap: on
line diff
--- a/src/thread/pthread/SDL_syscond.c Thu Jul 06 18:01:37 2006 +0000 +++ b/src/thread/pthread/SDL_syscond.c Mon Jul 10 21:04:37 2006 +0000 @@ -31,125 +31,133 @@ struct SDL_cond { - pthread_cond_t cond; + pthread_cond_t cond; }; /* Create a condition variable */ -SDL_cond * SDL_CreateCond(void) +SDL_cond * +SDL_CreateCond(void) { - SDL_cond *cond; + SDL_cond *cond; - cond = (SDL_cond *) SDL_malloc(sizeof(SDL_cond)); - if ( cond ) { - if ( pthread_cond_init(&cond->cond, NULL) < 0 ) { - SDL_SetError("pthread_cond_init() failed"); - SDL_free(cond); - cond = NULL; - } - } - return(cond); + cond = (SDL_cond *) SDL_malloc(sizeof(SDL_cond)); + if (cond) { + if (pthread_cond_init(&cond->cond, NULL) < 0) { + SDL_SetError("pthread_cond_init() failed"); + SDL_free(cond); + cond = NULL; + } + } + return (cond); } /* Destroy a condition variable */ -void SDL_DestroyCond(SDL_cond *cond) +void +SDL_DestroyCond(SDL_cond * cond) { - if ( cond ) { - pthread_cond_destroy(&cond->cond); - SDL_free(cond); - } + if (cond) { + pthread_cond_destroy(&cond->cond); + SDL_free(cond); + } } /* Restart one of the threads that are waiting on the condition variable */ -int SDL_CondSignal(SDL_cond *cond) +int +SDL_CondSignal(SDL_cond * cond) { - int retval; + int retval; - if ( ! cond ) { - SDL_SetError("Passed a NULL condition variable"); - return -1; - } + if (!cond) { + SDL_SetError("Passed a NULL condition variable"); + return -1; + } - retval = 0; - if ( pthread_cond_signal(&cond->cond) != 0 ) { - SDL_SetError("pthread_cond_signal() failed"); - retval = -1; - } - return retval; + retval = 0; + if (pthread_cond_signal(&cond->cond) != 0) { + SDL_SetError("pthread_cond_signal() failed"); + retval = -1; + } + return retval; } /* Restart all threads that are waiting on the condition variable */ -int SDL_CondBroadcast(SDL_cond *cond) +int +SDL_CondBroadcast(SDL_cond * cond) { - int retval; + int retval; - if ( ! cond ) { - SDL_SetError("Passed a NULL condition variable"); - return -1; - } + if (!cond) { + SDL_SetError("Passed a NULL condition variable"); + return -1; + } - retval = 0; - if ( pthread_cond_broadcast(&cond->cond) != 0 ) { - SDL_SetError("pthread_cond_broadcast() failed"); - retval = -1; - } - return retval; + retval = 0; + if (pthread_cond_broadcast(&cond->cond) != 0) { + SDL_SetError("pthread_cond_broadcast() failed"); + retval = -1; + } + return retval; } -int SDL_CondWaitTimeout(SDL_cond *cond, SDL_mutex *mutex, Uint32 ms) +int +SDL_CondWaitTimeout(SDL_cond * cond, SDL_mutex * mutex, Uint32 ms) { - int retval; - struct timeval delta; - struct timespec abstime; + int retval; + struct timeval delta; + struct timespec abstime; - if ( ! cond ) { - SDL_SetError("Passed a NULL condition variable"); - return -1; - } + if (!cond) { + SDL_SetError("Passed a NULL condition variable"); + return -1; + } - gettimeofday(&delta, NULL); + gettimeofday(&delta, NULL); - abstime.tv_sec = delta.tv_sec + (ms/1000); - abstime.tv_nsec = (delta.tv_usec + (ms%1000) * 1000) * 1000; - if ( abstime.tv_nsec > 1000000000 ) { - abstime.tv_sec += 1; - abstime.tv_nsec -= 1000000000; - } + abstime.tv_sec = delta.tv_sec + (ms / 1000); + abstime.tv_nsec = (delta.tv_usec + (ms % 1000) * 1000) * 1000; + if (abstime.tv_nsec > 1000000000) { + abstime.tv_sec += 1; + abstime.tv_nsec -= 1000000000; + } tryagain: - retval = pthread_cond_timedwait(&cond->cond, &mutex->id, &abstime); - switch (retval) { - case EINTR: - goto tryagain; - break; - case ETIMEDOUT: - retval = SDL_MUTEX_TIMEDOUT; - break; - case 0: - break; - default: - SDL_SetError("pthread_cond_timedwait() failed"); - retval = -1; - break; - } - return retval; + retval = pthread_cond_timedwait(&cond->cond, &mutex->id, &abstime); + switch (retval) { + case EINTR: + goto tryagain; + break; + case ETIMEDOUT: + retval = SDL_MUTEX_TIMEDOUT; + break; + case 0: + break; + default: + SDL_SetError("pthread_cond_timedwait() failed"); + retval = -1; + break; + } + return retval; } /* Wait on the condition variable, unlocking the provided mutex. The mutex must be locked before entering this function! */ -int SDL_CondWait(SDL_cond *cond, SDL_mutex *mutex) +int +SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex) { - int retval; + int retval; + + if (!cond) { + SDL_SetError("Passed a NULL condition variable"); + return -1; + } - if ( ! cond ) { - SDL_SetError("Passed a NULL condition variable"); - return -1; - } + retval = 0; + if (pthread_cond_wait(&cond->cond, &mutex->id) != 0) { + SDL_SetError("pthread_cond_wait() failed"); + retval = -1; + } + return retval; +} - retval = 0; - if ( pthread_cond_wait(&cond->cond, &mutex->id) != 0 ) { - SDL_SetError("pthread_cond_wait() failed"); - retval = -1; - } - return retval; -} +/* vi: set ts=4 sw=4 expandtab: */