aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/X11/PeekIfEv.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/lib/X11/PeekIfEv.c')
-rw-r--r--nx-X11/lib/X11/PeekIfEv.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/nx-X11/lib/X11/PeekIfEv.c b/nx-X11/lib/X11/PeekIfEv.c
index 593332898..f2f2cede4 100644
--- a/nx-X11/lib/X11/PeekIfEv.c
+++ b/nx-X11/lib/X11/PeekIfEv.c
@@ -36,15 +36,15 @@ in this Software without prior written authorization from The Open Group.
*/
int
-XPeekIfEvent (dpy, event, predicate, arg)
- register Display *dpy;
- register XEvent *event;
+XPeekIfEvent (
+ register Display *dpy,
+ register XEvent *event,
Bool (*predicate)(
Display* /* display */,
XEvent* /* event */,
char* /* arg */
- );
- char *arg;
+ ),
+ char *arg)
{
register _XQEvent *prev, *qelt;
unsigned long qe_serial = 0;
@@ -57,7 +57,12 @@ XPeekIfEvent (dpy, event, predicate, arg)
prev = qelt, qelt = qelt->next) {
if(qelt->qserial_num > qe_serial
&& (*predicate)(dpy, &qelt->event, arg)) {
+ XEvent copy;
*event = qelt->event;
+ if (_XCopyEventCookie(dpy, &event->xcookie, &copy.xcookie)) {
+ _XStoreEventCookie(dpy, &copy);
+ *event = copy;
+ }
UnlockDisplay(dpy);
return 0;
}