XGetEventData(3) XLIB FUNCTIONS XGetEventData(3)

# [NAME](#NAME)

XGetEventData, XFreeEventData, XGenericEventCookie - retrieve and free additional event data through cookies.

# [SYNTAX](#SYNTAX)

Bool XGetEventData(Display \**display*, XGenericEventCookie \**cookie*);

void XFreeEventData(Display \**display*, XGenericEventCookie \**cookie*);

# [ARGUMENTS](#ARGUMENTS)

[*display*](#display)

Specifies the connection to the X server.

[*cookie*](#cookie)

Specifies the cookie to free or retrieve the data for.

# [STRUCTURES](#STRUCTURES)

```
typedef struct {


        int type;


        unsigned long serial;


        Bool send_event;


        Display *display;


        int extension;


        int evtype;


        unsigned int cookie;


        void *data;
} XGenericEventCookie;
```

# [DESCRIPTION](#DESCRIPTION)

Some extension **XGenericEvents** require additional memory to store information. For these events, the library returns a **XGenericEventCookie** with a token ('cookie') unique to this event. The **XGenericEventCookie**'s data pointer is undefined until **XGetEventData** is called.

The **XGetEventData** function retrieves this extra data for the given cookie. No round-trip to the server is required. If the cookie is invalid or the event is not an event handled by cookie handlers, **False** is returned. If **XGetEventData** returns **True**, the cookie's data pointer points to the memory containing the event information. A client must call **XFreeEventData** to free this memory. **XGetEventData** returns **False** for multiple calls for the same event cookie.

The **XFreeEventData** function frees the data associated with a cookie. A client must call **XFreeEventData** for each cookie claimed with **XGetEventData**.

# [EXAMPLE CODE](#EXAMPLE_CODE)

```
XEvent event;
XGenericEventCookie *cookie = &ev;
XNextEvent(display, &event);
if (XGetEventData(display, cookie)) {


    handle_cookie_event(cookie->data);
} else


    handle_event(&event);
}
XFreeEventData(display, cookie);
```

# [NOTES](#NOTES)

A cookie is defined as unclaimed if it has been returned to the client through **XNextEvent** but its data has not been retrieved via **XGetEventData**. Subsequent calls to **XNextEvent** may free memory associated with unclaimed cookies. Multi-threaded X clients must ensure that **XGetEventData** is called before the next call to **XNextEvent**.

# [SEE ALSO](#SEE_ALSO)

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

libX11 1.8.14 X Version 11

---

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