|
|
1.1 root 1: #include "copyright.h"
2:
3: /* $Header: XDrLine.c,v 11.10 87/09/11 08:09:53 toddb Exp $ */
4: /* Copyright Massachusetts Institute of Technology 1986 */
5:
6: #include "Xlibint.h"
7:
8: /* precompute the maximum size of batching request allowed */
9:
10: static int size = sizeof(xPolySegmentReq) + EPERBATCH * sizeof(xSegment);
11:
12: XDrawLine (dpy, d, gc, x1, y1, x2, y2)
13: register Display *dpy;
14: Drawable d;
15: GC gc;
16: int x1, y1, x2, y2;
17: {
18: register xSegment *segment;
19: LockDisplay(dpy);
20: FlushGC(dpy, gc);
21: {
22: register xPolySegmentReq *req = (xPolySegmentReq *) dpy->last_req;
23: /* if same as previous request, with same drawable, batch requests */
24: if (
25: (req->reqType == X_PolySegment)
26: && (req->drawable == d)
27: && (req->gc == gc->gid)
28: && ((dpy->bufptr + sizeof (xSegment)) <= dpy->bufmax)
29: && (((char *)dpy->bufptr - (char *)req) < size) ) {
30: segment = (xSegment *) dpy->bufptr;
31: req->length += sizeof (xSegment) >> 2;
32: dpy->bufptr += sizeof (xSegment);
33: }
34:
35: else {
36: GetReqExtra (PolySegment, sizeof(xSegment), req);
37: req->drawable = d;
38: req->gc = gc->gid;
39: segment = (xSegment *) (req + 1);
40: }
41:
42: segment->x1 = x1;
43: segment->y1 = y1;
44: segment->x2 = x2;
45: segment->y2 = y2;
46: UnlockDisplay(dpy);
47: SyncHandle();
48: }
49: }
50:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.