|
|
1.1 ! root 1: #include <X/mit-copyright.h> ! 2: ! 3: /* $Header: XWindowEvent.c,v 10.5 86/04/22 15:21:13 jg Rel $ */ ! 4: /* Copyright Massachusetts Institute of Technology 1985 */ ! 5: ! 6: #include "XlibInternal.h" ! 7: ! 8: extern _QEvent *_qfree; ! 9: ! 10: /* ! 11: * Flush output and (wait for and) return the next event in the queue ! 12: * for the given window matching one of the events in the mask. ! 13: * Events earlier in the queue are not discarded. ! 14: */ ! 15: ! 16: XWindowEvent (w, mask, event) ! 17: Window w; /* Selected window. */ ! 18: int mask; /* Selected event mask. */ ! 19: register XEvent *event; /* XEvent to be filled in. */ ! 20: { ! 21: register Display *dpy; ! 22: register _QEvent *prev, *qelt; ! 23: ! 24: dpy = _XlibCurrentDisplay; ! 25: _XFlush (dpy); ! 26: for (prev = NULL, qelt = dpy->head; ! 27: qelt && (qelt->event.window != w || ! 28: !(qelt->event.type & mask)); ! 29: qelt = (prev = qelt)->next) ; ! 30: if (qelt) { ! 31: *event = qelt->event; ! 32: if (prev) { ! 33: if ((prev->next = qelt->next) == NULL) ! 34: dpy->tail = prev; ! 35: } else { ! 36: if ((dpy->head = qelt->next) == NULL) ! 37: dpy->tail = NULL; ! 38: } ! 39: qelt->next = _qfree; ! 40: _qfree = qelt; ! 41: dpy->qlen--; ! 42: return; ! 43: } ! 44: while (1) { ! 45: _XRead (dpy, (char *)event, sizeof(XEvent)); ! 46: if (event->type == X_Error) ! 47: _XError(dpy, (XErrorEvent *)event); ! 48: else if ((event->window == w) && (event->type & mask)) ! 49: return; ! 50: else ! 51: _XEnq(dpy, event); ! 52: } ! 53: } ! 54:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.