|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T d ┃
Length: 2751 (0xabf) Types: TextFile Names: »display.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─ ⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z« └─⟦2109abc41⟧ └─ ⟦this⟧ »./X.V10R4/libis/display.c«
/* * $Source: /u1/X/libis/RCS/display.c,v $ * $Header: display.c,v 1.1 86/11/17 14:33:42 swick Rel $ */ #ifndef lint static char *rcsid_display_c = "$Header: display.c,v 1.1 86/11/17 14:33:42 swick Rel $"; #endif lint #include "is-copyright.h" /* display.c - routines to open and close display * * OpenDisplay * InitDisplay * DisplayDead * AllocateSpace * * Copyright (c) 1986, Integrated Solutions, Inc. */ #include "Xis.h" #include <sys/file.h> #include <errno.h> extern int errno; DEVICE *CurrentDevice; int indev; /* fd of the desktop */ extern int InputHandler(); /* * OpenDisplay */ OpenDisplay(name) char *name; { int ldisc = TWSDISC; short mmode = (VT_MOUSE_DOWN | VT_MOUSE_UP | VT_MOUSE_CONTINUOUS); char tname[32]; extern char *strcpy(), *strcat(); strcpy(tname, "/dev/ttyw"); strcat(tname, name); #ifdef DEBUG if (debug & D_Misc) printf("OpenDisplay(name=\"%s\")\n", tname); #endif DEBUG indev = GIP_Init(); setreuid(-1, -1); /* don't need to be setuid root anymore */ ioctl(indev, TIOCSETD, &ldisc); /* SetLineDisc */ ioctl(indev, TIOVSETMM, &mmode); /* SetMouseMode */ return (indev); } /* * InitDisplay */ InitDisplay(dp) register DEVICE *dp; { static vsCursor vsmouse; static vsBox vsmbox; static vsEventQueue vsqueue; struct gconfig gc; #ifdef DEBUG if (debug & D_Misc) printf("InitDisplay(dp=0x%x)\n", dp); #endif DEBUG CurrentDevice = dp; if (indev >= 0) { if (ioctl(indev, TIOVGETHW, &gc)) { /* GetGraphicsConfig */ return (-1); } switch (gc.realcolors) { case 2: dp->id = XDEV_ISIBW; /* monochrome */ break; case 16: dp->id = XDEV_ISICOLOR4; /* 4 bit plane color */ break; default: dp->id = -1; /* no idea! */ break; } dp->width = ScreenPixmap.width; dp->height = ScreenPixmap.height; dp->planes = ScreenPixmap.kind & 0xf; if (dp->planes > 1) dp->entries = gc.lutsize; else dp->entries = 0; /* no lut! */ dp->mouse = &vsmouse; dp->mbox = &vsmbox; dp->queue = &vsqueue; Define_input_handler(InputHandler); } else { return (-1); } return (0); } /* * DisplayDead */ DisplayDead() { #ifdef DEBUG if (debug & D_Misc) { printf("DisplayDead()?\n"); fflush(stdout); } #endif DEBUG GIP_Quit(); return (0); } /* * AllocateSpace * * The presumption here is that only one AllocateSpace call is * made/request */ #define BUFSIZE 3072 /* arbitrary size for buffer */ caddr_t AllocateSpace(size) int size; { static char buf[BUFSIZE]; #ifdef DEBUG if (debug & D_Misc) printf("AllocateSpace(size=%d)\n", size); #endif DEBUG if (size < BUFSIZE) { return (buf); } errno = ENOMEM; return (NULL); }