243 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			243 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C
		
	
	
	
| /* $XFree86$ */
 | ||
| /****************************************************************************
 | ||
| Copyright 1987, 1988, 1989, 1990, 1991 by Digital Equipment Corp., Maynard, MA
 | ||
| 
 | ||
| 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 and that
 | ||
| both that copyright notice and this permission notice appear in 
 | ||
| supporting documentation, and that the name of Digital not be
 | ||
| used in advertising or publicity pertaining to distribution of the
 | ||
| software without specific, written prior permission.  
 | ||
| 
 | ||
| DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
 | ||
| ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
 | ||
| DIGITAL 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.
 | ||
| 
 | ||
| *****************************************************************************/
 | ||
| /*
 | ||
|  *  ABSTRACT:
 | ||
|  *
 | ||
|  *      This module is contains Vector tables used for swapping and general   
 | ||
|  *      dispatch by the XTrap server extension.
 | ||
|  *
 | ||
|  *  CONTRIBUTORS:
 | ||
|  *
 | ||
|  *      Ken Miller
 | ||
|  *      Marc Evans
 | ||
|  *
 | ||
|  */
 | ||
| 
 | ||
| /*-----------------*
 | ||
|  *  Include Files  *
 | ||
|  *-----------------*/
 | ||
| #ifdef HAVE_DIX_CONFIG_H
 | ||
| #include <dix-config.h>
 | ||
| #endif
 | ||
| 
 | ||
| #include <X11/X.h>
 | ||
| #define NEED_REPLIES
 | ||
| #define NEED_EVENTS
 | ||
| #include <X11/Xproto.h>
 | ||
| #include <X11/Xprotostr.h>
 | ||
| #include <X11/extensions/xtrapdi.h>
 | ||
| #include "input.h"          /* Server DevicePtr definitions */
 | ||
| #include "misc.h"
 | ||
| #include "dixstruct.h"
 | ||
| #ifdef PC
 | ||
| # include "extnsist.h"
 | ||
| #else
 | ||
| # include "extnsionst.h"        /* Server ExtensionEntry definitions */
 | ||
| #endif
 | ||
| #include <X11/extensions/xtrapddmi.h>
 | ||
| #include <X11/extensions/xtrapproto.h>
 | ||
| 
 | ||
| globaldef void_function XETSwProcVector[256L] =
 | ||
