---
name: "XIfEvent"
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/XIfEvent/3x"
---

# XIfEvent(3x)

check the event queue with a predicate procedure

## NAME

XIfEvent, XCheckIfEvent, XPeekIfEvent - check the event queue with a predicate procedure

## SYNTAX

int XIfEvent(Display \**display*, XEvent \**event\_return*, Bool (\**predicate*)(), XPointer *arg*);

Bool XCheckIfEvent(Display \**display*, XEvent \**event\_return*, Bool (\**predicate*)(), XPointer *arg*);

int XPeekIfEvent(Display \**display*, XEvent \**event\_return*, Bool (\**predicate*)(), XPointer *arg*);

## ARGUMENTS

- *arg*

  Specifies the user-supplied argument that will be passed to the predicate procedure.

- *display*

  Specifies the connection to the X server.

- *event\_return*

  Returns either a copy of or  the matched event's associated structure.

- *predicate*

  Specifies the procedure that is to be called to determine if the next event in the queue matches what you want.

## DESCRIPTION

The *XIfEvent* function completes only when the specified predicate procedure returns  *True* for an event,  which indicates an event in the queue matches. *XIfEvent* flushes the output buffer if it blocks waiting for additional events. *XIfEvent* removes the matching event from the queue  and copies the structure into the client-supplied *XEvent* structure.

When the predicate procedure finds a match, *XCheckIfEvent* copies the matched event into the client-supplied *XEvent* structure and returns  *True*. (This event is removed from the queue.) If the predicate procedure finds no match, *XCheckIfEvent* returns *False*, and the output buffer will have been flushed. All earlier events stored in the queue are not discarded.

The *XPeekIfEvent* function returns only when the specified predicate procedure returns  *True* for an event. After the predicate procedure finds a match, *XPeekIfEvent* copies the matched event into the client-supplied *XEvent* structure without removing the event from the queue. *XPeekIfEvent* flushes the output buffer if it blocks waiting for additional events.

## SEE ALSO

XAnyEvent(3X11), XNextEvent(3X11), XPutBackEvent(3X11) XSendEvent(3X11)\
 *Xlib - C Language X Interface*
