Lines Matching refs:sem
42 SDL_sem *sem; in SDL_CreateSemaphore() local
45 sem = (SDL_sem *) SDL_malloc(sizeof(*sem)); in SDL_CreateSemaphore()
46 if (sem) { in SDL_CreateSemaphore()
49 sem->id = CreateSemaphoreEx(NULL, initial_value, 32 * 1024, NULL, 0, SEMAPHORE_ALL_ACCESS); in SDL_CreateSemaphore()
51 sem->id = CreateSemaphore(NULL, initial_value, 32 * 1024, NULL); in SDL_CreateSemaphore()
53 sem->count = initial_value; in SDL_CreateSemaphore()
54 if (!sem->id) { in SDL_CreateSemaphore()
56 SDL_free(sem); in SDL_CreateSemaphore()
57 sem = NULL; in SDL_CreateSemaphore()
62 return (sem); in SDL_CreateSemaphore()
67 SDL_DestroySemaphore(SDL_sem * sem) in SDL_DestroySemaphore() argument
69 if (sem) { in SDL_DestroySemaphore()
70 if (sem->id) { in SDL_DestroySemaphore()
71 CloseHandle(sem->id); in SDL_DestroySemaphore()
72 sem->id = 0; in SDL_DestroySemaphore()
74 SDL_free(sem); in SDL_DestroySemaphore()
79 SDL_SemWaitTimeout(SDL_sem * sem, Uint32 timeout) in SDL_SemWaitTimeout() argument
84 if (!sem) { in SDL_SemWaitTimeout()
93 switch (WaitForSingleObjectEx(sem->id, dwMilliseconds, FALSE)) { in SDL_SemWaitTimeout()
95 InterlockedDecrement(&sem->count); in SDL_SemWaitTimeout()
109 SDL_SemTryWait(SDL_sem * sem) in SDL_SemTryWait() argument
111 return SDL_SemWaitTimeout(sem, 0); in SDL_SemTryWait()
115 SDL_SemWait(SDL_sem * sem) in SDL_SemWait() argument
117 return SDL_SemWaitTimeout(sem, SDL_MUTEX_MAXWAIT); in SDL_SemWait()
122 SDL_SemValue(SDL_sem * sem) in SDL_SemValue() argument
124 if (!sem) { in SDL_SemValue()
128 return (Uint32)sem->count; in SDL_SemValue()
132 SDL_SemPost(SDL_sem * sem) in SDL_SemPost() argument
134 if (!sem) { in SDL_SemPost()
142 InterlockedIncrement(&sem->count); in SDL_SemPost()
143 if (ReleaseSemaphore(sem->id, 1, NULL) == FALSE) { in SDL_SemPost()
144 InterlockedDecrement(&sem->count); /* restore */ in SDL_SemPost()