# Test for a hard to fix internal error
# occured in the SDL library

{.push dynlib: "SDL.dll", callconv: cdecl.}

type
  PSDL_semaphore = ptr TSDL_semaphore
  TSDL_semaphore {.final.} = object
    sem: Pointer             #PSem_t;
    when not defined(USE_NAMED_SEMAPHORES):
      sem_data: int
    when defined(BROKEN_SEMGETVALUE):
      # This is a little hack for MacOS X -
      # It's not thread-safe, but it's better than nothing
      sem_value: cint

type
  PSDL_Sem = ptr TSDL_Sem
  TSDL_Sem = TSDL_Semaphore

proc SDL_CreateSemaphore(initial_value: Int32): PSDL_Sem {.
  importc: "SDL_CreateSemaphore".}