---
name: "XFlush"
section: "3"
platform: "linux"
package: "libx11"
version: "1.8.14-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/XFlush"
---

# XFlush(3)

handle output buffer or event queue

## NAME

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

## SYNTAX

int XFlush(Display \**display*);

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

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

int XPending(Display \**display*);

## ARGUMENTS

- *discard*

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

- *display*

  Specifies the connection to the X server.

- *mode*

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

## 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

[**AllPlanes**(3)](/AllPlanes/3.md), [**XIfEvent**(3)](/XIfEvent/3.md), [**XNextEvent**(3)](/XNextEvent/3.md), [**XPutBackEvent**(3)](/XPutBackEvent/3.md)\
 *Xlib - C Language X Interface*
