## Name

glClientWaitSync — block and wait for a sync object to become signaled

## C Specification

`GLenum glClientWaitSync(` | GLsync sync,
| GLbitfield flags,
| GLuint64 timeout`)`;

## Parameters

`sync`

  The sync object whose status to wait on.

`flags`

  A bitfield controlling the command flushing behavior. `flags` may be `GL_SYNC_FLUSH_COMMANDS_BIT`.

`timeout`

  The timeout, specified in nanoseconds, for which the implementation should wait for `sync` to become signaled.

## Description

`glClientWaitSync` causes the client to block and wait for the sync object specified by `sync` to become signaled. If `sync` is signaled when `glClientWaitSync` is called, `glClientWaitSync` returns immediately, otherwise it will block and wait for up to `timeout` nanoseconds for `sync` to become signaled.

The return value is one of four status values:

- `GL_ALREADY_SIGNALED` indicates that `sync` was signaled at the time that `glClientWaitSync` was called.

- `GL_TIMEOUT_EXPIRED` indicates that at least `timeout` nanoseconds passed and `sync` did not become signaled.

- `GL_CONDITION_SATISFIED` indicates that `sync` was signaled before the timeout expired.

- `GL_WAIT_FAILED` indicates that an error occurred. Additionally, an OpenGL error will be generated.

## Notes

`glClientWaitSync` is available only if the GL version is 3.2 or greater.

## Errors

`GL_INVALID_VALUE` is generated if `sync` is not the name of an existing sync object.

`GL_INVALID_VALUE` is generated if `flags` contains any unsupported flag.

## See Also

glFenceSync, glIsSync glWaitSync

## Copyright

Copyright © 2010 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.