21 #include "../../SDL_internal.h"
23 #if SDL_THREAD_WINDOWS
27 #include "../../core/windows/SDL_windows.h"
49 sem->id = CreateSemaphoreEx(
NULL, initial_value, 32 * 1024,
NULL, 0, SEMAPHORE_ALL_ACCESS);
51 sem->id = CreateSemaphore(
NULL, initial_value, 32 * 1024,
NULL);
53 sem->count = initial_value;
89 dwMilliseconds = INFINITE;
91 dwMilliseconds = (DWORD) timeout;
93 switch (WaitForSingleObjectEx(sem->id, dwMilliseconds,
FALSE)) {
95 InterlockedDecrement(&sem->count);
128 return (
Uint32)sem->count;
142 InterlockedIncrement(&sem->count);
143 if (ReleaseSemaphore(sem->id, 1,
NULL) ==
FALSE) {
144 InterlockedDecrement(&sem->count);