Lines Matching refs:cond

46     SDL_cond *cond;  in SDL_CreateCond()  local
48 cond = (SDL_cond *) SDL_malloc(sizeof(SDL_cond)); in SDL_CreateCond()
49 if (cond) { in SDL_CreateCond()
50 cond->lock = SDL_CreateMutex(); in SDL_CreateCond()
51 cond->wait_sem = SDL_CreateSemaphore(0); in SDL_CreateCond()
52 cond->wait_done = SDL_CreateSemaphore(0); in SDL_CreateCond()
53 cond->waiting = cond->signals = 0; in SDL_CreateCond()
54 if (!cond->lock || !cond->wait_sem || !cond->wait_done) { in SDL_CreateCond()
55 SDL_DestroyCond(cond); in SDL_CreateCond()
56 cond = NULL; in SDL_CreateCond()
61 return (cond); in SDL_CreateCond()
66 SDL_DestroyCond(SDL_cond * cond) in SDL_DestroyCond() argument
68 if (cond) { in SDL_DestroyCond()
69 if (cond->wait_sem) { in SDL_DestroyCond()
70 SDL_DestroySemaphore(cond->wait_sem); in SDL_DestroyCond()
72 if (cond->wait_done) { in SDL_DestroyCond()
73 SDL_DestroySemaphore(cond->wait_done); in SDL_DestroyCond()
75 if (cond->lock) { in SDL_DestroyCond()
76 SDL_DestroyMutex(cond->lock); in SDL_DestroyCond()
78 SDL_free(cond); in SDL_DestroyCond()
84 SDL_CondSignal(SDL_cond * cond) in SDL_CondSignal() argument
86 if (!cond) { in SDL_CondSignal()
93 SDL_LockMutex(cond->lock); in SDL_CondSignal()
94 if (cond->waiting > cond->signals) { in SDL_CondSignal()
95 ++cond->signals; in SDL_CondSignal()
96 SDL_SemPost(cond->wait_sem); in SDL_CondSignal()
97 SDL_UnlockMutex(cond->lock); in SDL_CondSignal()
98 SDL_SemWait(cond->wait_done); in SDL_CondSignal()
100 SDL_UnlockMutex(cond->lock); in SDL_CondSignal()
108 SDL_CondBroadcast(SDL_cond * cond) in SDL_CondBroadcast() argument
110 if (!cond) { in SDL_CondBroadcast()
117 SDL_LockMutex(cond->lock); in SDL_CondBroadcast()
118 if (cond->waiting > cond->signals) { in SDL_CondBroadcast()
121 num_waiting = (cond->waiting - cond->signals); in SDL_CondBroadcast()
122 cond->signals = cond->waiting; in SDL_CondBroadcast()
124 SDL_SemPost(cond->wait_sem); in SDL_CondBroadcast()
129 SDL_UnlockMutex(cond->lock); in SDL_CondBroadcast()
131 SDL_SemWait(cond->wait_done); in SDL_CondBroadcast()
134 SDL_UnlockMutex(cond->lock); in SDL_CondBroadcast()
162 SDL_CondWaitTimeout(SDL_cond * cond, SDL_mutex * mutex, Uint32 ms) in SDL_CondWaitTimeout() argument
166 if (!cond) { in SDL_CondWaitTimeout()
174 SDL_LockMutex(cond->lock); in SDL_CondWaitTimeout()
175 ++cond->waiting; in SDL_CondWaitTimeout()
176 SDL_UnlockMutex(cond->lock); in SDL_CondWaitTimeout()
183 retval = SDL_SemWait(cond->wait_sem); in SDL_CondWaitTimeout()
185 retval = SDL_SemWaitTimeout(cond->wait_sem, ms); in SDL_CondWaitTimeout()
194 SDL_LockMutex(cond->lock); in SDL_CondWaitTimeout()
195 if (cond->signals > 0) { in SDL_CondWaitTimeout()
198 SDL_SemWait(cond->wait_sem); in SDL_CondWaitTimeout()
201 SDL_SemPost(cond->wait_done); in SDL_CondWaitTimeout()
204 --cond->signals; in SDL_CondWaitTimeout()
206 --cond->waiting; in SDL_CondWaitTimeout()
207 SDL_UnlockMutex(cond->lock); in SDL_CondWaitTimeout()
217 SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex) in SDL_CondWait() argument
219 return SDL_CondWaitTimeout(cond, mutex, SDL_MUTEX_MAXWAIT); in SDL_CondWait()