---
name: "XFlush"
section: "3x"
platform: "linux"
package: "libx11-dev"
version: "4.3.0.dfsg.1-14sarge7"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/XFlush/3x"
---

# XFlush(3x)

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(3X11), XIfEvent(3X11), XNextEvent(3X11), XPutBackEvent(3X11)\
 *Xlib - C Language X Interface*
