XFlush(3) XLIB FUNCTIONS XFlush(3)

# [NAME](#NAME)

XFlush, XSync, XEventsQueued, XPending - handle output buffer or event queue

# [SYNTAX](#SYNTAX)

int XFlush(Display \**display*);

int XSync(Display \**display*, Bool *discard*);

int XEventsQueued(Display \**display*, int *mode*);

int XPending(Display \**display*);

# [ARGUMENTS](#ARGUMENTS)

[*discard*](#discard)

Specifies a Boolean value that indicates whether **XSync** discards all events on the event queue.

[*display*](#display)

Specifies the connection to the X server.

[*mode*](#mode)

Specifies the mode. You can pass **QueuedAlready**, **QueuedAfterFlush**, or **QueuedAfterReading**.

# [DESCRIPTION](#DESCRIPTION)

The **XFlush** function flushes the output buffer. Most client applications need not use this function because the output buffer is automatically flushed as needed by calls to **XPending**, **XNextEvent**, and **XWindowEvent**. Events generated by the server may be enqueued into the library's event queue.

The **XSync** function flushes the output buffer and then waits until all requests have been received and processed by the X server. Any errors generated must be handled by the error handler. For each protocol error received by Xlib, **XSync** calls the client application's error handling routine (see section 11.8.2). Any events generated by the server are enqueued into the library's event queue.

Finally, if you passed **False**, **XSync** does not discard the events in the queue. If you passed **True**, **XSync** discards all events in the queue, including those events that were on the queue before **XSync** was called. Client applications seldom need to call **XSync**.

If mode is **QueuedAlready**, **XEventsQueued** returns the number of events already in the event queue (and never performs a system call). If mode is **QueuedAfterFlush**, **XEventsQueued** returns the number of events already in the queue if the number is nonzero. If there are no events in the queue, **XEventsQueued** flushes the output buffer, attempts to read more events out of the application's connection, and returns the number read. If mode is **QueuedAfterReading**, **XEventsQueued** returns the number of events already in the queue if the number is nonzero. If there are no events in the queue, **XEventsQueued** attempts to read more events out of the application's connection without flushing the output buffer and returns the number read.

**XEventsQueued** always returns immediately without I/O if there are events already in the queue. **XEventsQueued** with mode **QueuedAfterFlush** is identical in behavior to **XPending**. **XEventsQueued** with mode **QueuedAlready** is identical to the **XQLength** function.

The **XPending** function returns the number of events that have been received from the X server but have not been removed from the event queue. **XPending** is identical to **XEventsQueued** with the mode **QueuedAfterFlush** specified.

# [SEE ALSO](#SEE_ALSO)

[**AllPlanes**(3)](/man/os/libx11/AllPlanes.3), [**XIfEvent**(3)](/man/os/libx11/XIfEvent.3), [**XNextEvent**(3)](/man/os/libx11/XNextEvent.3), [**XPutBackEvent**(3)](/man/os/libx11/XPutBackEvent.3)  
*Xlib - C Language X Interface*

libX11 1.8.14 X Version 11

---

Document: XPending(3) from libx11 1.8.14-r2 (Chainguard OS)
Source: https://gitlab.freedesktop.org/xorg/lib/libx11.git
