|
|
1.1 root 1: #include <X/mit-copyright.h>
2:
3: /* $Header: XUpdateMouse.c,v 10.4 86/02/01 15:41:37 tony Rel $ */
4: /* Copyright Massachusetts Institute of Technology 1985 */
5:
6: #include "XlibInternal.h"
7:
8: extern _QEvent *_qfree;
9:
10: /* Like XQueryMouse, but also reads pending events and flushes any MouseMoved
11: * events at the head of the queue. A good way to track the mouse is to use
12: * a MouseMoved event as a "hint", by calling this routine to get up to date
13: * coordinates.
14: */
15:
16: Status XUpdateMouse (w, x, y, subw)
17: Window w;
18: Window *subw;
19: int *x, *y;
20: {
21: register Display *dpy;
22: register XReq *req;
23: register _QEvent *qelt;
24: XRep rep;
25:
26: XPending(dpy = _XlibCurrentDisplay);
27: /* read all events in socket's kernel buffer */
28: GetReq(X_QueryMouse, w);
29: if (!_XReply(dpy, &rep))
30: return(0);
31: while ((qelt = dpy->head) && qelt->event.type == MouseMoved) {
32: if ((dpy->head = qelt->next) == NULL)
33: dpy->tail = NULL;
34: qelt->next = _qfree;
35: _qfree = qelt;
36: dpy->qlen--;
37: }
38: *x = rep.param.s[2];
39: *y = rep.param.s[3];
40: *subw = rep.param.l[0];
41: return (1);
42: }
43:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.