aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/hw/sun/sunInit.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/programs/Xserver/hw/sun/sunInit.c')
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunInit.c960
1 files changed, 0 insertions, 960 deletions
diff --git a/nx-X11/programs/Xserver/hw/sun/sunInit.c b/nx-X11/programs/Xserver/hw/sun/sunInit.c
deleted file mode 100644
index 62cc8c76a..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunInit.c
+++ /dev/null
@@ -1,960 +0,0 @@
-/* $Xorg: sunInit.c,v 1.4 2000/08/17 19:48:29 cpqbld Exp $ */
-/*
- * sunInit.c --
- * Initialization functions for screen/keyboard/mouse, etc.
- *
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sun/sunInit.c,v 3.12 2002/12/06 02:11:44 tsi Exp $ */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-*******************************************************/
-
-#include "sun.h"
-#include "gcstruct.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "cfb.h"
-#include "cfb16.h"
-#include "cfb32.h"
-
-/* maximum pixmap depth */
-#ifndef SUNMAXDEPTH
-#define SUNMAXDEPTH 8
-#endif
-
-#ifdef i386 /* { */
-#define BW2I NULL
-#else /* }{ */
-extern Bool sunBW2Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define BW2I sunBW2Init
-#endif /* } */
-
-
-#if SUNMAXDEPTH == 1 /* { */
-#define CG2I NULL
-#define CG3I NULL
-#define CG4I NULL
-#define CG6I NULL
-#define CG8I NULL
-#define TCXI NULL
-#else /* }{ */
-extern Bool sunCG3Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG3I sunCG3Init
-#if defined(i386) || defined(__bsdi__) /* { */
-#define CG2I NULL
-#define CG4I NULL
-#else /* }{ */
-#ifdef INCLUDE_CG2_HEADER
-extern Bool sunCG2Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG2I sunCG2Init
-#endif /* INCLUDE_CG2_HEADER */
-extern Bool sunCG4Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG4I sunCG4Init
-#endif /* } */
-#ifdef FBTYPE_SUNFAST_COLOR /* { */
-extern Bool sunCG6Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG6I sunCG6Init
-#else /* }{ */
-#define CG6I NULL
-#endif /* } */
-#ifdef XFBTYPE_TCX /* { */
-extern Bool sunTCXInit(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define TCXI sunTCXInit
-#else /* }{ */
-#define TCXI NULL
-#endif /* } */
-#if SUNMAXDEPTH > 8 /* { */
-#ifdef FBTYPE_MEMCOLOR /* { */
-extern Bool sunCG8Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG8I sunCG8Init
-#else /* }{ */
-#define CG8I NULL
-#endif /* } */
-#else /* }{ */
-#define CG8I NULL
-#endif /* } */
-
-#endif /* } */
-
-extern KeySymsRec sunKeySyms[];
-extern SunModmapRec *sunModMaps[];
-extern int sunMaxLayout;
-extern KeySym* sunType4KeyMaps[];
-extern SunModmapRec* sunType4ModMaps[];
-
-static Bool sunDevsInited = FALSE;
-
-Bool sunAutoRepeatHandlersInstalled; /* FALSE each time InitOutput called */
-Bool sunSwapLkeys = FALSE;
-Bool sunFlipPixels = FALSE;
-Bool sunFbInfo = FALSE;
-Bool sunCG4Frob = FALSE;
-Bool sunNoGX = FALSE;
-
-sunKbdPrivRec sunKbdPriv = {
- -1, /* fd */
- -1, /* type */
- -1, /* layout */
- 0, /* click */
- (Leds)0, /* leds */
-};
-
-sunPtrPrivRec sunPtrPriv = {
- -1, /* fd */
- 0 /* Current button state */
-};
-
-/*
- * The name member in the following table corresponds to the
- * FBTYPE_* macros defined in /usr/include/sun/fbio.h file
- */
-sunFbDataRec sunFbData[XFBTYPE_LASTPLUSONE] = {
- { NULL, "SUN1BW (bw1)" },
- { NULL, "SUN1COLOR (cg1)" },
- { BW2I, "SUN2BW (bw2)" },
-#ifdef INCLUDE_CG2_HEADER
- { CG2I, "SUN2COLOR (cg2)" },
-#endif /* INCLUDE_CG2_HEADER */
- { NULL, "SUN2GP (gp1/gp2)" },
- { NULL, "SUN5COLOR (cg5/386i accel)" },
- { CG3I, "SUN3COLOR (cg3)" },
- { CG8I, "MEMCOLOR (cg8)" },
- { CG4I, "SUN4COLOR (cg4)" },
- { NULL, "NOTSUN1" },
- { NULL, "NOTSUN2" },
- { NULL, "NOTSUN3" }
-#ifndef i386 /* { */
- ,{ CG6I, "SUNFAST_COLOR (cg6/gx)" },
- { NULL, "SUNROP_COLOR (cg9)" },
- { NULL, "SUNFB_VIDEO" },
- { NULL, "SUNGIFB" },
- { NULL, "SUNPLAS" },
-#ifdef FBTYPE_SUNGP3
- { NULL, "SUNGP3 (cg12/gs)" },
-#endif
-#ifdef FBTYPE_SUNGT
- { NULL, "SUNGT (gt)" },
-#endif
-#ifdef FBTYPE_SUNLEO
- { NULL, "SUNLEO (zx)" },
-#endif
-#ifdef FBTYPE_MDICOLOR
- { NULL, "MDICOLOR (cgfourteen)" },
-#endif
-#ifdef XFBTYPE_TCX
- { TCXI, "TCX (tcx)" },
-#endif
-#endif /* } */
-};
-
-/*
- * a list of devices to try if there is no environment or command
- * line list of devices
- */
-#if SUNMAXDEPTH == 1 /* { */
-static char *fallbackList[] = {
- BWTWO0DEV, BWTWO1DEV, BWTWO2DEV
-};
-#else /* }{ */
-static char *fallbackList[] = {
-#ifndef i386 /* { */
- CGTWO0DEV, CGTWO1DEV, CGTWO2DEV,
-#if (MAXSCREENS == 4)
- CGTWO3DEV,
-#endif
-#endif /* } */
- CGTHREE0DEV,
-#ifndef i386 /* { */
- CGTHREE1DEV, CGTHREE2DEV,
-#if (MAXSCREENS == 4)
- CGTHREE3DEV,
-#endif
-#endif /* } */
-#ifdef FBTYPE_SUNFAST_COLOR /* { */
- CGSIX0DEV, CGSIX1DEV, CGSIX2DEV,
-#if (MAXSCREENS == 4)
- CGSIX3DEV,
-#endif
-#endif /* } */
-#ifndef i386 /* { */
- CGFOUR0DEV, BWTWO0DEV, BWTWO1DEV, BWTWO2DEV,
-#if (MAXSCREENS == 4)
- BWTWO3DEV,
-#endif
-#endif /* } */
-#if SUNMAXDEPTH > 8 /* { */
- CGEIGHT0DEV,
-#if 0
-#ifdef XFBTYPE_TCX
- TCX0DEV,
-#endif
-#endif
-#endif /* } */
- "/dev/fb"
-};
-#endif /* } */
-
-#define FALLBACK_LIST_LEN sizeof fallbackList / sizeof fallbackList[0]
-
-fbFd sunFbs[MAXSCREENS];
-
-static PixmapFormatRec formats[] = {
- { 1, 1, BITMAP_SCANLINE_PAD } /* 1-bit deep */
-#if SUNMAXDEPTH > 1
- ,{ 8, 8, BITMAP_SCANLINE_PAD} /* 8-bit deep */
-#if SUNMAXDEPTH > 8
- ,{ 12, 24, BITMAP_SCANLINE_PAD } /* 12-bit deep */
- ,{ 24, 32, BITMAP_SCANLINE_PAD } /* 24-bit deep */
-#endif
-#endif
-};
-#define NUMFORMATS (sizeof formats)/(sizeof formats[0])
-
-/*
- * OpenFrameBuffer --
- * Open a frame buffer according to several rules.
- * Find the device to use by looking in the sunFbData table,
- * an XDEVICE envariable, a -dev switch or using /dev/fb if trying
- * to open screen 0 and all else has failed.
- *
- * Results:
- * The fd of the framebuffer.
- */
-static int OpenFrameBuffer(device, screen)
- char *device; /* e.g. "/dev/cgtwo0" */
- int screen; /* what screen am I going to be */
-{
- int ret = TRUE;
- struct fbgattr *fbattr;
- static int devFbUsed;
-
- sunFbs[screen].fd = -1;
- if (strcmp (device, "/dev/fb") == 0 && devFbUsed)
- return FALSE;
- if (access (device, R_OK | W_OK) == -1)
- return FALSE;
- if ((sunFbs[screen].fd = open(device, O_RDWR, 0)) == -1)
- ret = FALSE;
- else {
- fbattr = (struct fbgattr *) xalloc (sizeof (struct fbgattr));
- if (ioctl(sunFbs[screen].fd, FBIOGATTR, fbattr) == -1) {
- /*
- This is probably a bwtwo; the $64,000 question is:
- is it the mono plane of a cgfour, or is it really a
- real bwtwo? If there is only a cgfour in the box or
- only a bwtwo in the box, then it isn't a problem. If
- it's a 3/60, which has a bwtwo on the mother board *and*
- a cgfour, then things get tricky because there's no way
- to tell if the bwtwo is really being emulated by the cgfour.
- */
- xfree (fbattr);
- fbattr = NULL;
- if (ioctl(sunFbs[screen].fd, FBIOGTYPE, &sunFbs[screen].info) == -1) {
- Error("unable to get frame buffer attributes");
- (void) close(sunFbs[screen].fd);
- sunFbs[screen].fd = -1;
- return FALSE;
- }
- }
- if (ret) {
- devFbUsed = TRUE;
- if (fbattr) {
- if (fbattr->fbtype.fb_type >= XFBTYPE_LASTPLUSONE) {
- ErrorF ("%s is an unknown framebuffer type\n", device);
- (void) close(sunFbs[screen].fd);
- sunFbs[screen].fd = -1;
- return FALSE;
- }
- sunFbs[screen].info = fbattr->fbtype;
- }
- sunFbs[screen].fbPriv = (pointer) fbattr;
- if (fbattr && !sunFbData[fbattr->fbtype.fb_type].init) {
- int _i;
- ret = FALSE;
- for (_i = 0; _i < FB_ATTR_NEMUTYPES; _i++) {
- if (sunFbData[fbattr->emu_types[_i]].init) {
- sunFbs[screen].info.fb_type = fbattr->emu_types[_i];
- ret = TRUE;
- if (sunFbInfo)
- ErrorF ("%s is emulating a %s\n", device,
- sunFbData[fbattr->fbtype.fb_type].name);
- break;
- }
- }
- }
- if (sunFbInfo)
- ErrorF ("%s is really a %s\n", device,
- sunFbData[fbattr ? fbattr->fbtype.fb_type : sunFbs[screen].info.fb_type].name);
- }
- }
- if (!ret)
- sunFbs[screen].fd = -1;
- return ret;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SigIOHandler --
- * Signal handler for SIGIO - input is available.
- *
- * Results:
- * sunSigIO is set - ProcessInputEvents() will be called soon.
- *
- * Side Effects:
- * None
- *
- *-----------------------------------------------------------------------
- */
-/*ARGSUSED*/
-static void SigIOHandler(sig)
- int sig;
-{
- int olderrno = errno;
- sunEnqueueEvents ();
- errno = olderrno;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunNonBlockConsoleOff --
- * Turn non-blocking mode on the console off, so you don't get logged
- * out when the server exits.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-void sunNonBlockConsoleOff(
-#if defined(SVR4) || defined(CSRG_BASED)
- void
-#else
- char* arg
-#endif
-)
-{
- register int i;
-
- i = fcntl(2, F_GETFL, 0);
- if (i >= 0)
- (void) fcntl(2, F_SETFL, i & ~FNDELAY);
-}
-
-static char** GetDeviceList (argc, argv)
- int argc;
- char **argv;
-{
- int i;
- char *envList = NULL;
- char *cmdList = NULL;
- char **deviceList = (char **)NULL;
-
- for (i = 1; i < argc; i++)
- if (strcmp (argv[i], "-dev") == 0 && i+1 < argc) {
- cmdList = argv[i + 1];
- break;
- }
- if (!cmdList)
- envList = getenv ("XDEVICE");
-
- if (cmdList || envList) {
- char *_tmpa;
- char *_tmpb;
- int _i1;
- deviceList = (char **) xalloc ((MAXSCREENS + 1) * sizeof (char *));
- _tmpa = (cmdList) ? cmdList : envList;
- for (_i1 = 0; _i1 < MAXSCREENS; _i1++) {
- _tmpb = strtok (_tmpa, ":");
- if (_tmpb)
- deviceList[_i1] = _tmpb;
- else
- deviceList[_i1] = NULL;
- _tmpa = NULL;
- }
- deviceList[MAXSCREENS] = NULL;
- }
- if (!deviceList) {
- /* no environment and no cmdline, so default */
- deviceList =
- (char **) xalloc ((FALLBACK_LIST_LEN + 1) * sizeof (char *));
- for (i = 0; i < FALLBACK_LIST_LEN; i++)
- deviceList[i] = fallbackList[i];
- deviceList[FALLBACK_LIST_LEN] = NULL;
- }
- return deviceList;
-}
-
-static void getKbdType()
-{
-/*
- * The Sun 386i has system include files that preclude this pre SunOS 4.1
- * test for the presence of a type 4 keyboard however it really doesn't
- * matter since no 386i has ever been shipped with a type 3 keyboard.
- * SunOS 4.1 no longer needs this kludge.
- */
-#if !defined(i386) && !defined(KIOCGKEY)
-#define TYPE4KEYBOARDOVERRIDE
-#endif
-
- int ii;
-
- for (ii = 0; ii < 3; ii++) {
- sunKbdWait();
- (void) ioctl (sunKbdPriv.fd, KIOCTYPE, &sunKbdPriv.type);
-#ifdef TYPE4KEYBOARDOVERRIDE
- /*
- * Magic. Look for a key which is non-existent on a real type
- * 3 keyboard but does exist on a type 4 keyboard.
- */
- if (sunKbdPriv.type == KB_SUN3) {
- struct kiockeymap key;
-
- key.kio_tablemask = 0;
- key.kio_station = 118;
- if (ioctl(sunKbdPriv.fd, KIOCGKEY, &key) == -1) {
- Error( "ioctl KIOCGKEY" );
- FatalError("Can't KIOCGKEY on fd %d\n", sunKbdPriv.fd);
- }
- if (key.kio_entry != HOLE)
- sunKbdPriv.type = KB_SUN4;
- }
-#endif
- switch (sunKbdPriv.type) {
- case KB_SUN2:
- case KB_SUN3:
- case KB_SUN4: return;
- default:
- sunChangeKbdTranslation(sunKbdPriv.fd, FALSE);
- continue;
- }
- }
- FatalError ("Unsupported keyboard type %d\n", sunKbdPriv.type);
-}
-
-void OsVendorInit(
- void
-)
-{
- static int inited;
- if (!inited) {
-#ifndef i386
- struct rlimit rl;
-
- /*
- * one per client, one per screen, one per listen endpoint,
- * keyboard, mouse, and stderr
- */
- int maxfds = MAXCLIENTS + MAXSCREENS + 5;
-
- if (getrlimit (RLIMIT_NOFILE, &rl) == 0) {
- rl.rlim_cur = maxfds < rl.rlim_max ? maxfds : rl.rlim_max;
- (void) setrlimit (RLIMIT_NOFILE, &rl);
- }
-#endif
- sunKbdPriv.fd = open ("/dev/kbd", O_RDWR, 0);
- if (sunKbdPriv.fd < 0)
- FatalError ("Cannot open /dev/kbd, error %d\n", errno);
- sunPtrPriv.fd = open ("/dev/mouse", O_RDWR, 0);
- if (sunPtrPriv.fd < 0)
- FatalError ("Cannot open /dev/mouse, error %d\n", errno);
- getKbdType ();
- if (sunKbdPriv.type == KB_SUN4) {
- (void) ioctl (sunKbdPriv.fd, KIOCLAYOUT, &sunKbdPriv.layout);
- if (sunKbdPriv.layout < 0 ||
- sunKbdPriv.layout > sunMaxLayout ||
- sunType4KeyMaps[sunKbdPriv.layout] == NULL)
- FatalError ("Unsupported keyboard type 4 layout %d\n",
- sunKbdPriv.layout);
- sunKeySyms[KB_SUN4].map = sunType4KeyMaps[sunKbdPriv.layout];
- sunModMaps[KB_SUN4] = sunType4ModMaps[sunKbdPriv.layout];
- }
- inited = 1;
- }
-}
-
-#ifdef DDXOSFATALERROR
-void OsVendorFatalError(void)
-{
-}
-#endif
-
-/*-
- *-----------------------------------------------------------------------
- * InitOutput --
- * Initialize screenInfo for all actually accessible framebuffers.
- * The
- *
- * Results:
- * screenInfo init proc field set
- *
- * Side Effects:
- * None
- *
- *-----------------------------------------------------------------------
- */
-
-void InitOutput(pScreenInfo, argc, argv)
- ScreenInfo *pScreenInfo;
- int argc;
- char **argv;
-{
- int i, scr;
- int nonBlockConsole = 0;
- char **devList;
- static int setup_on_exit = 0;
- extern Bool RunFromSmartParent;
-
- if (!monitorResolution)
- monitorResolution = 90;
- if (RunFromSmartParent)
- nonBlockConsole = 1;
- for (i = 1; i < argc; i++) {
- if (!strcmp(argv[i],"-debug"))
- nonBlockConsole = 0;
- }
-
- /*
- * Writes to /dev/console can block - causing an
- * excess of error messages to hang the server in
- * deadlock. So.......
- */
- if (nonBlockConsole) {
- if (!setup_on_exit) {
-#if defined(SVR4) || defined(CSRG_BASED)
- if (atexit(sunNonBlockConsoleOff))
-#else
- if (on_exit(sunNonBlockConsoleOff, (char *)0))
-#endif
- ErrorF("InitOutput: can't register NBIO exit handler\n");
-
- setup_on_exit = 1;
- }
- i = fcntl(2, F_GETFL, 0);
- if (i >= 0)
- i = fcntl(2, F_SETFL, i | FNDELAY);
- if (i < 0) {
- Error("fcntl");
- ErrorF("InitOutput: can't put stderr in non-block mode\n");
- }
- }
- pScreenInfo->imageByteOrder = IMAGE_BYTE_ORDER;
- pScreenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
- pScreenInfo->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
- pScreenInfo->bitmapBitOrder = BITMAP_BIT_ORDER;
-
- pScreenInfo->numPixmapFormats = NUMFORMATS;
- for (i=0; i< NUMFORMATS; i++)
- pScreenInfo->formats[i] = formats[i];
-#ifdef XKB
- if (noXkbExtension)
-#endif
- sunAutoRepeatHandlersInstalled = FALSE;
- if (!sunDevsInited) {
- /* first time ever */
- for (scr = 0; scr < MAXSCREENS; scr++)
- sunFbs[scr].fd = -1;
- devList = GetDeviceList (argc, argv);
- for (i = 0, scr = 0; devList[i] != NULL && scr < MAXSCREENS; i++)
- if (OpenFrameBuffer (devList[i], scr))
- scr++;
- sunDevsInited = TRUE;
- xfree (devList);
- }
- for (scr = 0; scr < MAXSCREENS; scr++)
- if (sunFbs[scr].fd != -1)
- (void) AddScreen (sunFbData[sunFbs[scr].info.fb_type].init,
- argc, argv);
- (void) OsSignal(SIGWINCH, SIG_IGN);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * InitInput --
- * Initialize all supported input devices...what else is there
- * besides pointer and keyboard?
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Two DeviceRec's are allocated and registered as the system pointer
- * and keyboard devices.
- *
- *-----------------------------------------------------------------------
- */
-void InitInput(argc, argv)
- int argc;
- char **argv;
-{
- pointer p, k;
- extern Bool mieqInit();
-
- p = AddInputDevice(sunMouseProc, TRUE);
- k = AddInputDevice(sunKbdProc, TRUE);
- if (!p || !k)
- FatalError("failed to create input devices in InitInput");
-
- RegisterPointerDevice(p);
- RegisterKeyboardDevice(k);
- miRegisterPointerDevice(screenInfo.screens[0], p);
- (void) mieqInit (k, p);
-#define SET_FLOW(fd) fcntl(fd, F_SETFL, FNDELAY | FASYNC)
-#ifdef SVR4
- (void) OsSignal(SIGPOLL, SigIOHandler);
-#define WANT_SIGNALS(fd) ioctl(fd, I_SETSIG, S_INPUT | S_HIPRI)
-#else
- (void) OsSignal(SIGIO, SigIOHandler);
-#define WANT_SIGNALS(fd) fcntl(fd, F_SETOWN, getpid())
-#endif
- if (sunKbdPriv.fd >= 0) {
- if (SET_FLOW(sunKbdPriv.fd) == -1 || WANT_SIGNALS(sunKbdPriv.fd) == -1) {
- (void) close (sunKbdPriv.fd);
- sunKbdPriv.fd = -1;
- FatalError("Async kbd I/O failed in InitInput");
- }
- }
- if (sunPtrPriv.fd >= 0) {
- if (SET_FLOW(sunPtrPriv.fd) == -1 || WANT_SIGNALS(sunPtrPriv.fd) == -1) {
- (void) close (sunPtrPriv.fd);
- sunPtrPriv.fd = -1;
- FatalError("Async mouse I/O failed in InitInput");
- }
- }
-}
-
-
-#if SUNMAXDEPTH == 8
-
-Bool
-sunCfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width);
-}
-
-Bool
-sunCfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width);
-}
-
-Bool
-sunCfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
-}
-
-#else /* SUNMAXDEPTH != 8 */
-#if SUNMAXDEPTH == 32
-
-static Bool
-sunCfbCreateGC(pGC)
- GCPtr pGC;
-{
- if (pGC->depth == 1)
- {
- return mfbCreateGC (pGC);
- }
- else if (pGC->depth <= 8)
- {
- return cfbCreateGC (pGC);
- }
- else if (pGC->depth <= 16)
- {
- return cfb16CreateGC (pGC);
- }
- else if (pGC->depth <= 32)
- {
- return cfb32CreateGC (pGC);
- }
- return FALSE;
-}
-
-static void
-sunCfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart)
- DrawablePtr pDrawable; /* drawable from which to get bits */
- int wMax; /* largest value of all *pwidths */
- register DDXPointPtr ppt; /* points to start copying from */
- int *pwidth; /* list of number of bits to copy */
- int nspans; /* number of scanlines to copy */
- char *pdstStart; /* where to put the bits */
-{
- switch (pDrawable->bitsPerPixel) {
- case 1:
- mfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- break;
- case 8:
- cfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- break;
- case 16:
- cfb16GetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- break;
- case 32:
- cfb32GetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- break;
- }
- return;
-}
-
-static void
-sunCfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine)
- DrawablePtr pDrawable;
- int sx, sy, w, h;
- unsigned int format;
- unsigned long planeMask;
- char *pdstLine;
-{
- switch (pDrawable->bitsPerPixel)
- {
- case 1:
- mfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- break;
- case 8:
- cfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- break;
- case 16:
- cfb16GetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- break;
- case 32:
- cfb32GetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- break;
- }
-}
-
-Bool
-sunCfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- int ret;
-
- switch (bpp) {
- case 8:
- ret = cfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
- break;
- case 16:
- ret = cfb16SetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
- break;
- case 32:
- ret = cfb32SetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
- break;
- default:
- return FALSE;
- }
- pScreen->CreateGC = sunCfbCreateGC;
- pScreen->GetImage = sunCfbGetImage;
- pScreen->GetSpans = sunCfbGetSpans;
- return ret;
-}
-
-/* Adapt cfb logic */
-#undef CFB_NEED_SCREEN_PRIVATE
-#if !defined(SINGLEDEPTH) || defined(FORDE_SEPARATE_PRIVATE)
-#define CFB_NEED_SCREEN_PRIVATE
-#endif
-
-extern BSFuncRec cfbBSFuncRec, cfb16BSFuncRec, cfb32BSFuncRec;
-extern Bool cfbCloseScreen(), cfb16CloseScreen(), cfb32CloseScreen();
-#ifdef CFB_NEED_SCREEN_PRIVATE
-extern int cfb16ScreenPrivateIndex, cfb32ScreenPrivateIndex;
-#endif
-
-Bool
-sunCfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp;
-{
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pointer oldDevPrivate;
-#endif
- VisualPtr visuals;
- int nvisuals;
- DepthPtr depths;
- int ndepths;
- VisualID defaultVisual;
- int rootdepth = 0;
-
- if (!cfbInitVisuals(&visuals, &depths, &nvisuals, &ndepths,
- &rootdepth, &defaultVisual, 1 << (bpp - 1), 8))
- return FALSE;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- oldDevPrivate = pScreen->devPrivate;
-#endif
- if (! miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width,
- rootdepth, ndepths, depths,
- defaultVisual, nvisuals, visuals))
- return FALSE;
- switch (bpp)
- {
- case 8:
- pScreen->CloseScreen = cfbCloseScreen;
- pScreen->BackingStoreFuncs = cfbBSFuncRec;
- break;
- case 16:
- pScreen->CloseScreen = cfb16CloseScreen;
- pScreen->BackingStoreFuncs = cfb16BSFuncRec;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pScreen->devPrivates[cfb16ScreenPrivateIndex].ptr =
- pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
-#endif
- break;
- case 32:
- pScreen->CloseScreen = cfb32CloseScreen;
- pScreen->BackingStoreFuncs = cfb32BSFuncRec;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pScreen->devPrivates[cfb32ScreenPrivateIndex].ptr =
- pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
-#endif
- break;
- }
- return TRUE;
-}
-
-
-Bool
-sunCfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp;
-{
- if (!sunCfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width, bpp))
- return FALSE;
- return sunCfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix,
- dpiy, width, bpp);
-}
-
-#endif /* SUNMAXDEPTH == 32 */
-#endif /* SUNMAXDEPTH */
-
-#ifdef DPMSExtension
-/**************************************************************
- * DPMSSet(), DPMSGet(), DPMSSupported()
- *
- * stubs
- *
- ***************************************************************/
-
-void DPMSSet (level)
- int level;
-{
-}
-
-int DPMSGet (level)
- int* level;
-{
- return -1;
-}
-
-Bool DPMSSupported ()
-{
- return FALSE;
-}
-#endif