diff options
Diffstat (limited to 'nx-X11/lib/X11/PeekIfEv.c')
-rw-r--r-- | nx-X11/lib/X11/PeekIfEv.c | 15 |
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, ©.xcookie)) { + _XStoreEventCookie(dpy, ©); + *event = copy; + } UnlockDisplay(dpy); return 0; } |