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