| <refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglClientWaitSync"> | |
| <info> | |
| <copyright> | |
| <year>2018</year> | |
| <holder>The Khronos Group Inc.</holder> | |
| </copyright> | |
| </info> | |
| <refmeta> | |
| <refentrytitle>eglClientWaitSync</refentrytitle> | |
| <manvolnum>3G</manvolnum> | |
| </refmeta> | |
| <refnamediv> | |
| <refname>eglClientWaitSync</refname> | |
| <refpurpose> | |
| Wait in the client for a sync object to be signalled | |
| </refpurpose> | |
| </refnamediv> | |
| <refsynopsisdiv> | |
| <title>C Specification</title> | |
| <funcsynopsis> | |
| <funcprototype> | |
| <funcdef>EGLint <function>eglClientWaitSync</function></funcdef> | |
| <paramdef>(EGLDisplay <parameter>display</parameter></paramdef> | |
| <paramdef>EGLSync <parameter>sync</parameter></paramdef> | |
| <paramdef>EGLint <parameter>flags</parameter></paramdef> | |
| <paramdef>EGLTime <parameter>timeout</parameter></paramdef> | |
| </funcprototype> | |
| </funcsynopsis> | |
| </refsynopsisdiv> | |
| <refsect1 xml:id="parameters"><title>Parameters</title> | |
| <variablelist> | |
| <varlistentry> | |
| <term><parameter>display</parameter></term> | |
| <listitem><para> | |
| Specifies the <acronym>EGL</acronym> display connection. | |
| </para></listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><parameter>sync</parameter></term> | |
| <listitem><para> | |
| Specifies the sync object to wait on. | |
| </para></listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><parameter>flags</parameter></term> | |
| <listitem><para> | |
| Specifies flags controlling wait behavior. | |
| </para></listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><parameter>timeout</parameter></term> | |
| <listitem><para> | |
| Specifies wait timeout interval. | |
| </para></listitem> | |
| </varlistentry> | |
| </variablelist> | |
| </refsect1> | |
| <refsect1 xml:id="description"><title>Description</title> | |
| <para> | |
| <function>eglClientWaitSync</function> blocks the calling thread | |
| until the specified sync object <parameter>sync</parameter> is | |
| signaled, or until <parameter>timeout</parameter> nanoseconds | |
| have passed. | |
| </para> | |
| <para> | |
| More than one <function>eglClientWaitSync</function> may be | |
| outstanding on the same <parameter>sync</parameter> at any given | |
| time. When there are multiple threads blocked on the same | |
| <parameter>sync</parameter> and the sync object is signaled, all | |
| such threads are released, but the order in which they are | |
| released is not defined. | |
| </para> | |
| <para> | |
| If the value of <parameter>timeout</parameter> is zero, then | |
| <function>eglClientWaitSync</function> simply tests the current | |
| status of <parameter>sync</parameter>. If the value of | |
| <parameter>timeout</parameter> is the special value | |
| <constant>EGL_FOREVER</constant>, then | |
| <function>eglClientWaitSync</function> does not time out. For | |
| all other values, <parameter>timeout</parameter> is adjusted to | |
| the closest value allowed by the implementation-dependent | |
| timeout accuracy, which may be substantially longer than one | |
| nanosecond. | |
| </para> | |
| <para> | |
| <function>eglClientWaitSync</function> returns one of three | |
| status values describing the reason for returning. A return | |
| value of <constant>EGL_TIMEOUT_EXPIRED</constant> indicates that | |
| the specified timeout period expired before | |
| <parameter>sync</parameter> was signaled, or if | |
| <parameter>timeout</parameter> is zero, indicates that | |
| <parameter>sync</parameter> is not signaled. A return value of | |
| <constant>EGL_CONDITION_SATISFIED</constant> indicates that | |
| <parameter>sync</parameter> was signaled before the timeout | |
| expired, which includes the case when | |
| <parameter>sync</parameter> was already signaled when | |
| <function>eglClientWaitSync</function> was called. If an error | |
| occurs then an error is generated and | |
| <constant>EGL_FALSE</constant> is returned. | |
| </para> | |
| <para> | |
| If the sync object being blocked upon will not be signaled in | |
| finite time (for example, by an associated fence command issued | |
| previously, but not yet flushed to the graphics pipeline), then | |
| <function>eglClientWaitSync</function> may wait forever. To help | |
| prevent this behavior, if the | |
| <constant>EGL_SYNC_FLUSH_COMMANDS_BIT</constant> bit is set in | |
| <parameter>flags</parameter>, and <parameter>sync</parameter> is | |
| unsignaled when <function>eglClientWaitSync</function> is | |
| called, then the equivalent of Flush() will be performed for the | |
| current API context (i.e., the context returned by | |
| <function>eglGetCurrentContext</function>) before blocking on | |
| <parameter>sync</parameter>. If no context is current for the | |
| bound API, the <constant>EGL_SYNC_FLUSH_COMMANDS_BIT</constant> | |
| bit is ignored. | |
| </para> | |
| <para> | |
| Note: the simple Flush behavior defined by | |
| <constant>EGL_SYNC_FLUSH_COMMANDS_BIT</constant> will not help | |
| when waiting for a fence command issued in a different context's | |
| command stream. Applications which block on a fence sync object | |
| must take additional steps to ensure that the context from which | |
| the associated fence command was issued has flushed that command | |
| to the graphics pipeline. | |
| </para> | |
| </refsect1> | |
| <refsect1 xml:id="errors"><title>Errors</title> | |
| <para> | |
| <function>eglClientWaitSync</function> returns | |
| <constant>EGL_FALSE</constant> on failure. | |
| </para> | |
| <para> | |
| If <parameter>sync</parameter> is not a valid sync object for | |
| <parameter>display</parameter>, an | |
| <constant>EGL_BAD_PARAMETER</constant> error is generated. | |
| </para> | |
| <para> | |
| If <parameter>display</parameter> does not match the | |
| <type>EGLDisplay</type> passed to | |
| <function>eglCreateSync</function> when | |
| <parameter>sync</parameter> was created, the behaviour is | |
| undefined. | |
| </para> | |
| </refsect1> | |
| <refsect1 xml:id="notes"><title>Notes</title> | |
| <para> | |
| <function>eglClientWaitSync</function> is available only if the | |
| EGL version is 1.5 or greater. | |
| </para> | |
| </refsect1> | |
| <refsect1 xml:id="seealso"><title>See Also</title> | |
| <para> | |
| <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>, | |
| <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>, | |
| <citerefentry><refentrytitle>eglWaitSync</refentrytitle></citerefentry>, | |
| <function>glFinish</function>, | |
| <function>vgFinish</function> | |
| </para> | |
| </refsect1> | |
| <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/> | |
| </refentry> |