|
|
1.1 ! root 1: #include "copyright.h" ! 2: ! 3: /* $Header: XChkIfEv.c,v 11.5 87/09/08 14:29:43 newman Exp $ */ ! 4: /* Copyright Massachusetts Institute of Technology 1985, 1987 */ ! 5: #define NEED_EVENTS ! 6: #include "Xlibint.h" ! 7: ! 8: extern _XQEvent *_qfree; ! 9: ! 10: /* ! 11: * Flush output and return the next event in the queue matching the ! 12: * predicate. Return whether such an event was found. ! 13: * Events earlier in the queue are not discarded. ! 14: */ ! 15: ! 16: Bool XCheckIfEvent (dpy, event, predicate, arg) ! 17: register Display *dpy; ! 18: Bool (*predicate)(); /* function to call */ ! 19: register XEvent *event; /* XEvent to be filled in. */ ! 20: char *arg; ! 21: { ! 22: register _XQEvent *prev, *qelt; ! 23: ! 24: LockDisplay(dpy); ! 25: _XFlush (dpy); ! 26: prev = NULL; ! 27: qelt = dpy->head; ! 28: while (qelt) { ! 29: if ((*predicate)(dpy, &qelt->event, arg)) { ! 30: *event = qelt->event; ! 31: if (prev) { ! 32: if ((prev->next = qelt->next) == NULL) ! 33: dpy->tail = prev; ! 34: } else { ! 35: if ((dpy->head = qelt->next) == NULL) ! 36: dpy->tail = NULL; ! 37: } ! 38: qelt->next = _qfree; ! 39: _qfree = qelt; ! 40: dpy->qlen--; ! 41: UnlockDisplay(dpy); ! 42: return 1; ! 43: } ! 44: qelt = (prev = qelt)->next; ! 45: } ! 46: ! 47: UnlockDisplay(dpy); ! 48: return 0; ! 49: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.