|
|
1.1 ! root 1: /* ! 2: * $Source: /u1/X/libis/RCS/display.c,v $ ! 3: * $Header: display.c,v 1.1 86/11/17 14:33:42 swick Rel $ ! 4: */ ! 5: ! 6: #ifndef lint ! 7: static char *rcsid_display_c = "$Header: display.c,v 1.1 86/11/17 14:33:42 swick Rel $"; ! 8: #endif lint ! 9: ! 10: #include "is-copyright.h" ! 11: ! 12: /* display.c - routines to open and close display ! 13: * ! 14: * OpenDisplay ! 15: * InitDisplay ! 16: * DisplayDead ! 17: * AllocateSpace ! 18: * ! 19: * Copyright (c) 1986, Integrated Solutions, Inc. ! 20: */ ! 21: ! 22: #include "Xis.h" ! 23: #include <sys/file.h> ! 24: #include <errno.h> ! 25: ! 26: extern int errno; ! 27: ! 28: DEVICE *CurrentDevice; ! 29: ! 30: int indev; /* fd of the desktop */ ! 31: ! 32: extern int InputHandler(); ! 33: ! 34: /* ! 35: * OpenDisplay ! 36: */ ! 37: OpenDisplay(name) ! 38: char *name; ! 39: { ! 40: int ldisc = TWSDISC; ! 41: short mmode = (VT_MOUSE_DOWN | VT_MOUSE_UP | VT_MOUSE_CONTINUOUS); ! 42: char tname[32]; ! 43: extern char *strcpy(), *strcat(); ! 44: ! 45: strcpy(tname, "/dev/ttyw"); ! 46: strcat(tname, name); ! 47: ! 48: #ifdef DEBUG ! 49: if (debug & D_Misc) ! 50: printf("OpenDisplay(name=\"%s\")\n", tname); ! 51: #endif DEBUG ! 52: ! 53: indev = GIP_Init(); ! 54: setreuid(-1, -1); /* don't need to be setuid root anymore */ ! 55: ioctl(indev, TIOCSETD, &ldisc); /* SetLineDisc */ ! 56: ioctl(indev, TIOVSETMM, &mmode); /* SetMouseMode */ ! 57: return (indev); ! 58: } ! 59: ! 60: /* ! 61: * InitDisplay ! 62: */ ! 63: InitDisplay(dp) ! 64: register DEVICE *dp; ! 65: { ! 66: static vsCursor vsmouse; ! 67: static vsBox vsmbox; ! 68: static vsEventQueue vsqueue; ! 69: ! 70: struct gconfig gc; ! 71: ! 72: #ifdef DEBUG ! 73: if (debug & D_Misc) ! 74: printf("InitDisplay(dp=0x%x)\n", dp); ! 75: #endif DEBUG ! 76: ! 77: CurrentDevice = dp; ! 78: ! 79: if (indev >= 0) { ! 80: if (ioctl(indev, TIOVGETHW, &gc)) { /* GetGraphicsConfig */ ! 81: return (-1); ! 82: } ! 83: ! 84: switch (gc.realcolors) { ! 85: case 2: ! 86: dp->id = XDEV_ISIBW; /* monochrome */ ! 87: break; ! 88: case 16: ! 89: dp->id = XDEV_ISICOLOR4; /* 4 bit plane color */ ! 90: break; ! 91: default: ! 92: dp->id = -1; /* no idea! */ ! 93: break; ! 94: } ! 95: dp->width = ScreenPixmap.width; ! 96: dp->height = ScreenPixmap.height; ! 97: dp->planes = ScreenPixmap.kind & 0xf; ! 98: if (dp->planes > 1) ! 99: dp->entries = gc.lutsize; ! 100: else ! 101: dp->entries = 0; /* no lut! */ ! 102: dp->mouse = &vsmouse; ! 103: dp->mbox = &vsmbox; ! 104: dp->queue = &vsqueue; ! 105: ! 106: ! 107: Define_input_handler(InputHandler); ! 108: ! 109: } else { ! 110: return (-1); ! 111: } ! 112: return (0); ! 113: } ! 114: ! 115: /* ! 116: * DisplayDead ! 117: */ ! 118: ! 119: DisplayDead() ! 120: { ! 121: #ifdef DEBUG ! 122: if (debug & D_Misc) { ! 123: printf("DisplayDead()?\n"); ! 124: fflush(stdout); ! 125: } ! 126: #endif DEBUG ! 127: ! 128: GIP_Quit(); ! 129: ! 130: return (0); ! 131: } ! 132: ! 133: /* ! 134: * AllocateSpace ! 135: * ! 136: * The presumption here is that only one AllocateSpace call is ! 137: * made/request ! 138: */ ! 139: ! 140: #define BUFSIZE 3072 /* arbitrary size for buffer */ ! 141: ! 142: caddr_t AllocateSpace(size) ! 143: int size; ! 144: { ! 145: static char buf[BUFSIZE]; ! 146: ! 147: #ifdef DEBUG ! 148: if (debug & D_Misc) ! 149: printf("AllocateSpace(size=%d)\n", size); ! 150: #endif DEBUG ! 151: ! 152: if (size < BUFSIZE) { ! 153: return (buf); ! 154: } ! 155: errno = ENOMEM; ! 156: return (NULL); ! 157: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.