sdlWaitConditionTimeout function

bool sdlWaitConditionTimeout(
  1. Pointer<SdlCondition> cond,
  2. Pointer<SdlMutex> mutex,
  3. int timeoutMs
)

Wait until a condition variable is signaled or a certain time has passed.

This function unlocks the specified mutex and waits for another thread to call SDL_SignalCondition() or SDL_BroadcastCondition() on the condition variable cond, or for the specified time to elapse. Once the condition variable is signaled or the time elapsed, the mutex is re-locked and the function returns.

The mutex must be locked before calling this function. Locking the mutex recursively (more than once) is not supported and leads to undefined behavior.

\param cond the condition variable to wait on. \param mutex the mutex used to coordinate thread access. \param timeoutMS the maximum time to wait, in milliseconds, or -1 to wait indefinitely. \returns true if the condition variable is signaled, false if the condition is not signaled in the allotted time.

\threadsafety It is safe to call this function from any thread.

\since This function is available since SDL 3.1.3.

\sa SDL_BroadcastCondition \sa SDL_SignalCondition \sa SDL_WaitCondition

extern SDL_DECLSPEC bool SDLCALL SDL_WaitConditionTimeout(SDL_Condition *cond, SDL_Mutex *mutex, Sint32 timeoutMS)

Implementation

bool sdlWaitConditionTimeout(
    Pointer<SdlCondition> cond, Pointer<SdlMutex> mutex, int timeoutMs) {
  final sdlWaitConditionTimeoutLookupFunction = libSdl3.lookupFunction<
      Uint8 Function(
          Pointer<SdlCondition> cond, Pointer<SdlMutex> mutex, Int32 timeoutMs),
      int Function(Pointer<SdlCondition> cond, Pointer<SdlMutex> mutex,
          int timeoutMs)>('SDL_WaitConditionTimeout');
  return sdlWaitConditionTimeoutLookupFunction(cond, mutex, timeoutMs) == 1;
}