| {
 | ||
|     (void_function)ProcBadRequest,
 | ||
|     XETSwCreateWindow,
 | ||
|     XETSwChangeWindowAttributes,
 | ||
|     XETSwResourceReq,			/* GetWindowAttributes */
 | ||
|     XETSwResourceReq,			/* DestroyWindow */
 | ||
|     XETSwResourceReq,			/* 5 DestroySubwindows */
 | ||
|     XETSwResourceReq,			/* XETSwChangeSaveSet, */
 | ||
|     XETSwReparentWindow,
 | ||
|     XETSwResourceReq,			/* MapWindow */
 | ||
|     XETSwResourceReq,			/* MapSubwindows */
 | ||
|     XETSwResourceReq,			/* 10 UnmapWindow */
 | ||
|     XETSwResourceReq,			/* UnmapSubwindows */
 | ||
|     XETSwConfigureWindow,
 | ||
|     XETSwResourceReq,			/* XETSwCirculateWindow, */
 | ||
|     XETSwResourceReq,			/* GetGeometry */
 | ||
|     XETSwResourceReq,			/* 15 QueryTree */
 | ||
|     XETSwInternAtom,
 | ||
|     XETSwResourceReq,			/* XETSwGetAtomName, */
 | ||
|     XETSwChangeProperty,
 | ||
|     XETSwDeleteProperty,
 | ||
|     XETSwGetProperty,			/* 20 */
 | ||
|     XETSwResourceReq,			/* XETSwListProperties, */
 | ||
|     XETSwSetSelectionOwner,
 | ||
|     XETSwResourceReq, 			/* XETSwGetSelectionOwner, */
 | ||
|     XETSwConvertSelection,
 | ||
|     XETSwSendEvent,			/* 25 */
 | ||
|     XETSwGrabPointer,
 | ||
|     XETSwResourceReq, 			/* XETSwUngrabPointer, */
 | ||
|     XETSwGrabButton,
 | ||
|     XETSwUngrabButton,
 | ||
|     XETSwChangeActivePointerGrab,	/* 30 */
 | ||
|     XETSwGrabKeyboard,
 | ||
|     XETSwResourceReq,			/* XETSwUngrabKeyboard, */
 | ||
|     XETSwGrabKey,
 | ||
|     XETSwUngrabKey,
 | ||
|     XETSwResourceReq,			/* 35 XETSwAllowEvents, */
 | ||
|     XETSwSimpleReq,			/* XETSwGrabServer, */
 | ||
|     XETSwSimpleReq,			/* XETSwUngrabServer, */
 | ||
|     XETSwResourceReq,			/* XETSwQueryPointer, */
 | ||
|     XETSwGetMotionEvents,
 | ||
|     XETSwTranslateCoords,		/*40 */
 | ||
|     XETSwWarpPointer,
 | ||
|     XETSwSetInputFocus,
 | ||
|     XETSwSimpleReq,			/* XETSwGetInputFocus, */
 | ||
|     XETSwSimpleReq,			/* QueryKeymap, */
 | ||
|     XETSwOpenFont,			/* 45 */
 | ||
|     XETSwResourceReq,			/* XETSwCloseFont, */
 | ||
|     XETSwResourceReq, 			/* XETSwQueryFont, */
 | ||
|     XETSwResourceReq,			/* XETSwQueryTextExtents,  */
 | ||
|     XETSwListFonts,
 | ||
|     XETSwListFontsWithInfo,		/* 50 */
 | ||
|     XETSwSetFontPath,
 | ||
|     XETSwSimpleReq,			/* GetFontPath, */
 | ||
|     XETSwCreatePixmap,
 | ||
|     XETSwResourceReq,			/* XETSwFreePixmap, */
 | ||
|     XETSwCreateGC,			/* 55 */
 | ||
|     XETSwChangeGC,
 | ||
|     XETSwCopyGC,
 | ||
|     XETSwSetDashes,
 | ||
|     XETSwSetClipRectangles,
 | ||
|     XETSwResourceReq,			/* 60 XETSwFreeGC, */
 | ||
|     XETSwClearToBackground,
 | ||
|     XETSwCopyArea,
 | ||
|     XETSwCopyPlane,
 | ||
|     XETSwPoly,				/* PolyPoint, */
 | ||
|     XETSwPoly,				/* 65 PolyLine */
 | ||
|     XETSwPoly,				/* PolySegment, */
 | ||
|     XETSwPoly,				/* PolyRectangle, */
 | ||
|     XETSwPoly,				/* PolyArc, */
 | ||
|     XETSwFillPoly,
 | ||
|     XETSwPoly,				/* 70 PolyFillRectangle */
 | ||
|     XETSwPoly,				/* PolyFillArc, */
 | ||
|     XETSwPutImage,
 | ||
|     XETSwGetImage,
 | ||
|     XETSwPolyText,
 | ||
|     XETSwPolyText,			/* 75 */
 | ||
|     XETSwImageText,
 | ||
|     XETSwImageText,
 | ||
|     XETSwCreateColormap,
 | ||
|     XETSwResourceReq,			/* XETSwFreeColormap, */
 | ||
|     XETSwCopyColormapAndFree,		/* 80 */
 | ||
|     XETSwResourceReq,			/* XETSwInstallColormap, */
 | ||
|     XETSwResourceReq,			/* XETSwUninstallColormap, */
 | ||
|     XETSwResourceReq, 			/* XETSwListInstalledColormaps, */
 | ||
|     XETSwAllocColor,
 | ||
|     XETSwAllocNamedColor,		/* 85 */
 | ||
|     XETSwAllocColorCells,
 | ||
|     XETSwAllocColorPlanes,
 | ||
|     XETSwFreeColors,
 | ||
|     XETSwStoreColors,
 | ||
|     XETSwStoreNamedColor,		/* 90 */
 | ||
|     XETSwQueryColors,
 | ||
|     XETSwLookupColor,
 | ||
|     XETSwCreateCursor,
 | ||
|     XETSwCreateGlyphCursor,
 | ||
|     XETSwResourceReq,			/* 95 XETSwFreeCursor, */
 | ||
|     XETSwRecolorCursor,
 | ||
|     XETSwQueryBestSize,
 | ||
|     XETSwQueryExtension,
 | ||
|     XETSwSimpleReq,			/* ListExtensions, */
 | ||
|     XETSwChangeKeyboardMapping,		/* 100 */
 | ||
|     XETSwSimpleReq,			/* GetKeyboardMapping, */
 | ||
|     XETSwChangeKeyboardControl,
 | ||
|     XETSwSimpleReq,			/* GetKeyboardControl, */
 | ||
|     XETSwSimpleReq,			/* Bell, */
 | ||
|     XETSwChangePointerControl,		/* 105 */
 | ||
|     XETSwSimpleReq,			/* GetPointerControl, */
 | ||
|     XETSwSetScreenSaver,
 | ||
|     XETSwSimpleReq,			/* GetScreenSaver, */
 | ||
|     XETSwChangeHosts,
 | ||
|     XETSwSimpleReq,			/* 110 ListHosts, */
 | ||
|     XETSwSimpleReq,			/* XETSwChangeAccessControl, */
 | ||
|     XETSwSimpleReq,			/* XETSwChangeCloseDownMode, */
 | ||
|     XETSwResourceReq,			/* XETSwKillClient, */
 | ||
|     XETSwRotateProperties,
 | ||
|     XETSwSimpleReq,			/* 115 ForceScreenSaver */
 | ||
|     XETSwSimpleReq,			/* SetPointerMapping, */
 | ||
|     XETSwSimpleReq,			/* GetPointerMapping, */
 | ||
|     XETSwSimpleReq,			/* SetModifierMapping, */
 | ||
|     XETSwSimpleReq,			/* GetModifierMapping, */
 | ||
|     NotImplemented,			/* 120 */
 | ||
|     NotImplemented,
 | ||
|     NotImplemented,
 | ||
|     NotImplemented,
 | ||
|     NotImplemented,
 | ||
|     NotImplemented,			/* 125 */
 | ||
|     NotImplemented,
 | ||
|     XETSwNoOperation
 | ||
| };
 | ||
