Annotation of 43BSDTahoe/new/X/libibm/libsrc/display.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char *rcsid_display_c = "$Header: display.c,v 10.2 86/12/17 18:04:40 swick Exp $";
        !             3: #endif lint
        !             4: /* display.c - Routines to initialize screen, and allocate space??
        !             5:  *
        !             6:  *     OpenDisplay             Open it
        !             7:  *     InitDisplay             Do display initialization
        !             8:  *     DisplayDead             Check if dead
        !             9:  *     AllocateSpace           Allocate some temporary storage
        !            10:  *
        !            11:  *     Author:
        !            12:  *
        !            13:  *             Scott Bates
        !            14:  *             Brown University
        !            15:  *             IRIS, Box 1946
        !            16:  *             Providence, RI 02912
        !            17:  *
        !            18:  *
        !            19:  *             Copyright (c) 1986 Brown University
        !            20:  *
        !            21:  * Permission to use, copy, modify and distribute this software and its
        !            22:  * documentation for any purpose and without fee is hereby granted, provided
        !            23:  * that the above copyright notice appear in all copies, and that both
        !            24:  * that copyright notice and this permission notice appear in supporting
        !            25:  * documentation, and that the name of Brown University not be used in
        !            26:  * advertising or publicity pertaining to distribution of the software
        !            27:  * without specific, written prior permission. Brown University makes no
        !            28:  * representations about the suitability of this software for any purpose.
        !            29:  * It is provided "as-is" without express or implied warranty.
        !            30:  */
        !            31: 
        !            32: #include "private.h"
        !            33: #include "bitblt.h"
        !            34: 
        !            35: #ifdef APA16
        !            36: #include "apa16.h"
        !            37: #endif APA16
        !            38: 
        !            39: #ifdef AED
        !            40: #include "aed.h"
        !            41: #endif AED
        !            42: 
        !            43: #ifdef APA8
        !            44: #include "apa8.h"
        !            45: #endif APA8
        !            46: 
        !            47: #ifdef APA8C
        !            48: #include "apa8c.h"
        !            49: #endif APA8C
        !            50: 
        !            51: #ifdef PQD
        !            52: #include "pqd.h"
        !            53: #endif PQD
        !            54: 
        !            55: /*
        !            56:  * Open the display
        !            57:  */
        !            58: 
        !            59: /*ARGSUSED*/
        !            60: OpenDisplay (xNumber)
        !            61:        char *xNumber;
        !            62: {
        !            63:        char *MouseType = getenv("MOUSETYPE");
        !            64:        char *MouseName = getenv("MOUSENAME");
        !            65:        extern int mdev; 
        !            66:        int emul;
        !            67: 
        !            68: #ifdef TRACE_X
        !            69:        fprintf(stderr, "In OpenDisplay\n");
        !            70:        fflush(stderr);
        !            71: #endif TRACE_X
        !            72: 
        !            73:        /*
        !            74:         * Open Minor device for correct screen and switch
        !            75:         * to that screen
        !            76:         */
        !            77: 
        !            78:        if ((xdev = open (SCREEN_DEVICE, O_RDWR|O_NDELAY)) < 0) {
        !            79:                fprintf(stderr, "Unable to open device (%s)\n", SCREEN_DEVICE);
        !            80:                fflush(stderr);
        !            81:                exit(2);
        !            82:        }
        !            83: 
        !            84: 
        !            85:        /*
        !            86:         * Get mouse device name
        !            87:         */
        !            88: 
        !            89:        if (!MouseName)
        !            90:                MouseName = MOUSE_DEVICE;
        !            91: 
        !            92:        /*
        !            93:         * Open mouse 
        !            94:         */
        !            95: 
        !            96: 
        !            97:        if ((mdev = open (MouseName, O_RDWR|O_NDELAY)) < 0) {
        !            98:                fprintf  (stderr, "Error in open of (%s)\n", MouseName);
        !            99:                fflush(stderr);
        !           100:                exit (2);
        !           101:        }
        !           102: 
        !           103:        /*
        !           104:         * Set X Input and Output Emulators for this display
        !           105:         */
        !           106: 
        !           107:        emul = E_XINPUT;
        !           108:        if (ioctl (xdev, EISETD, (caddr_t)&emul) < 0) {
        !           109:                fprintf(stderr, "Unable to set E_XINPUT (%s)\n",SCREEN_DEVICE);
        !           110:                fflush(stderr);
        !           111:                exit(2);
        !           112:        }
        !           113:        emul = E_XOUTPUT;
        !           114:        if (ioctl (xdev, EOSETD, (caddr_t)&emul) < 0) {
        !           115:                fprintf(stderr, "Unable to set E_XOUTPUT (%s)\n",SCREEN_DEVICE);
        !           116:                fflush(stderr);
        !           117:                exit(2);
        !           118:        }
        !           119: 
        !           120:        /*
        !           121:         * Gain access to I/O address space
        !           122:         */
        !           123: 
        !           124:        if (open ("/dev/bus", O_RDONLY|O_NDELAY) < 0) {
        !           125:                 DeviceError ("Unable to open /dev/bus\n");
        !           126:                exit(2);
        !           127:        }
        !           128: 
        !           129:        /*
        !           130:         * Return displays file descriptor
        !           131:         */
        !           132: 
        !           133:        return(xdev);
        !           134: }
        !           135: 
        !           136: /*
        !           137:  * Do display specific initialization
        !           138:  */
        !           139: 
        !           140: InitDisplay (info)
        !           141:        register DEVICE *info;
        !           142: {
        !           143: #ifdef TRACE_X
        !           144:        fprintf(stderr, "In InitDisplay\n");
        !           145:        fflush(stderr);
        !           146: #endif TRACE_X
        !           147: 
        !           148:        /*
        !           149:         * Get address of shared memory
        !           150:         */
        !           151: 
        !           152:        if (ioctl(xdev, QIOCADDR, (caddr_t)&XAddr) < 0) { 
        !           153:                DeviceError("Ioctl to set XAddr failed");
        !           154:                exit(2);
        !           155:        }
        !           156: 
        !           157:         /*
        !           158:          * Initialize (reset) the display
        !           159:          */
        !           160: 
        !           161:        DISPLAY_INIT();
        !           162:  
        !           163:        /*
        !           164:         * Initialize bitblt() 
        !           165:         */
        !           166: 
        !           167:        bitblt_init(SCREEN_BASE, REAL_SCREEN_WIDTH,
        !           168:                 REAL_SCREEN_HEIGHT, CURSOR_TYPE);
        !           169: 
        !           170:         /*
        !           171:          * Set up the physical bitmap structure. This is used
        !           172:         * by device dependent code to talk to bitblt().
        !           173:          */
        !           174:  
        !           175:         pbm.width = REAL_SCREEN_WIDTH;
        !           176:         pbm.height = REAL_SCREEN_HEIGHT;
        !           177:         pbm.refcnt = 1;
        !           178:         pbm.data = (caddr_t) SCREEN_BASE;
        !           179:  
        !           180:        /*
        !           181:         * Fill in device and queue information
        !           182:         */
        !           183: 
        !           184:        info->id = XDEV_ID;
        !           185:        info->width = X_SCREEN_WIDTH;
        !           186:        info->height = X_SCREEN_HEIGHT;
        !           187:        info->planes = 1;
        !           188:        info->entries = 0;
        !           189:        info->mouse = (vsCursor *)(&(XAddr->mouse));
        !           190:        info->mbox  = (vsBox *) (&(XAddr->mbox));
        !           191:        info->queue = (vsEventQueue *) (&XAddr->ibuff);
        !           192: 
        !           193:        return (0);
        !           194: }
        !           195: 
        !           196: /*
        !           197:  * Check if display is dead
        !           198:  */
        !           199: 
        !           200: DisplayDead ()
        !           201: {
        !           202: #ifdef TRACE_X
        !           203:        fprintf(stderr, "In DisplayDead\n");
        !           204:        fflush(stderr);
        !           205: #endif TRACE_X
        !           206: 
        !           207:        return(0);
        !           208: }
        !           209: 
        !           210: /*
        !           211:  * The presumption here is that only one AllocateSpace
        !           212:  * call is made/request
        !           213:  */
        !           214: 
        !           215: #define ABUFSIZE 3072
        !           216: static char ABuffer[3072];     /* random size buffer for allocate space */
        !           217: 
        !           218: caddr_t AllocateSpace (size)
        !           219:        register int size;
        !           220: {
        !           221: #ifdef TRACE_X
        !           222:        fprintf(stderr, "In AllocateSpace\n");
        !           223:        fflush(stderr);
        !           224: #endif TRACE_X
        !           225: 
        !           226:        if (size < ABUFSIZE)
        !           227:                return(ABuffer);
        !           228:        errno = ENOMEM;
        !           229:        return (NULL);
        !           230: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.