static inline void xpand_lines(struct part *p, int y) { /*if (y >= p->y) p->y = y + 1;*/ if (!p->data) return; if (XALIGN((unsigned)y + (unsigned)p->yp) > MAXINT) overalloc(); y += p->yp; if (y >= p->data->y) { /* !!! FIXME: out of inline */ int i; if (XALIGN(y + 1) > XALIGN(p->data->y)) { if (XALIGN((unsigned)y + 1) > MAXINT / sizeof(struct line)) overalloc(); p->data->data = mem_realloc(p->data->data, XALIGN(y+1)*sizeof(struct line)); } for (i = p->data->y; i <= y; i++) { p->data->data[i].l = 0; p->data->data[i].c = p->bgcolor; p->data->data[i].d = DUMMY; } p->data->y = i; } }
static inline void xpand_line(struct part *p, int y, int x) { if (!p->data) return; /* !!! FIXME: p->x (?) */ if (XALIGN((unsigned)x + (unsigned)p->xp) > MAXINT) overalloc(); x += p->xp; y += p->yp; #ifdef DEBUG if (y >= p->data->y) { internal("line does not exist"); return; } #endif if (x >= p->data->data[y].l) { /* !!! FIXME: out of inline */ int i; if (XALIGN(x+1) > XALIGN(p->data->data[y].l)) { if (XALIGN((unsigned)x + 1) > MAXINT / sizeof(chr)) overalloc(); p->data->data[y].d = mem_realloc(p->data->data[y].d, XALIGN(x+1)*sizeof(chr)); } for (i = p->data->data[y].l; i <= x; i++) p->data->data[y].d[i] = (p->data->data[y].c << 11) | ' '; p->data->data[y].c = p->bgcolor; p->data->data[y].l = i; } }
static BOOL DRI2Connect(Display *dpy, XID window, unsigned driver_type, char **device ) { XExtDisplayInfo *info = find_display(dpy); xDRI2ConnectReply rep; xDRI2ConnectReq *req; int dev_len, driv_len; char *driver; DRI2CheckExtension(dpy, info, False); LockDisplay(dpy); GetReq(DRI2Connect, req); req->reqType = info->codes->major_opcode; req->dri2ReqType = X_DRI2Connect; req->window = window; req->driverType = driver_type; if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { UnlockDisplay(dpy); SyncHandle(); return False; } /* check string lengths */ dev_len = rep.deviceNameLength; driv_len = rep.driverNameLength; if (dev_len == 0 || driv_len == 0) { _XEatData(dpy, XALIGN(dev_len) + XALIGN(driv_len)); UnlockDisplay(dpy); SyncHandle(); return False; } /* read out driver */ driver = HeapAlloc(GetProcessHeap(), 0, driv_len + 1); if (!driver) { _XEatData(dpy, XALIGN(dev_len) + XALIGN(driv_len)); UnlockDisplay(dpy); SyncHandle(); return False; } _XReadPad(dpy, driver, driv_len); HeapFree(GetProcessHeap(), 0, driver); /* we don't need the driver */ /* read out device */ *device = HeapAlloc(GetProcessHeap(), 0, dev_len + 1); if (!*device) { _XEatData(dpy, XALIGN(dev_len)); UnlockDisplay(dpy); SyncHandle(); return False; } _XReadPad(dpy, *device, dev_len); (*device)[dev_len] = '\0'; UnlockDisplay(dpy); SyncHandle(); return True; }