diff options
Diffstat (limited to 'nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c')
-rw-r--r-- | nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c | 389 |
1 files changed, 0 insertions, 389 deletions
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c deleted file mode 100644 index 7b1d68519..000000000 --- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c +++ /dev/null @@ -1,389 +0,0 @@ -/* $Xorg: sunLyIo.c,v 1.3 2000/08/17 19:48:37 cpqbld Exp $ */ -/*- - * This is sunIo.c modified for LynxOS - * Copyright 1996 by Thomas Mueller - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Thomas Mueller not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Thomas Mueller makes no representations - * about the suitability of this software for any purpose. It is provided - * "as is" without express or implied warranty. - * - * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THOMAS MUELLER BE LIABLE 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. - * - */ -/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyIo.c,v 3.5 2001/05/25 18:40:59 dawes Exp $ */ - - /* - * - * 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. - * - * - */ - -/************************************************************ -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. - -********************************************************/ - -#define NEED_EVENTS -#include "sun.h" -#include <stat.h> - -/*- - *----------------------------------------------------------------------- - * ProcessInputEvents -- - * Retrieve all waiting input events and pass them to DIX in their - * correct chronological order. Only reads from the system pointer - * and keyboard. - * - * Results: - * None. - * - * Side Effects: - * Events are passed to the DIX layer. - * - *----------------------------------------------------------------------- - */ -void -ProcessInputEvents () -{ - mieqProcessInputEvents (); - miPointerUpdate (); -} - -/* - *----------------------------------------------------------------------- - * sunEnqueueEvents - * When a SIGIO is received, read device hard events and - * enqueue them using the mi event queue - */ - -void sunEnqueueEvents ( - void -) -{ - Firm_event *ptrEvents, /* Current pointer event */ - *kbdEvents; /* Current keyboard event */ - int numPtrEvents, /* Number of remaining pointer events */ - numKbdEvents; /* Number of remaining keyboard events */ - int nPE, /* Original number of pointer events */ - nKE; /* Original number of keyboard events */ - Bool PtrAgain, /* need to (re)read */ - KbdAgain; /* need to (re)read */ - DeviceIntPtr pPointer; - DeviceIntPtr pKeyboard; - sunKbdPrivPtr kbdPriv; - sunPtrPrivPtr ptrPriv; - - pPointer = (DeviceIntPtr)LookupPointerDevice(); - pKeyboard = (DeviceIntPtr)LookupKeyboardDevice(); - ptrPriv = (sunPtrPrivPtr) pPointer->public.devicePrivate; - kbdPriv = (sunKbdPrivPtr) pKeyboard->public.devicePrivate; - if (!pPointer->public.on || !pKeyboard->public.on) - return; - - numPtrEvents = 0; - PtrAgain = TRUE; - numKbdEvents = 0; - KbdAgain = TRUE; - - /* - * So long as one event from either device remains unprocess, we loop: - * Take the oldest remaining event and pass it to the proper module - * for processing. The DDXEvent will be sent to ProcessInput by the - * function called. - */ - while (1) { - /* - * Get events from both the pointer and the keyboard, storing the number - * of events gotten in nPE and nKE and keeping the start of both arrays - * in pE and kE - */ - if ((numPtrEvents == 0) && PtrAgain) { - ptrEvents = sunMouseGetEvents (ptrPriv->fd, pPointer->public.on, - &nPE, &PtrAgain); - numPtrEvents = nPE; - } - if ((numKbdEvents == 0) && KbdAgain) { - kbdEvents = sunKbdGetEvents (kbdPriv->fd, pKeyboard->public.on, - &nKE, &KbdAgain); - numKbdEvents = nKE; - } - if ((numPtrEvents == 0) && (numKbdEvents == 0)) - break; - if (numPtrEvents && numKbdEvents) { - if (timercmp (&kbdEvents->time, &ptrEvents->time, <)) { - sunKbdEnqueueEvent (pKeyboard, kbdEvents); - numKbdEvents--; - kbdEvents++; - } else { - sunMouseEnqueueEvent (pPointer, ptrEvents); - numPtrEvents--; - ptrEvents++; - } - } else if (numKbdEvents) { - sunKbdEnqueueEvent (pKeyboard, kbdEvents); - numKbdEvents--; - kbdEvents++; - } else { - sunMouseEnqueueEvent (pPointer, ptrEvents); - numPtrEvents--; - ptrEvents++; - } - } -} - -void sunEnqueueKbdEvents ( - void -) -{ - Firm_event *kbdEvents; /* Current keyboard event */ - int numKbdEvents; /* Number of remaining keyboard events */ - int nKE; /* Original number of keyboard events */ - Bool KbdAgain; /* need to (re)read */ - DeviceIntPtr pKeyboard; - sunKbdPrivPtr kbdPriv; - - pKeyboard = (DeviceIntPtr)LookupKeyboardDevice(); - kbdPriv = (sunKbdPrivPtr) pKeyboard->public.devicePrivate; - if (!pKeyboard->public.on) - return; - - numKbdEvents = 0; - KbdAgain = TRUE; - - /* - * So long as one event from the device remains unprocess, we loop: - * Take the oldest remaining event and pass it to the proper module - * for processing. The DDXEvent will be sent to ProcessInput by the - * function called. - */ - while (1) { - /* - * Get events from both the keyboard, storing the number - * of events gotten in nKE and keeping the start of the array - * in kE - */ - if ((numKbdEvents == 0) && KbdAgain) { - kbdEvents = sunKbdGetEvents (kbdPriv->fd, pKeyboard->public.on, - &nKE, &KbdAgain); - numKbdEvents = nKE; - } - if (numKbdEvents == 0) - break; - sunKbdEnqueueEvent (pKeyboard, kbdEvents); - numKbdEvents--; - kbdEvents++; - } -} - -void sunEnqueueMseEvents ( - void -) -{ - Firm_event *ptrEvents; /* Current pointer event */ - int numPtrEvents; /* Number of remaining pointer events */ - int nPE; /* Original number of pointer events */ - Bool PtrAgain; /* need to (re)read */ - DeviceIntPtr pPointer; - sunPtrPrivPtr ptrPriv; - - pPointer = (DeviceIntPtr)LookupPointerDevice(); - ptrPriv = (sunPtrPrivPtr) pPointer->public.devicePrivate; - if (!pPointer->public.on) - return; - - numPtrEvents = 0; - PtrAgain = TRUE; - - /* - * So long as one events from the device remain unprocess, we loop: - * Take the oldest remaining event and pass it to the proper module - * for processing. The DDXEvent will be sent to ProcessInput by the - * function called. - */ - while (1) { - /* - * Get events from the pointer, storing the number - * of events gotten in nPE and keeping the start of the arrays - * in pE - */ - if ((numPtrEvents == 0) && PtrAgain) { - ptrEvents = sunMouseGetEvents (ptrPriv->fd, pPointer->public.on, - &nPE, &PtrAgain); - numPtrEvents = nPE; - } - if (numPtrEvents == 0) - break; - - sunMouseEnqueueEvent (pPointer, ptrEvents); - numPtrEvents--; - ptrEvents++; - } -} - -/* - * DDX - specific abort routine. Called by AbortServer(). - */ -void AbortDDX() -{ - int i; - ScreenPtr pScreen; - DevicePtr devPtr; - - (void) OsSignal (SIGIO, SIG_IGN); - if (sunKbdPriv.fd != -1) { - if (devPtr = LookupKeyboardDevice()) - (void) sunChangeKbdTranslation (((sunKbdPrivPtr)(devPtr->devicePrivate))->fd, FALSE); - } - sunNonBlockConsoleOff (); - for (i = 0; i < screenInfo.numScreens; i++) - { - pScreen = screenInfo.screens[i]; - (*pScreen->SaveScreen) (pScreen, SCREEN_SAVER_OFF); - sunDisableCursor (pScreen); - } -} - -/* Called by GiveUp(). */ -void -ddxGiveUp() -{ - AbortDDX (); -} - -/* ddxInitGlobals - called by |InitGlobals| from os/util.c */ -void ddxInitGlobals(void) -{ -} - -int -ddxProcessArgument (argc, argv, i) - int argc; - char *argv[]; - int i; -{ - extern void UseMsg(); - extern Bool onConsole; - struct stat s0, scon; - - if (fstat(0, &s0) != -1 && stat("/dev/con", &scon) != -1) - onConsole = !memcmp(&s0, &scon, sizeof(s0)); - -#ifndef XKB - if (strcmp (argv[i], "-ar1") == 0) { /* -ar1 int */ - if (++i >= argc) UseMsg (); - sunAutoRepeatInitiate = 1000 * (long)atoi(argv[i]); - if (sunAutoRepeatInitiate > 1000000) - sunAutoRepeatInitiate = 999000; - return 2; - } - if (strcmp (argv[i], "-ar2") == 0) { /* -ar2 int */ - if (++i >= argc) UseMsg (); - sunAutoRepeatDelay = 1000 * (long)atoi(argv[i]); - if (sunAutoRepeatDelay > 1000000) - sunAutoRepeatDelay = 999000; - return 2; - } -#endif - if (strcmp (argv[i], "-swapLkeys") == 0) { /* -swapLkeys */ - sunSwapLkeys = TRUE; - return 1; - } - if (strcmp (argv[i], "-debug") == 0) { /* -debug */ - return 1; - } - if (strcmp (argv[i], "-dev") == 0) { /* -dev /dev/mumble */ - if (++i >= argc) UseMsg (); - return 2; - } - if (strcmp (argv[i], "-mono") == 0) { /* -mono */ - return 1; - } - if (strcmp (argv[i], "-zaphod") == 0) { /* -zaphod */ - sunActiveZaphod = FALSE; - return 1; - } - if (strcmp (argv[i], "-flipPixels") == 0) { /* -flipPixels */ - sunFlipPixels = TRUE; - return 1; - } - if (strcmp (argv[i], "-fbinfo") == 0) { /* -fbinfo */ - sunFbInfo = TRUE; - return 1; - } - if (strcmp (argv[i], "-kbd") == 0) { /* -kbd */ - if (++i >= argc) UseMsg(); - return 2; - } - if (strcmp (argv[i], "-protect") == 0) { /* -protect */ - if (++i >= argc) UseMsg(); - return 2; - } - if (strcmp (argv[i], "-noGX") == 0) { - sunNoGX = TRUE; - return 1; - } - return 0; -} - -void -ddxUseMsg() -{ -#ifndef XKB - ErrorF("-ar1 int set autorepeat initiate time\n"); - ErrorF("-ar2 int set autorepeat interval time\n"); -#endif - ErrorF("-swapLkeys swap keysyms on L1..L10\n"); - ErrorF("-debug disable non-blocking console mode\n"); - ErrorF("-dev fn[:fn][:fn] name of device[s] to open\n"); - ErrorF("-mono force monochrome-only screen\n"); - ErrorF("-zaphod disable active Zaphod mode\n"); - ErrorF("-fbinfo tell more about the found frame buffer(s)\n"); -#ifdef UNDOCUMENTED - ErrorF("-noGX treat the GX as a dumb frame buffer\n"); -#endif -} |