<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglGetError">
    <info>
         <copyright>
             <year>2003-2014</year>
             <holder>The Khronos Group Inc.</holder>
         </copyright>
    </info>
    <refmeta>
        <refentrytitle>eglGetError</refentrytitle>
        <manvolnum>3G</manvolnum>
    </refmeta>
    <refnamediv>
        <refname>eglGetError</refname>
        <refpurpose>
            return error information
        </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>C Specification</title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>EGLint <function>eglGetError</function></funcdef>
                <void/>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>
    <refsect1 xml:id="description"><title>Description</title>
        <para>
            <function>eglGetError</function> returns the error of the last
            called <acronym>EGL</acronym> function in the current thread.
            Initially, the error is set to <constant>EGL_SUCCESS</constant>.
        </para>
        <para>
            When an EGL function could potentially generate several
            different errors (for example, when passed both a bad attribute
            name, and a bad attribute value for a legal attribute name), the
            implementation may choose to generate any one of the applicable
            errors.
        </para>
        <para>
            The following errors are currently defined:
        </para>
        <variablelist>
            <varlistentry>
            <term><constant>EGL_SUCCESS</constant></term>
            <listitem><para>The last function succeeded without error.
            </para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_NOT_INITIALIZED</constant></term>
            <listitem><para>EGL is not initialized, or could not be initialized,
                for the specified EGL display connection.
            </para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_BAD_ACCESS</constant></term>
            <listitem><para>EGL cannot access a requested resource
                (for example a context is bound in another thread).
            </para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_BAD_ALLOC</constant></term>
            <listitem><para>EGL failed to allocate resources for the requested
                operation.</para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_BAD_ATTRIBUTE</constant></term>
            <listitem><para>An unrecognized attribute or attribute value was
                passed in the attribute list.
            </para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_BAD_CONTEXT</constant></term>
            <listitem><para>An <type>EGLContext</type> argument does not name a
                valid EGL rendering context.
            </para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_BAD_CONFIG</constant></term>
            <listitem><para>
                An <type>EGLConfig</type> argument does not name a valid
                EGL frame buffer configuration.
            </para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_BAD_CURRENT_SURFACE</constant></term>
            <listitem><para>The current surface of the calling thread is a window,
                pixel buffer or pixmap that is no longer valid.
            </para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_BAD_DISPLAY</constant></term>
            <listitem><para>An <type>EGLDisplay</type> argument does not name a
                valid EGL display connection.
            </para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_BAD_SURFACE</constant></term>
            <listitem><para>An <type>EGLSurface</type> argument does not name a
                valid surface (window, pixel buffer or pixmap) configured for
                GL rendering.
            </para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_BAD_MATCH</constant></term>
            <listitem><para>Arguments are inconsistent (for example, a valid
                context requires buffers not supplied by a valid surface).
            </para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_BAD_PARAMETER</constant></term>
            <listitem><para>One or more argument values are invalid.</para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_BAD_NATIVE_PIXMAP</constant></term>
            <listitem><para>
                A <type>NativePixmapType</type> argument does not refer to
                a valid native pixmap.
            </para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_BAD_NATIVE_WINDOW</constant></term>
            <listitem><para>A <type>NativeWindowType</type> argument does not refer
                to a valid native window.
            </para></listitem>
            </varlistentry>
            <varlistentry>
            <term><constant>EGL_CONTEXT_LOST</constant></term>
            <listitem><para>
                A power management event has occurred. The application must destroy all
                contexts and reinitialise OpenGL ES state and objects to continue rendering.
            </para></listitem>
            </varlistentry>
        </variablelist>
    </refsect1>
    <refsect1 xml:id="errors"><title>Errors</title>
        <para>
            A call to <function>eglGetError</function> sets the error to
            <constant>EGL_SUCCESS</constant>.
        </para>
    </refsect1>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
</refentry>
