The X server generates a
NoExpose
event whenever a graphics request that might
produce a
GraphicsExpose
event does not produce any.
In other words, the client is really asking for a
GraphicsExpose
event but instead receives a
NoExpose
event.
To receive
GraphicsExpose
or
NoExpose
events, you must first set the graphics-exposure
attribute of the graphics context to
True.
You also can set the graphics-expose attribute when creating a graphics
context using
XCreateGC()
or by calling
XSetGraphicsExposures().
The structures for these event types contain:
typedef struct {
int type; /* GraphicsExpose */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Drawable drawable;
int x, y;
int width, height;
int count; /* if nonzero, at least this many more */
int major_code; /* core is CopyArea or CopyPlane */
int minor_code; /* not defined in the core */
} XGraphicsExposeEvent;
typedef struct {
int type; /* NoExpose */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Drawable drawable;
int major_code; /* core is CopyArea or CopyPlane */
int minor_code; /* not defined in the core */
} XNoExposeEvent;
Both structures have these common members: drawable, major_code, and minor_code.
The drawable member is set to the drawable of the destination region on
which the graphics request was to be performed.
The major_code member is set to the graphics request initiated by the client
and can be either
X_CopyArea
or
X_CopyPlane.
If it is
X_CopyArea,
a call to
XCopyArea()
initiated the request.
If it is
X_CopyPlane,
a call to
XCopyPlane()
initiated the request.
These constants are defined in
<X11/Xproto.h>.
The minor_code member,
like the major_code member,
indicates which graphics request was initiated by
the client.
However, the minor_code member is not defined by the core
X protocol and will be zero in these cases,
although it may be used by an extension.
The
XGraphicsExposeEvent
structure has these additional members: x, y, width, height, and count.
The x and y members are set to the coordinates relative to the drawable's origin
and indicate the upper-left corner of the rectangle.
The width and height members are set to the size (extent) of the rectangle.
The count member is set to the number of
GraphicsExpose
events to follow.
If count is zero, no more
GraphicsExpose
events follow for this window.
However, if count is nonzero, at least that number of
GraphicsExpose
events (and possibly more) are to follow for this window.