| 
 | ||
| /* NOTE: This array must align with the values of the constants used
 | ||
|  * as minor_opcode values in the request structure. Failure to do this
 | ||
|  * could result in random code paths.
 | ||
|  */
 | ||
| globaldef int_function XETrapDispatchVector[10L] = 
 | ||
| {
 | ||
|     XETrapReset,            /* 0 XETrap_Reset */
 | ||
|     XETrapGetAvailable,     /* 1 XETrap_GetAvailable */
 | ||
|     XETrapConfig,           /* 2 XETrap_Config */
 | ||
|     XETrapStartTrap,        /* 3 XETrap_StartTrap */
 | ||
|     XETrapStopTrap,         /* 4 XETrap_StopTrap */
 | ||
|     XETrapGetCurrent,       /* 5 XETrap_GetCurrent */
 | ||
|     XETrapGetStatistics,    /* 6 XETrap_GetStatistics */
 | ||
| #ifndef _XINPUT
 | ||
|     XETrapSimulateXEvent,   /* 7 XETrap_SimulateXEvent */
 | ||
| #endif
 | ||
|     XETrapGetVersion,       /* 8 XETrap_GetVersion */
 | ||
|     XETrapGetLastInpTime,   /* 9 XETrap_GetLastInpTime */
 | ||
| };
 | ||
| 
 | ||
| /* NOTE: This array must align with the values of the constants used
 | ||
|  * as minor_opcode values in the request structure. Failure to do this
 | ||
|  * could result in random code paths.
 | ||
|  */
 | ||
| globaldef int_function XETSwDispatchVector[10L] = 
 | ||
| {
 | ||
|     sXETrapReset,           /* 0 XETrap_Reset */
 | ||
|     sXETrapGetAvailable,    /* 1 XETrap_GetAvailable */
 | ||
|     sXETrapConfig,          /* 2 XETrap_Config */
 | ||
|     sXETrapStartTrap,       /* 3 XETrap_StartTrap */
 | ||
|     sXETrapStopTrap,        /* 4 XETrap_StopTrap */
 | ||
|     sXETrapGetCurrent,      /* 5 XETrap_GetCurrent */
 | ||
|     sXETrapGetStatistics,   /* 6 XETrap_GetStatistics */
 | ||
| #ifndef _XINPUT
 | ||
|     sXETrapSimulateXEvent,  /* 7 XETrap_SimulateXEvent */
 | ||
| #endif
 | ||
|     sXETrapGetVersion,      /* 8 XETrap_GetVersion */
 | ||
|     sXETrapGetLastInpTime,  /* 9 XETrap_GetLastInpTime */
 | ||
| };
 | ||
| 
 | ||
| /* ProcVector shadow vector */
 | ||
| globaldef int_function XETrapProcVector[256L]       = {XETrapRequestVector};
 | ||
| /*
 | ||
|  * Events are faked as if they're vectored since that's
 | ||
|  * the way it'll eventually be (X11 R5?).
 | ||
|  */
 | ||
| #ifndef VECTORED_EVENTS
 | ||
| globaldef int_function EventProcVector[XETrapCoreEvents]       = {NULL};
 | ||
| #endif
 | ||
| globaldef int_function XETrapEventProcVector[XETrapCoreEvents] = {NULL};
 | ||
| 
 | ||
| 
 |