XGetEventData
Section: XLIB FUNCTIONS (3)
Updated: libX11 1.3
Index
Return to Main Contents
NAME
XGetEventData, XFreeEventData, XGenericEventCookie - retrieve and free additional event data through cookies.
SYNTAX
-
- Bool XGetEventData(Display *display, XGenericEventCookie *cookie);
-
- void XFreeEventData(Display *display, XGenericEventCookie *cookie);
-
ARGUMENTS
- display
-
- Specifies the connection to the X server.
- cookie
-
Specifies the cookie to free or retrieve the data for.
STRUCTURES
typedef struct {
int type;
unsigned long serial;
Bool send_event;
Display *display;
int extension;
int evtype;
unsigned int cookie;
void *data;
} XGenericEventCookie;
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
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
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
XNextEvent(3),
Xlib - C Language X Interface