New upstream version 3.5.99.27

This commit is contained in:
geos_one
2025-08-08 20:00:36 +02:00
commit bc8d10cc33
4267 changed files with 1757978 additions and 0 deletions

View File

@@ -0,0 +1 @@
osdep.h

View File

@@ -0,0 +1,55 @@
HEADERS = os.h misc.h
#if defined(XorgVersion) \
|| defined(BSDOSArchitecture)
#endif
LinkSourceFile(osdep.h,../os)
#ifdef cygwinArchitecture
LinkFile(xxwindow.h,window.h)
#endif
all::
depend::
InstallDriverSDKNonExecFile(XIstubs.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(Xprintf.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(bstore.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(bstorestr.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(client.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(colormap.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(colormapst.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(cursor.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(cursorstr.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(dix.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(dixstruct.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(exevents.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(extension.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(extnsionst.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(gc.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(gcstruct.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(globals.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(input.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(inputstr.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(list.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(misc.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(miscstruct.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(opaque.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(os.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(pixmap.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(pixmapstr.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(property.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(propertyst.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(region.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(regionstr.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(resource.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(screenint.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(scrnintstr.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(servermd.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(validate.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(window.h,$(DRIVERSDKINCLUDEDIR))
InstallDriverSDKNonExecFile(windowstr.h,$(DRIVERSDKINCLUDEDIR))
BuildIncludes($(HEADERS),nx-X11,..)
InstallMultipleFlags($(HEADERS),$(INCDIR)/nx-X11,$(INSTINCFLAGS))

View File

@@ -0,0 +1,75 @@
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
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 notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of the above listed
copyright holder(s) not be used in advertising or publicity pertaining
to distribution of the software without specific, written prior
permission.
THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
********************************************************/
#ifndef XI_STUBS_H
#define XI_STUBS_H 1
int
ChangeKeyboardDevice (
DeviceIntPtr /* old_dev */,
DeviceIntPtr /* new_dev */);
int
ChangePointerDevice (
DeviceIntPtr /* old_dev */,
DeviceIntPtr /* new_dev */,
unsigned char /* x */,
unsigned char /* y */);
void
CloseInputDevice (
DeviceIntPtr /* d */,
ClientPtr /* client */);
void
AddOtherInputDevices (void);
void
OpenInputDevice (
DeviceIntPtr /* dev */,
ClientPtr /* client */,
int * /* status */);
int
SetDeviceMode (
ClientPtr /* client */,
DeviceIntPtr /* dev */,
int /* mode */);
int
SetDeviceValuators (
ClientPtr /* client */,
DeviceIntPtr /* dev */,
int * /* valuators */,
int /* first_valuator */,
int /* num_valuators */);
int
ChangeDeviceControl (
ClientPtr /* client */,
DeviceIntPtr /* dev */,
xDeviceCtl * /* control */);
#endif /* XI_STUBS_H */

View File

@@ -0,0 +1,81 @@
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#ifndef XPRINTF_H
#define XPRINTF_H
#include <stdio.h>
#include <stdarg.h>
#include <nx-X11/Xfuncproto.h>
#ifndef _X_RESTRICT_KYWD
#if defined(restrict) /* assume autoconf set it correctly */ || \
(defined(__STDC__) && (__STDC_VERSION__ - 0 >= 199901L)) /* C99 */
#define _X_RESTRICT_KYWD restrict
#elif defined(__GNUC__) && !defined(__STRICT_ANSI__) /* gcc w/C89+extensions */
#define _X_RESTRICT_KYWD __restrict__
#else
#define _X_RESTRICT_KYWD
#endif
#endif
/*
* These functions provide a portable implementation of the common (but not
* yet universal) asprintf & vasprintf routines to allocate a buffer big
* enough to sprintf the arguments to. The XNF variants terminate the server
* if the allocation fails.
* The buffer allocated is returned in the pointer provided in the first
* argument. The return value is the size of the allocated buffer, or -1
* on failure.
*/
extern _X_EXPORT int
Xasprintf(char **ret, const char *_X_RESTRICT_KYWD fmt, ...)
_X_ATTRIBUTE_PRINTF(2, 3);
extern _X_EXPORT int
Xvasprintf(char **ret, const char *_X_RESTRICT_KYWD fmt, va_list va)
_X_ATTRIBUTE_PRINTF(2, 0);
extern _X_EXPORT int
XNFasprintf(char **ret, const char *_X_RESTRICT_KYWD fmt, ...)
_X_ATTRIBUTE_PRINTF(2, 3);
extern _X_EXPORT int
XNFvasprintf(char **ret, const char *_X_RESTRICT_KYWD fmt, va_list va)
_X_ATTRIBUTE_PRINTF(2, 0);
#if !defined(HAVE_ASPRINTF) && !defined(HAVE_VASPRINTF)
#define asprintf Xasprintf
#define vasprintf Xvasprintf
#endif
/*
* These functions provide a portable implementation of the linux kernel
* scnprintf & vscnprintf routines that return the number of bytes actually
* copied during a snprintf, (excluding the final '\0').
*/
extern _X_EXPORT int
Xscnprintf(char *s, int n, const char * _X_RESTRICT_KYWD fmt, ...)
_X_ATTRIBUTE_PRINTF(3,4);
extern _X_EXPORT int
Xvscnprintf(char *s, int n, const char * _X_RESTRICT_KYWD fmt, va_list va)
_X_ATTRIBUTE_PRINTF(3,0);
#endif /* XPRINTF_H */

View File

@@ -0,0 +1,22 @@
/*
* Copyright (c) 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.
*/
/*
* Moved here from mi to allow wrapping of lower level backing store functions.
* -- 1997.10.27 Marc Aurele La France (tsi@xfree86.org)
*/
#ifndef _BSTORE_H_
#define _BSTORE_H_
#include "bstorestr.h"
#endif /* _BSTORE_H_ */

View File

@@ -0,0 +1,57 @@
/*
* Copyright (c) 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.
*/
/*
* Moved here from mi to allow wrapping of lower level backing store functions.
* -- 1997.10.27 Marc Aurele La France (tsi@xfree86.org)
*/
#ifndef _BSTORESTR_H_
#define _BSTORESTR_H_
#include "gc.h"
#include "pixmap.h"
#include "region.h"
#include "window.h"
typedef void (* BackingStoreSaveAreasProcPtr)(
PixmapPtr /*pBackingPixmap*/,
RegionPtr /*pObscured*/,
int /*x*/,
int /*y*/,
WindowPtr /*pWin*/);
typedef void (* BackingStoreRestoreAreasProcPtr)(
PixmapPtr /*pBackingPixmap*/,
RegionPtr /*pExposed*/,
int /*x*/,
int /*y*/,
WindowPtr /*pWin*/);
typedef void (* BackingStoreSetClipmaskRgnProcPtr)(
GCPtr /*pBackingGC*/,
RegionPtr /*pbackingCompositeClip*/);
typedef PixmapPtr (* BackingStoreGetImagePixmapProcPtr)(void);
typedef PixmapPtr (* BackingStoreGetSpansPixmapProcPtr)(void);
typedef struct _BSFuncs {
BackingStoreSaveAreasProcPtr SaveAreas;
BackingStoreRestoreAreasProcPtr RestoreAreas;
BackingStoreSetClipmaskRgnProcPtr SetClipmaskRgn;
BackingStoreGetImagePixmapProcPtr GetImagePixmap;
BackingStoreGetSpansPixmapProcPtr GetSpansPixmap;
} BSFuncRec, *BSFuncPtr;
#endif /* _BSTORESTR_H_ */

View File

@@ -0,0 +1,60 @@
/*
* Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). All
* rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/* Author: Rami Ylimäki <rami.ylimaki@vincit.fi> */
#ifndef CLIENT_H
#define CLIENT_H
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif /* HAVE_DIX_CONFIG_H */
#include <X11/Xfuncproto.h>
#include <sys/types.h>
/* Client IDs. Use GetClientPid, GetClientCmdName and GetClientCmdArgs
* instead of accessing the fields directly. */
typedef struct {
pid_t pid; /* process ID, -1 if not available */
const char *cmdname; /* process name, NULL if not available */
const char *cmdargs; /* process arguments, NULL if not available */
} ClientIdRec, *ClientIdPtr;
struct _Client;
/* Initialize and clean up. */
void ReserveClientIds(struct _Client *client);
void ReleaseClientIds(struct _Client *client);
/* Determine client IDs for caching. Exported on purpose for
* extensions such as SELinux. */
extern _X_EXPORT pid_t DetermineClientPid(struct _Client *client);
extern _X_EXPORT void DetermineClientCmd(pid_t, const char **cmdname,
const char **cmdargs);
/* Query cached client IDs. Exported on purpose for drivers. */
extern _X_EXPORT pid_t GetClientPid(struct _Client *client);
extern _X_EXPORT const char *GetClientCmdName(struct _Client *client);
extern _X_EXPORT const char *GetClientCmdArgs(struct _Client *client);
#endif /* CLIENT_H */

View File

@@ -0,0 +1,156 @@
/*
Copyright 1991, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from The Open Group.
*/
#ifndef CLOSESTR_H
#define CLOSESTR_H
#include <nx-X11/Xproto.h>
#include "closure.h"
#include "dix.h"
#include "misc.h"
#include "gcstruct.h"
/* closure structures */
/* OpenFont */
typedef struct _OFclosure {
ClientPtr client;
short current_fpe;
short num_fpes;
FontPathElementPtr *fpe_list;
Mask flags;
Bool slept;
/* XXX -- get these from request buffer instead? */
char *origFontName;
int origFontNameLen;
XID fontid;
char *fontname;
int fnamelen;
FontPtr non_cachable_font;
} OFclosureRec;
/* ListFontsWithInfo */
#define XLFDMAXFONTNAMELEN 256
typedef struct _LFWIstate {
char pattern[XLFDMAXFONTNAMELEN];
int patlen;
int current_fpe;
int max_names;
Bool list_started;
void * private;
} LFWIstateRec, *LFWIstatePtr;
typedef struct _LFWIclosure {
ClientPtr client;
int num_fpes;
FontPathElementPtr *fpe_list;
xListFontsWithInfoReply *reply;
int length;
LFWIstateRec current;
LFWIstateRec saved;
int savedNumFonts;
Bool haveSaved;
Bool slept;
char *savedName;
} LFWIclosureRec;
/* ListFonts */
typedef struct _LFclosure {
ClientPtr client;
int num_fpes;
FontPathElementPtr *fpe_list;
FontNamesPtr names;
LFWIstateRec current;
LFWIstateRec saved;
Bool haveSaved;
Bool slept;
char *savedName;
int savedNameLen;
} LFclosureRec;
/* PolyText */
typedef
int (* PolyTextPtr)(
DrawablePtr /* pDraw */,
GCPtr /* pGC */,
int /* x */,
int /* y */,
int /* count */,
void * /* chars or shorts */
);
typedef struct _PTclosure {
ClientPtr client;
DrawablePtr pDraw;
GC *pGC;
unsigned char *pElt;
unsigned char *endReq;
unsigned char *data;
int xorg;
int yorg;
CARD8 reqType;
PolyTextPtr polyText;
int itemSize;
XID did;
int err;
Bool slept;
} PTclosureRec;
/* ImageText */
typedef
void (* ImageTextPtr)(
DrawablePtr /* pDraw */,
GCPtr /* pGC */,
int /* x */,
int /* y */,
int /* count */,
void * /* chars or shorts */
);
typedef struct _ITclosure {
ClientPtr client;
DrawablePtr pDraw;
GC *pGC;
BYTE nChars;
unsigned char *data;
int xorg;
int yorg;
CARD8 reqType;
ImageTextPtr imageText;
int itemSize;
XID did;
Bool slept;
} ITclosureRec;
#endif /* CLOSESTR_H */

View File

@@ -0,0 +1,57 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef CLOSURE_H
#define CLOSURE_H 1
typedef struct _LFclosure *LFclosurePtr;
typedef struct _LFWIclosure *LFWIclosurePtr;
typedef struct _OFclosure *OFclosurePtr;
typedef struct _PTclosure *PTclosurePtr;
typedef struct _ITclosure *ITclosurePtr;
#endif /* CLOSURE_H */

View File

@@ -0,0 +1,186 @@
/*
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
*/
#ifndef CMAP_H
#define CMAP_H 1
#include <nx-X11/Xproto.h>
#include "screenint.h"
#include "window.h"
/* these follow X.h's AllocNone and AllocAll */
#define CM_PSCREEN 2
#define CM_PWIN 3
/* Passed internally in colormap.c */
#define REDMAP 0
#define GREENMAP 1
#define BLUEMAP 2
#define PSEUDOMAP 3
#define AllocPrivate (-1)
#define AllocTemporary (-2)
#define DynamicClass 1
/* Values for the flags field of a colormap. These should have 1 bit set
* and not overlap */
#define IsDefault 1
#define AllAllocated 2
#define BeingCreated 4
typedef CARD32 Pixel;
typedef struct _CMEntry *EntryPtr;
/* moved to screenint.h: typedef struct _ColormapRec *ColormapPtr */
typedef struct _colorResource *colorResourcePtr;
extern int CreateColormap(
Colormap /*mid*/,
ScreenPtr /*pScreen*/,
VisualPtr /*pVisual*/,
ColormapPtr* /*ppcmap*/,
int /*alloc*/,
int /*client*/);
extern int FreeColormap(
void * /*pmap*/,
XID /*mid*/);
extern int TellLostMap(
WindowPtr /*pwin*/,
void * /* Colormap *pmid */);
extern int TellGainedMap(
WindowPtr /*pwin*/,
void * /* Colormap *pmid */);
extern int CopyColormapAndFree(
Colormap /*mid*/,
ColormapPtr /*pSrc*/,
int /*client*/);
extern int AllocColor(
ColormapPtr /*pmap*/,
unsigned short* /*pred*/,
unsigned short* /*pgreen*/,
unsigned short* /*pblue*/,
Pixel* /*pPix*/,
int /*client*/);
extern void FakeAllocColor(
ColormapPtr /*pmap*/,
xColorItem * /*item*/);
extern void FakeFreeColor(
ColormapPtr /*pmap*/,
Pixel /*pixel*/);
typedef int (*ColorCompareProcPtr)(
EntryPtr /*pent*/,
xrgb * /*prgb*/);
extern int FindColor(
ColormapPtr /*pmap*/,
EntryPtr /*pentFirst*/,
int /*size*/,
xrgb* /*prgb*/,
Pixel* /*pPixel*/,
int /*channel*/,
int /*client*/,
ColorCompareProcPtr /*comp*/);
extern int QueryColors(
ColormapPtr /*pmap*/,
int /*count*/,
Pixel* /*ppixIn*/,
xrgb* /*prgbList*/);
extern int FreeClientPixels(
void * /*pcr*/,
XID /*fakeid*/);
extern int AllocColorCells(
int /*client*/,
ColormapPtr /*pmap*/,
int /*colors*/,
int /*planes*/,
Bool /*contig*/,
Pixel* /*ppix*/,
Pixel* /*masks*/);
extern int AllocColorPlanes(
int /*client*/,
ColormapPtr /*pmap*/,
int /*colors*/,
int /*r*/,
int /*g*/,
int /*b*/,
Bool /*contig*/,
Pixel* /*pixels*/,
Pixel* /*prmask*/,
Pixel* /*pgmask*/,
Pixel* /*pbmask*/);
extern int FreeColors(
ColormapPtr /*pmap*/,
int /*client*/,
int /*count*/,
Pixel* /*pixels*/,
Pixel /*mask*/);
extern int StoreColors(
ColormapPtr /*pmap*/,
int /*count*/,
xColorItem* /*defs*/);
extern int IsMapInstalled(
Colormap /*map*/,
WindowPtr /*pWin*/);
extern Bool ResizeVisualArray(ScreenPtr /* pScreen */ ,
int /* new_vis_count */ ,
DepthPtr /* depth */ );
#endif /* CMAP_H */

View File

@@ -0,0 +1,133 @@
/*
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
*/
#ifndef CMAPSTRUCT_H
#define CMAPSTRUCT_H 1
#include <nx-X11/Xarch.h>
#include "colormap.h"
#include "screenint.h"
/* Shared color -- the color is used by AllocColorPlanes */
typedef struct
{
unsigned short color;
short refcnt;
} SHAREDCOLOR;
/* LOCO -- a local color for a PseudoColor cell. DirectColor maps always
* use the first value (called red) in the structure. What channel they
* are really talking about depends on which map they are in. */
typedef struct
{
unsigned short red, green, blue;
} LOCO;
/* SHCO -- a shared color for a PseudoColor cell. Used with AllocColorPlanes.
* DirectColor maps always use the first value (called red) in the structure.
* What channel they are really talking about depends on which map they
* are in. */
typedef struct
{
SHAREDCOLOR *red, *green, *blue;
} SHCO;
/* color map entry */
typedef struct _CMEntry
{
union
{
LOCO local;
SHCO shco;
} co;
short refcnt;
Bool fShared;
} Entry;
/*
* COLORMAPs can be used for either Direct or Pseudo color. PseudoColor
* only needs one cell table, we arbitrarily pick red. We keep track
* of that table with freeRed, numPixelsRed, and clientPixelsRed
*
* The padN variables are unfortunate ABI BC. See fdo bug #6924.
*/
typedef struct _ColormapRec
{
VisualPtr pVisual;
short class; /* PseudoColor or DirectColor */
#if defined(_XSERVER64)
short pad0;
XID pad1;
#endif
XID mid; /* client's name for colormap */
#if defined(_XSERVER64) && (X_BYTE_ORDER == X_LITTLE_ENDIAN)
XID pad2;
#endif
ScreenPtr pScreen; /* screen map is associated with */
short flags; /* 1 = IsDefault
* 2 = AllAllocated */
int freeRed;
int freeGreen;
int freeBlue;
int *numPixelsRed;
int *numPixelsGreen;
int *numPixelsBlue;
Pixel **clientPixelsRed;
Pixel **clientPixelsGreen;
Pixel **clientPixelsBlue;
Entry *red;
Entry *green;
Entry *blue;
void * devPriv;
DevUnion *devPrivates; /* dynamic devPrivates added after devPriv
already existed - must keep devPriv */
} ColormapRec;
#endif /* COLORMAP_H */

View File

@@ -0,0 +1,146 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef CURSOR_H
#define CURSOR_H
#include "misc.h"
#include "screenint.h"
#include "window.h"
#define NullCursor ((CursorPtr)NULL)
/* Provide support for alpha composited cursors */
#ifdef RENDER
#define ARGB_CURSOR
#endif
typedef struct _Cursor *CursorPtr;
typedef struct _CursorMetric *CursorMetricPtr;
extern CursorPtr rootCursor;
extern int FreeCursor(
void * /*pCurs*/,
XID /*cid*/);
/* Quartz support on Mac OS X pulls in the QuickDraw
framework whose AllocCursor function conflicts here. */
#ifdef __DARWIN__
#define AllocCursor Darwin_X_AllocCursor
#endif
extern CursorPtr AllocCursor(
unsigned char* /*psrcbits*/,
unsigned char* /*pmaskbits*/,
CursorMetricPtr /*cm*/,
unsigned /*foreRed*/,
unsigned /*foreGreen*/,
unsigned /*foreBlue*/,
unsigned /*backRed*/,
unsigned /*backGreen*/,
unsigned /*backBlue*/);
extern CursorPtr AllocCursorARGB(
unsigned char* /*psrcbits*/,
unsigned char* /*pmaskbits*/,
CARD32* /*argb*/,
CursorMetricPtr /*cm*/,
unsigned /*foreRed*/,
unsigned /*foreGreen*/,
unsigned /*foreBlue*/,
unsigned /*backRed*/,
unsigned /*backGreen*/,
unsigned /*backBlue*/);
extern int AllocGlyphCursor(
Font /*source*/,
unsigned int /*sourceChar*/,
Font /*mask*/,
unsigned int /*maskChar*/,
unsigned /*foreRed*/,
unsigned /*foreGreen*/,
unsigned /*foreBlue*/,
unsigned /*backRed*/,
unsigned /*backGreen*/,
unsigned /*backBlue*/,
CursorPtr* /*ppCurs*/,
ClientPtr /*client*/);
extern CursorPtr CreateRootCursor(
char* /*pfilename*/,
unsigned int /*glyph*/);
extern int ServerBitsFromGlyph(
FontPtr /*pfont*/,
unsigned int /*ch*/,
register CursorMetricPtr /*cm*/,
unsigned char ** /*ppbits*/);
extern Bool CursorMetricsFromGlyph(
FontPtr /*pfont*/,
unsigned /*ch*/,
CursorMetricPtr /*cm*/);
extern void CheckCursorConfinement(
WindowPtr /*pWin*/);
extern void NewCurrentScreen(
ScreenPtr /*newScreen*/,
int /*x*/,
int /*y*/);
extern Bool PointerConfinedToScreen(void);
extern void GetSpritePosition(
int * /*px*/,
int * /*py*/);
#ifdef PANORAMIX
extern int XineramaGetCursorScreen(void);
#endif /* PANORAMIX */
#endif /* CURSOR_H */

View File

@@ -0,0 +1,93 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef CURSORSTRUCT_H
#define CURSORSTRUCT_H
#include "cursor.h"
/*
* device-independent cursor storage
*/
/*
* source and mask point directly to the bits, which are in the server-defined
* bitmap format.
*/
typedef struct _CursorBits {
unsigned char *source; /* points to bits */
unsigned char *mask; /* points to bits */
Bool emptyMask; /* all zeros mask */
unsigned short width, height, xhot, yhot; /* metrics */
int refcnt; /* can be shared */
void * devPriv[MAXSCREENS]; /* set by pScr->RealizeCursor*/
#ifdef ARGB_CURSOR
CARD32 *argb; /* full-color alpha blended */
#endif
} CursorBits, *CursorBitsPtr;
typedef struct _Cursor {
CursorBitsPtr bits;
unsigned short foreRed, foreGreen, foreBlue; /* device-independent color */
unsigned short backRed, backGreen, backBlue; /* device-independent color */
int refcnt;
void * devPriv[MAXSCREENS]; /* set by pScr->RealizeCursor*/
#ifdef XFIXES
CARD32 serialNumber;
Atom name;
#endif
} CursorRec;
typedef struct _CursorMetric {
unsigned short width, height, xhot, yhot;
} CursorMetricRec;
typedef struct {
int x, y;
ScreenPtr pScreen;
} HotSpot;
#endif /* CURSORSTRUCT_H */

View File

@@ -0,0 +1,785 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef DIX_H
#define DIX_H
#include <stdint.h>
#include "gc.h"
#include "window.h"
#include "input.h"
#define EARLIER -1
#define SAMETIME 0
#define LATER 1
#define NullClient ((ClientPtr) 0)
#define REQUEST(type) \
register type *stuff = (type *)client->requestBuffer
#define REQUEST_SIZE_MATCH(req)\
if ((sizeof(req) >> 2) != client->req_len)\
return(BadLength)
#define REQUEST_AT_LEAST_SIZE(req) \
if ((sizeof(req) >> 2) > client->req_len )\
return(BadLength)
#define REQUEST_AT_LEAST_EXTRA_SIZE(req, extra) \
if (((sizeof(req) + ((uint64_t) extra)) >> 2) > client->req_len ) \
return(BadLength)
#define REQUEST_FIXED_SIZE(req, n)\
if (((sizeof(req) >> 2) > client->req_len) || \
((n >> 2) >= client->req_len) || \
((((uint64_t) sizeof(req) + (n) + 3) >> 2) != (uint64_t) client->req_len)) \
return(BadLength)
#define LEGAL_NEW_RESOURCE(id,client)\
if (!LegalNewID(id,client)) \
{\
client->errorValue = id;\
return(BadIDChoice);\
}
/* XXX if you are using this macro, you are probably not generating Match
* errors where appropriate */
#define LOOKUP_DRAWABLE(did, client)\
((DrawablePtr)LookupDrawable(did, client))
#ifdef XCSECURITY
#define SECURITY_VERIFY_DRAWABLE(pDraw, did, client, mode)\
{\
pDraw = (DrawablePtr) SecurityLookupIDByClass(client, did, \
RC_DRAWABLE, mode);\
if (!pDraw) \
{\
client->errorValue = did; \
return BadDrawable;\
}\
if (pDraw->type == UNDRAWABLE_WINDOW)\
return BadMatch;\
}
#define SECURITY_VERIFY_GEOMETRABLE(pDraw, did, client, mode)\
{\
pDraw = (DrawablePtr) SecurityLookupIDByClass(client, did, \
RC_DRAWABLE, mode);\
if (!pDraw) \
{\
client->errorValue = did; \
return BadDrawable;\
}\
}
#define SECURITY_VERIFY_GC(pGC, rid, client, mode)\
pGC = (GC *) SecurityLookupIDByType(client, rid, RT_GC, mode);\
if (!pGC)\
{\
client->errorValue = rid;\
return (BadGC);\
}
#define VERIFY_DRAWABLE(pDraw, did, client)\
SECURITY_VERIFY_DRAWABLE(pDraw, did, client, DixUnknownAccess)
#define VERIFY_GEOMETRABLE(pDraw, did, client)\
SECURITY_VERIFY_GEOMETRABLE(pDraw, did, client, DixUnknownAccess)
#define VERIFY_GC(pGC, rid, client)\
SECURITY_VERIFY_GC(pGC, rid, client, DixUnknownAccess)
#else /* not XCSECURITY */
#define VERIFY_DRAWABLE(pDraw, did, client)\
{\
pDraw = (DrawablePtr) LookupIDByClass(did, RC_DRAWABLE);\
if (!pDraw) \
{\
client->errorValue = did; \
return BadDrawable;\
}\
if (pDraw->type == UNDRAWABLE_WINDOW)\
return BadMatch;\
}
#define VERIFY_GEOMETRABLE(pDraw, did, client)\
{\
pDraw = (DrawablePtr) LookupIDByClass(did, RC_DRAWABLE);\
if (!pDraw) \
{\
client->errorValue = did; \
return BadDrawable;\
}\
}
#define VERIFY_GC(pGC, rid, client)\
pGC = (GC *)LookupIDByType(rid, RT_GC);\
if (!pGC)\
{\
client->errorValue = rid;\
return (BadGC);\
}
#define SECURITY_VERIFY_DRAWABLE(pDraw, did, client, mode)\
VERIFY_DRAWABLE(pDraw, did, client)
#define SECURITY_VERIFY_GEOMETRABLE(pDraw, did, client, mode)\
VERIFY_GEOMETRABLE(pDraw, did, client)
#define SECURITY_VERIFY_GC(pGC, rid, client, mode)\
VERIFY_GC(pGC, rid, client)
#endif /* XCSECURITY */
/*
* We think that most hardware implementations of DBE will want
* LookupID*(dbe_back_buffer_id) to return the window structure that the
* id is a back buffer for. Since both front and back buffers will
* return the same structure, you need to be able to distinguish
* somewhere what kind of buffer (front/back) was being asked for, so
* that ddx can render to the right place. That's the problem that the
* following code solves. Note: we couldn't embed this in the LookupID*
* functions because the VALIDATE_DRAWABLE_AND_GC macro often circumvents
* those functions by checking a one-element cache. That's why we're
* mucking with VALIDATE_DRAWABLE_AND_GC.
*
* If you put -DNEED_DBE_BUF_BITS into PervasiveDBEDefines, the window
* structure will have two additional bits defined, srcBuffer and
* dstBuffer, and their values will be maintained via the macros
* SET_DBE_DSTBUF and SET_DBE_SRCBUF (below). If you also
* put -DNEED_DBE_BUF_VALIDATE into PervasiveDBEDefines, the function
* DbeValidateBuffer will be called any time the bits change to give you
* a chance to do some setup. See the DBE code for more details on this
* function. We put in these levels of conditionality so that you can do
* just what you need to do, and no more. If neither of these defines
* are used, the bits won't be there, and VALIDATE_DRAWABLE_AND_GC will
* be unchanged. dpw
*/
#if defined(NEED_DBE_BUF_BITS)
#define SET_DBE_DSTBUF(_pDraw, _drawID) \
SET_DBE_BUF(_pDraw, _drawID, dstBuffer, TRUE)
#define SET_DBE_SRCBUF(_pDraw, _drawID) \
SET_DBE_BUF(_pDraw, _drawID, srcBuffer, FALSE)
#if defined (NEED_DBE_BUF_VALIDATE)
#define SET_DBE_BUF(_pDraw, _drawID, _whichBuffer, _dstbuf) \
if (_pDraw->type == DRAWABLE_WINDOW)\
{\
int thisbuf = (_pDraw->id == _drawID);\
if (thisbuf != ((WindowPtr)_pDraw)->_whichBuffer)\
{\
((WindowPtr)_pDraw)->_whichBuffer = thisbuf;\
DbeValidateBuffer((WindowPtr)_pDraw, _drawID, _dstbuf);\
}\
}
#else /* want buffer bits, but don't need to call DbeValidateBuffer */
#define SET_DBE_BUF(_pDraw, _drawID, _whichBuffer, _dstbuf) \
if (_pDraw->type == DRAWABLE_WINDOW)\
{\
((WindowPtr)_pDraw)->_whichBuffer = (_pDraw->id == _drawID);\
}
#endif /* NEED_DBE_BUF_VALIDATE */
#else /* don't want buffer bits in window */
#define SET_DBE_DSTBUF(_pDraw, _drawID) /**/
#define SET_DBE_SRCBUF(_pDraw, _drawID) /**/
#endif /* NEED_DBE_BUF_BITS */
#define VALIDATE_DRAWABLE_AND_GC(drawID, pDraw, pGC, client)\
{\
SECURITY_VERIFY_GEOMETRABLE(pDraw, drawID, client, DixWriteAccess);\
SECURITY_VERIFY_GC(pGC, stuff->gc, client, DixReadAccess);\
if ((pGC->depth != pDraw->depth) ||\
(pGC->pScreen != pDraw->pScreen))\
return (BadMatch);\
}\
SET_DBE_DSTBUF(pDraw, drawID);\
if (pGC->serialNumber != pDraw->serialNumber)\
ValidateGC(pDraw, pGC);
#define WriteReplyToClient(pClient, size, pReply) { \
if ((pClient)->swapped) \
(*ReplySwapVector[((xReq *)(pClient)->requestBuffer)->reqType]) \
(pClient, (int)(size), pReply); \
else WriteToClient(pClient, (int)(size), (pReply)); }
#define WriteSwappedDataToClient(pClient, size, pbuf) \
if ((pClient)->swapped) \
(*(pClient)->pSwapReplyFunc)(pClient, (int)(size), pbuf); \
else WriteToClient (pClient, (int)(size), (pbuf));
typedef struct _TimeStamp *TimeStampPtr;
#ifndef _XTYPEDEF_CLIENTPTR
typedef struct _Client *ClientPtr; /* also in misc.h */
#define _XTYPEDEF_CLIENTPTR
#endif
typedef struct _WorkQueue *WorkQueuePtr;
extern ClientPtr *clients;
extern ClientPtr serverClient;
extern int currentMaxClients;
typedef int HWEventQueueType;
typedef HWEventQueueType* HWEventQueuePtr;
extern HWEventQueuePtr checkForInput[2];
typedef struct _TimeStamp {
CARD32 months; /* really ~49.7 days */
CARD32 milliseconds;
} TimeStamp;
/* dispatch.c */
extern void SetInputCheck(
HWEventQueuePtr /*c0*/,
HWEventQueuePtr /*c1*/);
extern void CloseDownClient(
ClientPtr /*client*/);
extern void UpdateCurrentTime(void);
extern void UpdateCurrentTimeIf(void);
extern void InitSelections(void);
extern int dixDestroyPixmap(
void * /*value*/,
XID /*pid*/);
extern void CloseDownRetainedResources(void);
extern void InitClient(
ClientPtr /*client*/,
int /*i*/,
void * /*ospriv*/);
extern ClientPtr NextAvailableClient(
void * /*ospriv*/);
extern void SendErrorToClient(
ClientPtr /*client*/,
unsigned int /*majorCode*/,
unsigned int /*minorCode*/,
XID /*resId*/,
int /*errorCode*/);
extern void DeleteWindowFromAnySelections(
WindowPtr /*pWin*/);
extern void MarkClientException(
ClientPtr /*client*/);
extern int GetGeometry(
ClientPtr /*client*/,
xGetGeometryReply* /* wa */);
extern int SendConnSetup(
ClientPtr /*client*/,
char* /*reason*/);
extern int DoGetImage(
ClientPtr /*client*/,
int /*format*/,
Drawable /*drawable*/,
int /*x*/,
int /*y*/,
int /*width*/,
int /*height*/,
Mask /*planemask*/,
xGetImageReply ** /*im_return*/);
#if defined(DDXBEFORERESET)
extern void ddxBeforeReset (void);
#endif
/* dixutils.c */
extern void CopyISOLatin1Lowered(
char * /*dest*/,
const char * /*source*/,
int /*length*/);
extern int CompareISOLatin1Lowered(
unsigned char * /*a*/,
int alen,
unsigned char * /*b*/,
int blen);
#ifdef XCSECURITY
extern WindowPtr SecurityLookupWindow(
XID /*rid*/,
ClientPtr /*client*/,
Mask /*access_mode*/);
extern void * SecurityLookupDrawable(
XID /*rid*/,
ClientPtr /*client*/,
Mask /*access_mode*/);
extern WindowPtr LookupWindow(
XID /*rid*/,
ClientPtr /*client*/);
extern void * LookupDrawable(
XID /*rid*/,
ClientPtr /*client*/);
#else
extern WindowPtr LookupWindow(
XID /*rid*/,
ClientPtr /*client*/);
extern void * LookupDrawable(
XID /*rid*/,
ClientPtr /*client*/);
#define SecurityLookupWindow(rid, client, access_mode) \
LookupWindow(rid, client)
#define SecurityLookupDrawable(rid, client, access_mode) \
LookupDrawable(rid, client)
#endif /* XCSECURITY */
extern ClientPtr LookupClient(
XID /*rid*/,
ClientPtr /*client*/);
extern void NoopDDA(void);
extern int AlterSaveSetForClient(
ClientPtr /*client*/,
WindowPtr /*pWin*/,
unsigned /*mode*/,
Bool /*toRoot*/,
Bool /*remap*/);
extern void DeleteWindowFromAnySaveSet(
WindowPtr /*pWin*/);
extern void BlockHandler(
void * /*pTimeout*/,
void * /*pReadmask*/);
extern void WakeupHandler(
int /*result*/,
void * /*pReadmask*/);
typedef void (* WakeupHandlerProcPtr)(
void * /* blockData */,
int /* result */,
void * /* pReadmask */);
extern Bool RegisterBlockAndWakeupHandlers(
BlockHandlerProcPtr /*blockHandler*/,
WakeupHandlerProcPtr /*wakeupHandler*/,
void * /*blockData*/);
extern void RemoveBlockAndWakeupHandlers(
BlockHandlerProcPtr /*blockHandler*/,
WakeupHandlerProcPtr /*wakeupHandler*/,
void * /*blockData*/);
extern void InitBlockAndWakeupHandlers(void);
extern void ProcessWorkQueue(void);
extern void ProcessWorkQueueZombies(void);
extern Bool QueueWorkProc(
Bool (* /*function*/)(
ClientPtr /*clientUnused*/,
void * /*closure*/),
ClientPtr /*client*/,
void * /*closure*/
);
typedef Bool (* ClientSleepProcPtr)(
ClientPtr /*client*/,
void * /*closure*/);
extern Bool ClientSleep(
ClientPtr /*client*/,
ClientSleepProcPtr /* function */,
void * /*closure*/);
#ifndef ___CLIENTSIGNAL_DEFINED___
#define ___CLIENTSIGNAL_DEFINED___
extern Bool ClientSignal(
ClientPtr /*client*/);
#endif /* ___CLIENTSIGNAL_DEFINED___ */
extern void ClientWakeup(
ClientPtr /*client*/);
extern Bool ClientIsAsleep(
ClientPtr /*client*/);
/* atom.c */
extern Atom MakeAtom(
const char * /*string*/,
unsigned /*len*/,
Bool /*makeit*/);
extern Bool ValidAtom(
Atom /*atom*/);
extern const char *NameForAtom(
Atom /*atom*/);
extern void AtomError(void);
extern void FreeAllAtoms(void);
extern void InitAtoms(void);
/* events.c */
extern void SetMaskForEvent(
Mask /* mask */,
int /* event */);
extern Bool IsParent(
WindowPtr /* maybeparent */,
WindowPtr /* child */);
extern WindowPtr GetCurrentRootWindow(void);
extern WindowPtr GetSpriteWindow(void);
extern void NoticeEventTime(xEventPtr /* xE */);
extern void EnqueueEvent(
xEventPtr /* xE */,
DeviceIntPtr /* device */,
int /* count */);
extern void ComputeFreezes(void);
extern void CheckGrabForSyncs(
DeviceIntPtr /* dev */,
Bool /* thisMode */,
Bool /* otherMode */);
extern void ActivatePointerGrab(
DeviceIntPtr /* mouse */,
GrabPtr /* grab */,
TimeStamp /* time */,
Bool /* autoGrab */);
extern void DeactivatePointerGrab(
DeviceIntPtr /* mouse */);
extern void ActivateKeyboardGrab(
DeviceIntPtr /* keybd */,
GrabPtr /* grab */,
TimeStamp /* time */,
Bool /* passive */);
extern void DeactivateKeyboardGrab(
DeviceIntPtr /* keybd */);
extern void AllowSome(
ClientPtr /* client */,
TimeStamp /* time */,
DeviceIntPtr /* thisDev */,
int /* newState */);
extern void ReleaseActiveGrabs(
ClientPtr client);
extern int DeliverEventsToWindow(
WindowPtr /* pWin */,
xEventPtr /* pEvents */,
int /* count */,
Mask /* filter */,
GrabPtr /* grab */,
int /* mskidx */);
extern int DeliverDeviceEvents(
WindowPtr /* pWin */,
xEventPtr /* xE */,
GrabPtr /* grab */,
WindowPtr /* stopAt */,
DeviceIntPtr /* dev */,
int /* count */);
extern void DefineInitialRootWindow(
WindowPtr /* win */);
extern void WindowHasNewCursor(
WindowPtr /* pWin */);
extern Bool CheckDeviceGrabs(
DeviceIntPtr /* device */,
xEventPtr /* xE */,
int /* checkFirst */,
int /* count */);
extern void DeliverFocusedEvent(
DeviceIntPtr /* keybd */,
xEventPtr /* xE */,
WindowPtr /* window */,
int /* count */);
extern void DeliverGrabbedEvent(
xEventPtr /* xE */,
DeviceIntPtr /* thisDev */,
Bool /* deactivateGrab */,
int /* count */);
#ifdef XKB
extern void FixKeyState(
xEvent * /* xE */,
DeviceIntPtr /* keybd */);
#endif /* XKB */
extern void RecalculateDeliverableEvents(
WindowPtr /* pWin */);
extern int OtherClientGone(
void * /* value */,
XID /* id */);
extern void DoFocusEvents(
DeviceIntPtr /* dev */,
WindowPtr /* fromWin */,
WindowPtr /* toWin */,
int /* mode */);
extern int SetInputFocus(
ClientPtr /* client */,
DeviceIntPtr /* dev */,
Window /* focusID */,
CARD8 /* revertTo */,
Time /* ctime */,
Bool /* followOK */);
extern int GrabDevice(
ClientPtr /* client */,
DeviceIntPtr /* dev */,
unsigned /* this_mode */,
unsigned /* other_mode */,
Window /* grabWindow */,
unsigned /* ownerEvents */,
Time /* ctime */,
Mask /* mask */,
CARD8 * /* status */);
extern void InitEvents(void);
extern void CloseDownEvents(void);
extern void DeleteWindowFromAnyEvents(
WindowPtr /* pWin */,
Bool /* freeResources */);
extern Mask EventMaskForClient(
WindowPtr /* pWin */,
ClientPtr /* client */);
extern int DeliverEvents(
WindowPtr /*pWin*/,
xEventPtr /*xE*/,
int /*count*/,
WindowPtr /*otherParent*/);
extern void WriteEventsToClient(
ClientPtr /*pClient*/,
int /*count*/,
xEventPtr /*events*/);
extern int TryClientEvents(
ClientPtr /*client*/,
xEventPtr /*pEvents*/,
int /*count*/,
Mask /*mask*/,
Mask /*filter*/,
GrabPtr /*grab*/);
extern void WindowsRestructured(void);
#ifdef RANDR
void
ScreenRestructured (ScreenPtr pScreen);
#endif
extern void ResetClientPrivates(void);
extern int AllocateClientPrivateIndex(void);
extern Bool AllocateClientPrivate(
int /*index*/,
unsigned /*amount*/);
/*
* callback manager stuff
*/
#ifndef _XTYPEDEF_CALLBACKLISTPTR
typedef struct _CallbackList *CallbackListPtr; /* also in misc.h */
#define _XTYPEDEF_CALLBACKLISTPTR
#endif
typedef void (*CallbackProcPtr) (
CallbackListPtr *, void *, void *);
typedef Bool (*AddCallbackProcPtr) (
CallbackListPtr *, CallbackProcPtr, void *);
typedef Bool (*DeleteCallbackProcPtr) (
CallbackListPtr *, CallbackProcPtr, void *);
typedef void (*CallCallbacksProcPtr) (
CallbackListPtr *, void *);
typedef void (*DeleteCallbackListProcPtr) (
CallbackListPtr *);
typedef struct _CallbackProcs {
AddCallbackProcPtr AddCallback;
DeleteCallbackProcPtr DeleteCallback;
CallCallbacksProcPtr CallCallbacks;
DeleteCallbackListProcPtr DeleteCallbackList;
} CallbackFuncsRec, *CallbackFuncsPtr;
extern Bool CreateCallbackList(
CallbackListPtr * /*pcbl*/,
CallbackFuncsPtr /*cbfuncs*/);
extern Bool AddCallback(
CallbackListPtr * /*pcbl*/,
CallbackProcPtr /*callback*/,
void * /*data*/);
extern Bool DeleteCallback(
CallbackListPtr * /*pcbl*/,
CallbackProcPtr /*callback*/,
void * /*data*/);
extern void CallCallbacks(
CallbackListPtr * /*pcbl*/,
void * /*call_data*/);
extern void DeleteCallbackList(
CallbackListPtr * /*pcbl*/);
extern void InitCallbackManager(void);
/*
* ServerGrabCallback stuff
*/
extern CallbackListPtr ServerGrabCallback;
typedef enum {SERVER_GRABBED, SERVER_UNGRABBED,
CLIENT_PERVIOUS, CLIENT_IMPERVIOUS } ServerGrabState;
typedef struct {
ClientPtr client;
ServerGrabState grabstate;
} ServerGrabInfoRec;
/*
* EventCallback stuff
*/
extern CallbackListPtr EventCallback;
typedef struct {
ClientPtr client;
xEventPtr events;
int count;
} EventInfoRec;
/*
* DeviceEventCallback stuff
*/
extern CallbackListPtr DeviceEventCallback;
typedef struct {
xEventPtr events;
int count;
} DeviceEventInfoRec;
/*
* SelectionCallback stuff
*/
extern CallbackListPtr SelectionCallback;
typedef enum {
SelectionSetOwner,
SelectionWindowDestroy,
SelectionClientClose
} SelectionCallbackKind;
typedef struct {
struct _Selection *selection;
SelectionCallbackKind kind;
} SelectionInfoRec;
#endif /* DIX_H */

View File

@@ -0,0 +1,105 @@
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
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 notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of the above listed
copyright holder(s) not be used in advertising or publicity pertaining
to distribution of the software without specific, written prior
permission.
THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
********************************************************/
#ifndef DIXEVENTS_H
#define DIXEVENTS_H
extern void SetCriticalEvent(int /* event */);
extern CursorPtr GetSpriteCursor(void);
extern int ProcAllowEvents(ClientPtr /* client */);
extern int MaybeDeliverEventsToClient(
WindowPtr /* pWin */,
xEvent * /* pEvents */,
int /* count */,
Mask /* filter */,
ClientPtr /* dontClient */);
extern int ProcWarpPointer(ClientPtr /* client */);
#if 0
extern void
#ifdef XKB
CoreProcessKeyboardEvent (
#else
ProcessKeyboardEvent (
#endif
xEvent * /* xE */,
DeviceIntPtr /* keybd */,
int /* count */);
extern void
#ifdef XKB
CoreProcessPointerEvent (
#else
ProcessPointerEvent (
#endif
xEvent * /* xE */,
DeviceIntPtr /* mouse */,
int /* count */);
#endif
extern int EventSelectForWindow(
WindowPtr /* pWin */,
ClientPtr /* client */,
Mask /* mask */);
extern int EventSuppressForWindow(
WindowPtr /* pWin */,
ClientPtr /* client */,
Mask /* mask */,
Bool * /* checkOptional */);
extern int ProcSetInputFocus(ClientPtr /* client */);
extern int ProcGetInputFocus(ClientPtr /* client */);
extern int ProcGrabPointer(ClientPtr /* client */);
extern int ProcChangeActivePointerGrab(ClientPtr /* client */);
extern int ProcUngrabPointer(ClientPtr /* client */);
extern int ProcGrabKeyboard(ClientPtr /* client */);
extern int ProcUngrabKeyboard(ClientPtr /* client */);
extern int ProcQueryPointer(ClientPtr /* client */);
extern int ProcSendEvent(ClientPtr /* client */);
extern int ProcUngrabKey(ClientPtr /* client */);
extern int ProcGrabKey(ClientPtr /* client */);
extern int ProcGrabButton(ClientPtr /* client */);
extern int ProcUngrabButton(ClientPtr /* client */);
extern int ProcRecolorCursor(ClientPtr /* client */);
#endif /* DIXEVENTS_H */

View File

@@ -0,0 +1,178 @@
/***********************************************************
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef DIXFONT_H
#define DIXFONT_H 1
#include "dix.h"
#include <X11/fonts/font.h>
#include "closure.h"
#include <X11/fonts/fontstruct.h>
#ifdef HAS_XFONT2
# include <X11/fonts/libxfont2.h>
#else
# include <X11/fonts/fontutil.h>
#endif /* HAS XFONT2 */
#define NullDIXFontProp ((DIXFontPropPtr)0)
typedef struct _DIXFontProp *DIXFontPropPtr;
#ifdef HAS_XFONT2
extern xfont2_fpe_funcs_rec const **fpe_functions;
#else
extern FPEFunctions *fpe_functions;
#endif /* HAS_XFONT2 */
extern int FontToXError(int /*err*/);
extern Bool SetDefaultFont(char * /*defaultfontname*/);
extern void QueueFontWakeup(FontPathElementPtr /*fpe*/);
extern void RemoveFontWakeup(FontPathElementPtr /*fpe*/);
extern void FontWakeup(void * /*data*/,
int /*count*/,
void * /*LastSelectMask*/);
extern int OpenFont(ClientPtr /*client*/,
XID /*fid*/,
Mask /*flags*/,
unsigned /*lenfname*/,
char * /*pfontname*/);
extern int CloseFont(void * /*pfont*/,
XID /*fid*/);
typedef struct _xQueryFontReply *xQueryFontReplyPtr;
extern void QueryFont(FontPtr /*pFont*/,
xQueryFontReplyPtr /*pReply*/,
int /*nProtoCCIStructs*/);
extern int ListFonts(ClientPtr /*client*/,
unsigned char * /*pattern*/,
unsigned int /*length*/,
unsigned int /*max_names*/);
int
doListFontsWithInfo(ClientPtr /*client*/,
LFWIclosurePtr /*c*/);
extern int doPolyText(ClientPtr /*client*/,
PTclosurePtr /*c*/
);
extern int PolyText(ClientPtr /*client*/,
DrawablePtr /*pDraw*/,
GCPtr /*pGC*/,
unsigned char * /*pElt*/,
unsigned char * /*endReq*/,
int /*xorg*/,
int /*yorg*/,
int /*reqType*/,
XID /*did*/);
extern int doImageText(ClientPtr /*client*/,
ITclosurePtr /*c*/);
extern int ImageText(ClientPtr /*client*/,
DrawablePtr /*pDraw*/,
GCPtr /*pGC*/,
int /*nChars*/,
unsigned char * /*data*/,
int /*xorg*/,
int /*yorg*/,
int /*reqType*/,
XID /*did*/);
extern int SetFontPath(ClientPtr /*client*/,
int /*npaths*/,
unsigned char * /*paths*/);
extern int SetDefaultFontPath(char * /*path*/);
extern unsigned char *GetFontPath(int * /*count*/,
int * /*length*/);
extern int LoadGlyphs(ClientPtr /*client*/,
FontPtr /*pfont*/,
unsigned /*nchars*/,
int /*item_size*/,
unsigned char * /*data*/);
extern void DeleteClientFontStuff(ClientPtr /*client*/);
/* Quartz support on Mac OS X pulls in the QuickDraw
framework whose InitFonts function conflicts here. */
#ifdef __DARWIN__
#define InitFonts Darwin_X_InitFonts
#endif
extern void InitFonts(void);
extern void FreeFonts(void);
#ifdef HAS_XFONT2
extern void GetGlyphs(FontPtr /*font */ ,
unsigned long /*count */ ,
unsigned char * /*chars */ ,
FontEncoding /*fontEncoding */ ,
unsigned long * /*glyphcount */ ,
CharInfoPtr * /*glyphs */ );
#else
extern FontPtr find_old_font(XID /*id*/);
#define GetGlyphs dixGetGlyphs
extern void dixGetGlyphs(FontPtr /*font*/,
unsigned long /*count*/,
unsigned char * /*chars*/,
FontEncoding /*fontEncoding*/,
unsigned long * /*glyphcount*/,
CharInfoPtr * /*glyphs*/);
#ifdef LEGACY_XFONT1
extern void BuiltinRegisterFpeFunctions(void);
#else
extern void register_fpe_functions(void);
#endif
extern void QueryGlyphExtents(FontPtr /*pFont*/,
CharInfoPtr * /*charinfo*/,
unsigned long /*count*/,
ExtentInfoPtr /*info*/);
extern Bool QueryTextExtents(FontPtr /*pFont*/,
unsigned long /*count*/,
unsigned char * /*chars*/,
ExtentInfoPtr /*info*/);
#endif /* HAS_XFONT2 */
extern Bool ParseGlyphCachingMode(char * /*str*/);
extern void InitGlyphCaching(void);
extern void SetGlyphCachingMode(int /*newmode*/);
#endif /* DIXFONT_H */

View File

@@ -0,0 +1,96 @@
/***********************************************************
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef DIXFONTSTRUCT_H
#define DIXFONTSTRUCT_H
#include "servermd.h"
#include "dixfont.h"
#include <X11/fonts/fontstruct.h>
#ifdef HAS_XFONT2
# include <X11/fonts/libxfont2.h>
#endif /* HAS_XFONT2 */
#include "closure.h"
#include <nx-X11/Xproto.h> /* for xQueryFontReply */
#define FONTCHARSET(font) (font)
#define FONTMAXBOUNDS(font,field) (font)->info.maxbounds.field
#define FONTMINBOUNDS(font,field) (font)->info.minbounds.field
#define TERMINALFONT(font) (font)->info.terminalFont
#define FONTASCENT(font) (font)->info.fontAscent
#define FONTDESCENT(font) (font)->info.fontDescent
#define FONTGLYPHS(font) 0
#define FONTCONSTMETRICS(font) (font)->info.constantMetrics
#define FONTCONSTWIDTH(font) (font)->info.constantWidth
#define FONTALLEXIST(font) (font)->info.allExist
#define FONTFIRSTCOL(font) (font)->info.firstCol
#define FONTLASTCOL(font) (font)->info.lastCol
#define FONTFIRSTROW(font) (font)->info.firstRow
#define FONTLASTROW(font) (font)->info.lastRow
#define FONTDEFAULTCH(font) (font)->info.defaultCh
#define FONTINKMIN(font) (&((font)->info.ink_minbounds))
#define FONTINKMAX(font) (&((font)->info.ink_maxbounds))
#define FONTPROPS(font) (font)->info.props
#define FONTGLYPHBITS(base,pci) ((unsigned char *) (pci)->bits)
#define FONTINFONPROPS(font) (font)->info.nprops
/* some things haven't changed names, but we'll be careful anyway */
#define FONTREFCNT(font) (font)->refcnt
/*
* for linear char sets
*/
#define N1dChars(pfont) (FONTLASTCOL(pfont) - FONTFIRSTCOL(pfont) + 1)
/*
* for 2D char sets
*/
#define N2dChars(pfont) (N1dChars(pfont) * \
(FONTLASTROW(pfont) - FONTFIRSTROW(pfont) + 1))
#ifndef GLYPHPADBYTES
#define GLYPHPADBYTES -1
#endif
#if GLYPHPADBYTES == 0 || GLYPHPADBYTES == 1
#define GLYPHWIDTHBYTESPADDED(pci) (GLYPHWIDTHBYTES(pci))
#define PADGLYPHWIDTHBYTES(w) (((w)+7)>>3)
#endif
#if GLYPHPADBYTES == 2
#define GLYPHWIDTHBYTESPADDED(pci) ((GLYPHWIDTHBYTES(pci)+1) & ~0x1)
#define PADGLYPHWIDTHBYTES(w) (((((w)+7)>>3)+1) & ~0x1)
#endif
#if GLYPHPADBYTES == 4
#define GLYPHWIDTHBYTESPADDED(pci) ((GLYPHWIDTHBYTES(pci)+3) & ~0x3)
#define PADGLYPHWIDTHBYTES(w) (((((w)+7)>>3)+3) & ~0x3)
#endif
#if GLYPHPADBYTES == 8 /* for a cray? */
#define GLYPHWIDTHBYTESPADDED(pci) ((GLYPHWIDTHBYTES(pci)+7) & ~0x7)
#define PADGLYPHWIDTHBYTES(w) (((((w)+7)>>3)+7) & ~0x7)
#endif
#endif /* DIXFONTSTRUCT_H */

View File

@@ -0,0 +1,58 @@
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
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 notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of the above listed
copyright holder(s) not be used in advertising or publicity pertaining
to distribution of the software without specific, written prior
permission.
THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
********************************************************/
#ifndef DIXGRABS_H
#define DIXGRABS_H 1
extern GrabPtr CreateGrab(
int /* client */,
DeviceIntPtr /* device */,
WindowPtr /* window */,
Mask /* eventMask */,
Bool /* ownerEvents */,
Bool /* keyboardMode */,
Bool /* pointerMode */,
DeviceIntPtr /* modDevice */,
unsigned short /* modifiers */,
int /* type */,
KeyCode /* keybut */,
WindowPtr /* confineTo */,
CursorPtr /* cursor */);
extern int DeletePassiveGrab(
void * /* value */,
XID /* id */);
extern Bool GrabMatchesSecond(
GrabPtr /* pFirstGrab */,
GrabPtr /* pSecondGrab */);
extern int AddPassiveGrabToList(
GrabPtr /* pGrab */);
extern Bool DeletePassiveGrabFromList(
GrabPtr /* pMinuendGrab */);
#endif /* DIXGRABS_H */

View File

@@ -0,0 +1,212 @@
/***********************************************************
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef DIXSTRUCT_H
#define DIXSTRUCT_H
#include "client.h"
#include "dix.h"
#include "resource.h"
#include "cursor.h"
#include "gc.h"
#include "pixmap.h"
#include <nx-X11/Xmd.h>
/*
* direct-mapped hash table, used by resource manager to store
* translation from client ids to server addresses.
*/
extern CallbackListPtr ClientStateCallback;
typedef struct {
ClientPtr client;
xConnSetupPrefix *prefix;
xConnSetup *setup;
} NewClientInfoRec;
typedef void (*ReplySwapPtr) (
ClientPtr /* pClient */,
int /* size */,
void * /* pbuf */);
extern void ReplyNotSwappd (
ClientPtr /* pClient */,
int /* size */,
void * /* pbuf */);
typedef enum {ClientStateInitial,
ClientStateAuthenticating,
ClientStateRunning,
ClientStateRetained,
ClientStateGone,
ClientStateCheckingSecurity,
ClientStateCheckedSecurity} ClientState;
#ifdef XFIXES
typedef struct _saveSet {
struct _Window *windowPtr;
Bool toRoot;
Bool remap;
} SaveSetElt;
#define SaveSetWindow(ss) ((ss).windowPtr)
#define SaveSetToRoot(ss) ((ss).toRoot)
#define SaveSetRemap(ss) ((ss).remap)
#define SaveSetAssignWindow(ss,w) ((ss).windowPtr = (w))
#define SaveSetAssignToRoot(ss,tr) ((ss).toRoot = (tr))
#define SaveSetAssignRemap(ss,rm) ((ss).remap = (rm))
#else
typedef struct _Window *SaveSetElt;
#define SaveSetWindow(ss) (ss)
#define SaveSetToRoot(ss) FALSE
#define SaveSetRemap(ss) TRUE
#define SaveSetAssignWindow(ss,w) ((ss) = (w))
#define SaveSetAssignToRoot(ss,tr)
#define SaveSetAssignRemap(ss,rm)
#endif
typedef struct _Client {
int index;
Mask clientAsMask;
void *requestBuffer;
void *osPrivate; /* for OS layer, including scheduler */
Bool swapped;
Bool local;
ReplySwapPtr pSwapReplyFunc;
XID errorValue;
int sequence;
int closeDownMode;
int clientGone;
int noClientException; /* this client died or needs to be
* killed */
SaveSetElt *saveSet;
int numSaved;
void *screenPrivate[MAXSCREENS];
int (**requestVector) (
ClientPtr /* pClient */);
CARD32 req_len; /* length of current request */
Bool big_requests; /* supports large requests */
int priority;
ClientState clientState;
DevUnion *devPrivates;
#ifdef XKB
unsigned short xkbClientFlags;
unsigned short mapNotifyMask;
unsigned short newKeyboardNotifyMask;
unsigned short vMajor,vMinor;
KeyCode minKC,maxKC;
#endif
unsigned long replyBytesRemaining;
#ifdef XCSECURITY
XID authId;
unsigned int trustLevel;
void * (* CheckAccess)(
ClientPtr /*pClient*/,
XID /*id*/,
RESTYPE /*classes*/,
Mask /*access_mode*/,
void * /*resourceval*/);
#endif
struct _FontResolution * (*fontResFunc) ( /* no need for font.h */
ClientPtr /* pClient */,
int * /* num */);
int smart_priority;
long smart_start_tick;
long smart_stop_tick;
long smart_check_tick;
ClientIdPtr clientIds;
} ClientRec;
/*
* Scheduling interface
*/
extern long SmartScheduleTime;
extern long SmartScheduleInterval;
extern long SmartScheduleSlice;
extern long SmartScheduleMaxSlice;
#ifdef HAVE_SETITIMER
#if HAVE_SETITIMER
extern Bool SmartScheduleSignalEnable;
#else
#define SmartScheduleSignalEnable FALSE
#endif
#endif
extern void SmartScheduleStartTimer(void);
extern void SmartScheduleStopTimer(void);
#define SMART_MAX_PRIORITY (20)
#define SMART_MIN_PRIORITY (-20)
extern void SmartScheduleInit(void);
/* This prototype is used pervasively in Xext, dix */
#define DISPATCH_PROC(func) int func(ClientPtr /* client */)
typedef struct _WorkQueue {
struct _WorkQueue *next;
Bool (*function) (
ClientPtr /* pClient */,
void * /* closure */
);
ClientPtr client;
void *closure;
} WorkQueueRec;
extern TimeStamp currentTime;
extern TimeStamp lastDeviceEventTime;
extern int CompareTimeStamps(
TimeStamp /*a*/,
TimeStamp /*b*/);
extern TimeStamp ClientTimeToServerTime(CARD32 /*c*/);
typedef struct _CallbackRec {
CallbackProcPtr proc;
void * data;
Bool deleted;
struct _CallbackRec *next;
} CallbackRec, *CallbackPtr;
typedef struct _CallbackList {
CallbackFuncsRec funcs;
int inCallback;
Bool deleted;
int numDeleted;
CallbackPtr list;
} CallbackListRec;
/* proc vectors */
extern int (* InitialVector[3]) (ClientPtr /*client*/);
extern int (* ProcVector[256]) (ClientPtr /*client*/);
extern int (* SwappedProcVector[256]) (ClientPtr /*client*/);
extern ReplySwapPtr ReplySwapVector[256];
extern int ProcBadRequest(ClientPtr /*client*/);
#endif /* DIXSTRUCT_H */

View File

@@ -0,0 +1,182 @@
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
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 notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of the above listed
copyright holder(s) not be used in advertising or publicity pertaining
to distribution of the software without specific, written prior
permission.
THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
********************************************************/
/********************************************************************
* Interface of 'exevents.c'
*/
#ifndef EXEVENTS_H
#define EXEVENTS_H
extern void RegisterOtherDevice (
DeviceIntPtr /* device */);
extern void ProcessOtherEvent (
xEventPtr /* FIXME deviceKeyButtonPointer * xE */,
DeviceIntPtr /* other */,
int /* count */);
extern int InitProximityClassDeviceStruct(
DeviceIntPtr /* dev */);
extern void InitValuatorAxisStruct(
DeviceIntPtr /* dev */,
int /* axnum */,
int /* minval */,
int /* maxval */,
int /* resolution */,
int /* min_res */,
int /* max_res */);
extern void DeviceFocusEvent(
DeviceIntPtr /* dev */,
int /* type */,
int /* mode */,
int /* detail */,
WindowPtr /* pWin */);
extern int GrabButton(
ClientPtr /* client */,
DeviceIntPtr /* dev */,
BYTE /* this_device_mode */,
BYTE /* other_devices_mode */,
CARD16 /* modifiers */,
DeviceIntPtr /* modifier_device */,
CARD8 /* button */,
Window /* grabWindow */,
BOOL /* ownerEvents */,
Cursor /* rcursor */,
Window /* rconfineTo */,
Mask /* eventMask */);
extern int GrabKey(
ClientPtr /* client */,
DeviceIntPtr /* dev */,
BYTE /* this_device_mode */,
BYTE /* other_devices_mode */,
CARD16 /* modifiers */,
DeviceIntPtr /* modifier_device */,
CARD8 /* key */,
Window /* grabWindow */,
BOOL /* ownerEvents */,
Mask /* mask */);
extern int SelectForWindow(
DeviceIntPtr /* dev */,
WindowPtr /* pWin */,
ClientPtr /* client */,
Mask /* mask */,
Mask /* exclusivemasks */,
Mask /* validmasks */);
extern int AddExtensionClient (
WindowPtr /* pWin */,
ClientPtr /* client */,
Mask /* mask */,
int /* mskidx */);
extern void RecalculateDeviceDeliverableEvents(
WindowPtr /* pWin */);
extern int InputClientGone(
WindowPtr /* pWin */,
XID /* id */);
extern int SendEvent (
ClientPtr /* client */,
DeviceIntPtr /* d */,
Window /* dest */,
Bool /* propagate */,
xEvent * /* ev */,
Mask /* mask */,
int /* count */);
extern int SetButtonMapping (
ClientPtr /* client */,
DeviceIntPtr /* dev */,
int /* nElts */,
BYTE * /* map */);
extern int SetModifierMapping(
ClientPtr /* client */,
DeviceIntPtr /* dev */,
int /* len */,
int /* rlen */,
int /* numKeyPerModifier */,
KeyCode * /* inputMap */,
KeyClassPtr * /* k */);
extern void SendDeviceMappingNotify(
CARD8 /* request, */,
KeyCode /* firstKeyCode */,
CARD8 /* count */,
DeviceIntPtr /* dev */);
extern int ChangeKeyMapping(
ClientPtr /* client */,
DeviceIntPtr /* dev */,
unsigned /* len */,
int /* type */,
KeyCode /* firstKeyCode */,
CARD8 /* keyCodes */,
CARD8 /* keySymsPerKeyCode */,
KeySym * /* map */);
extern void DeleteWindowFromAnyExtEvents(
WindowPtr /* pWin */,
Bool /* freeResources */);
extern void DeleteDeviceFromAnyExtEvents(
WindowPtr /* pWin */,
DeviceIntPtr /* dev */);
extern int MaybeSendDeviceMotionNotifyHint (
deviceKeyButtonPointer * /* pEvents */,
Mask /* mask */);
extern void CheckDeviceGrabAndHintWindow (
WindowPtr /* pWin */,
int /* type */,
deviceKeyButtonPointer * /* xE */,
GrabPtr /* grab */,
ClientPtr /* client */,
Mask /* deliveryMask */);
extern Mask DeviceEventMaskForClient(
DeviceIntPtr /* dev */,
WindowPtr /* pWin */,
ClientPtr /* client */);
extern void MaybeStopDeviceHint(
DeviceIntPtr /* dev */,
ClientPtr /* client */);
extern int DeviceEventSuppressForWindow(
WindowPtr /* pWin */,
ClientPtr /* client */,
Mask /* mask */,
int /* maskndx */);
#endif /* EXEVENTS_H */

View File

@@ -0,0 +1,77 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef EXTENSION_H
#define EXTENSION_H
_XFUNCPROTOBEGIN
extern unsigned short StandardMinorOpcode(ClientPtr /*client*/);
extern unsigned short MinorOpcodeOfRequest(ClientPtr /*client*/);
extern Bool EnableDisableExtension(char *name, Bool enable);
extern void EnableDisableExtensionError(char *name, Bool enable);
extern void ResetExtensionPrivates(void);
extern int AllocateExtensionPrivateIndex(void);
extern Bool AllocateExtensionPrivate(
int /*index*/,
unsigned /*amount*/);
extern void InitExtensions(int argc, char **argv);
extern void InitVisualWrap(void);
extern void CloseDownExtensions(void);
_XFUNCPROTOEND
#endif /* EXTENSION_H */

View File

@@ -0,0 +1,165 @@
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
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 notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of the above listed
copyright holder(s) not be used in advertising or publicity pertaining
to distribution of the software without specific, written prior
permission.
THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
********************************************************/
/********************************************************************
* Interface of extinit.c
*/
#ifndef EXTINIT_H
#define EXTINIT_H
#include "extnsionst.h"
void
XInputExtensionInit(
void
);
int
ProcIDispatch (
ClientPtr /* client */
);
int
SProcIDispatch(
ClientPtr /* client */
);
void
SReplyIDispatch (
ClientPtr /* client */,
int /* len */,
xGrabDeviceReply * /* rep */
);
void
SEventIDispatch (
xEvent * /* from */,
xEvent * /* to */
);
void
SEventDeviceValuator (
deviceValuator * /* from */,
deviceValuator * /* to */
);
void
SEventFocus (
deviceFocus * /* from */,
deviceFocus * /* to */
);
void
SDeviceStateNotifyEvent (
deviceStateNotify * /* from */,
deviceStateNotify * /* to */
);
void
SDeviceKeyStateNotifyEvent (
deviceKeyStateNotify * /* from */,
deviceKeyStateNotify * /* to */
);
void
SDeviceButtonStateNotifyEvent (
deviceButtonStateNotify * /* from */,
deviceButtonStateNotify * /* to */
);
void
SChangeDeviceNotifyEvent (
changeDeviceNotify * /* from */,
changeDeviceNotify * /* to */
);
void
SDeviceMappingNotifyEvent (
deviceMappingNotify * /* from */,
deviceMappingNotify * /* to */
);
void
FixExtensionEvents (
ExtensionEntry * /* extEntry */
);
void
RestoreExtensionEvents (
void
);
void
IResetProc(
ExtensionEntry * /* unused */
);
void
AssignTypeAndName (
DeviceIntPtr /* dev */,
Atom /* type */,
char * /* name */
);
void
MakeDeviceTypeAtoms (
void
);
DeviceIntPtr
LookupDeviceIntRec (
CARD8 /* id */
);
void
SetExclusiveAccess (
Mask /* mask */
);
void
AllowPropagateSuppress (
Mask /* mask */
);
Mask
GetNextExtEventMask (
void
);
void
SetMaskForExtEvent(
Mask /* mask */,
int /* event */
);
void
SetEventInfo(
Mask /* mask */,
int /* constant */
);
#endif /* EXTINIT_H */

View File

@@ -0,0 +1,153 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef EXTENSIONSTRUCT_H
#define EXTENSIONSTRUCT_H
#include "dix.h"
#include "misc.h"
#include "screenint.h"
#include "extension.h"
#include "gc.h"
typedef struct _ExtensionEntry {
int index;
void (* CloseDown)( /* called at server shutdown */
struct _ExtensionEntry * /* extension */);
char *name; /* extension name */
int base; /* base request number */
int eventBase;
int eventLast;
int errorBase;
int errorLast;
int num_aliases;
char **aliases;
void * extPrivate;
unsigned short (* MinorOpcode)( /* called for errors */
ClientPtr /* client */);
#ifdef XCSECURITY
Bool secure; /* extension visible to untrusted clients? */
#endif
DevUnion *devPrivates;
} ExtensionEntry;
/*
* The arguments may be different for extension event swapping functions.
* Deal with this by casting when initializing the event's EventSwapVector[]
* entries.
*/
typedef void (*EventSwapPtr) (xEvent *, xEvent *);
extern EventSwapPtr EventSwapVector[128];
extern void NotImplemented ( /* FIXME: this may move to another file... */
xEvent *,
xEvent *);
typedef void (* ExtensionLookupProc)(
#ifdef EXTENSION_PROC_ARGS
EXTENSION_PROC_ARGS
#else
/* args no longer indeterminate */
char *name,
GCPtr pGC
#endif
);
typedef struct _ProcEntry {
char *name;
ExtensionLookupProc proc;
} ProcEntryRec, *ProcEntryPtr;
typedef struct _ScreenProcEntry {
int num;
ProcEntryPtr procList;
} ScreenProcEntry;
#define SetGCVector(pGC, VectorElement, NewRoutineAddress, Atom) \
pGC->VectorElement = NewRoutineAddress;
#define GetGCValue(pGC, GCElement) (pGC->GCElement)
extern ExtensionEntry *AddExtension(
char* /*name*/,
int /*NumEvents*/,
int /*NumErrors*/,
int (* /*MainProc*/)(ClientPtr /*client*/),
int (* /*SwappedMainProc*/)(ClientPtr /*client*/),
void (* /*CloseDownProc*/)(ExtensionEntry * /*extension*/),
unsigned short (* /*MinorOpcodeProc*/)(ClientPtr /*client*/)
);
extern Bool AddExtensionAlias(
char* /*alias*/,
ExtensionEntry * /*extension*/);
extern ExtensionEntry *CheckExtension(const char *extname);
extern ExtensionEntry *GetExtensionEntry(int major);
extern ExtensionLookupProc LookupProc(
char* /*name*/,
GCPtr /*pGC*/);
extern Bool RegisterProc(
char* /*name*/,
GCPtr /*pGC*/,
ExtensionLookupProc /*proc*/);
extern Bool RegisterScreenProc(
char* /*name*/,
ScreenPtr /*pScreen*/,
ExtensionLookupProc /*proc*/);
extern void DeclareExtensionSecurity(
char * /*extname*/,
Bool /*secure*/);
#endif /* EXTENSIONSTRUCT_H */

View File

@@ -0,0 +1,190 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef GC_H
#define GC_H
#include <nx-X11/X.h> /* for GContext, Mask */
#ifndef _XTYPEDEF_POINTER
/* Don't let Xdefs.h define 'pointer' */
#define _XTYPEDEF_POINTER 1
#endif /* _XTYPEDEF_POINTER */
/* FIXME: for building this code against Xlib versions older than apprx. 04/2014
* we still have to define the pointer type via Xdefs.h.
*
* The nx-libs code itself does not require the pointer definition.
*/
#undef _XTYPEDEF_POINTER
#include <nx-X11/Xdefs.h> /* for Bool */
#include <nx-X11/Xproto.h>
#include "screenint.h" /* for ScreenPtr */
#include "pixmap.h" /* for DrawablePtr */
/* clientClipType field in GC */
#define CT_NONE 0
#define CT_PIXMAP 1
#define CT_REGION 2
#define CT_UNSORTED 6
#define CT_YSORTED 10
#define CT_YXSORTED 14
#define CT_YXBANDED 18
#define GCQREASON_VALIDATE 1
#define GCQREASON_CHANGE 2
#define GCQREASON_COPY_SRC 3
#define GCQREASON_COPY_DST 4
#define GCQREASON_DESTROY 5
#define GC_CHANGE_SERIAL_BIT (((unsigned long)1)<<31)
#define GC_CALL_VALIDATE_BIT (1L<<30)
#define GCExtensionInterest (1L<<29)
#define DRAWABLE_SERIAL_BITS (~(GC_CHANGE_SERIAL_BIT))
#define MAX_SERIAL_NUM (1L<<28)
#define NEXT_SERIAL_NUMBER ((++globalSerialNumber) > MAX_SERIAL_NUM ? \
(globalSerialNumber = 1): globalSerialNumber)
typedef struct _GCInterest *GCInterestPtr;
typedef struct _GC *GCPtr;
typedef struct _GCOps *GCOpsPtr;
extern void ValidateGC(
DrawablePtr /*pDraw*/,
GCPtr /*pGC*/);
extern int ChangeGC(
GCPtr/*pGC*/,
BITS32 /*mask*/,
XID* /*pval*/);
extern int DoChangeGC(
GCPtr/*pGC*/,
BITS32 /*mask*/,
XID* /*pval*/,
int /*fPointer*/);
typedef union {
CARD32 val;
void * ptr;
} ChangeGCVal, *ChangeGCValPtr;
extern int dixChangeGC(
ClientPtr /*client*/,
GCPtr /*pGC*/,
BITS32 /*mask*/,
CARD32 * /*pval*/,
ChangeGCValPtr /*pCGCV*/);
extern GCPtr CreateGC(
DrawablePtr /*pDrawable*/,
BITS32 /*mask*/,
XID* /*pval*/,
int* /*pStatus*/);
extern int CopyGC(
GCPtr/*pgcSrc*/,
GCPtr/*pgcDst*/,
BITS32 /*mask*/);
extern int FreeGC(
void * /*pGC*/,
XID /*gid*/);
extern void SetGCMask(
GCPtr /*pGC*/,
Mask /*selectMask*/,
Mask /*newDataMask*/);
extern GCPtr CreateScratchGC(
ScreenPtr /*pScreen*/,
unsigned /*depth*/);
extern void FreeGCperDepth(
int /*screenNum*/);
extern Bool CreateGCperDepth(
int /*screenNum*/);
extern Bool CreateDefaultStipple(
int /*screenNum*/);
extern void FreeDefaultStipple(
int /*screenNum*/);
extern int SetDashes(
GCPtr /*pGC*/,
unsigned /*offset*/,
unsigned /*ndash*/,
unsigned char* /*pdash*/);
extern int VerifyRectOrder(
int /*nrects*/,
xRectangle* /*prects*/,
int /*ordering*/);
extern int SetClipRects(
GCPtr /*pGC*/,
int /*xOrigin*/,
int /*yOrigin*/,
int /*nrects*/,
xRectangle* /*prects*/,
int /*ordering*/);
extern GCPtr GetScratchGC(
unsigned /*depth*/,
ScreenPtr /*pScreen*/);
extern void FreeScratchGC(
GCPtr /*pGC*/);
#endif /* GC_H */

View File

@@ -0,0 +1,326 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef GCSTRUCT_H
#define GCSTRUCT_H
#include "gc.h"
#include "regionstr.h"
#include "region.h"
#include "pixmap.h"
#include "screenint.h"
#include <nx-X11/Xprotostr.h>
/*
* functions which modify the state of the GC
*/
typedef struct _GCFuncs {
void (* ValidateGC)(
GCPtr /*pGC*/,
unsigned long /*stateChanges*/,
DrawablePtr /*pDrawable*/);
void (* ChangeGC)(
GCPtr /*pGC*/,
unsigned long /*mask*/);
void (* CopyGC)(
GCPtr /*pGCSrc*/,
unsigned long /*mask*/,
GCPtr /*pGCDst*/);
void (* DestroyGC)(
GCPtr /*pGC*/);
void (* ChangeClip)(
GCPtr /*pGC*/,
int /*type*/,
void * /*pvalue*/,
int /*nrects*/);
void (* DestroyClip)(
GCPtr /*pGC*/);
void (* CopyClip)(
GCPtr /*pgcDst*/,
GCPtr /*pgcSrc*/);
DevUnion devPrivate;
} GCFuncs;
/*
* graphics operations invoked through a GC
*/
typedef struct _GCOps {
void (* FillSpans)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*nInit*/,
DDXPointPtr /*pptInit*/,
int * /*pwidthInit*/,
int /*fSorted*/);
void (* SetSpans)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
char * /*psrc*/,
DDXPointPtr /*ppt*/,
int * /*pwidth*/,
int /*nspans*/,
int /*fSorted*/);
void (* PutImage)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*depth*/,
int /*x*/,
int /*y*/,
int /*w*/,
int /*h*/,
int /*leftPad*/,
int /*format*/,
char * /*pBits*/);
RegionPtr (* CopyArea)(
DrawablePtr /*pSrc*/,
DrawablePtr /*pDst*/,
GCPtr /*pGC*/,
int /*srcx*/,
int /*srcy*/,
int /*w*/,
int /*h*/,
int /*dstx*/,
int /*dsty*/);
RegionPtr (* CopyPlane)(
DrawablePtr /*pSrcDrawable*/,
DrawablePtr /*pDstDrawable*/,
GCPtr /*pGC*/,
int /*srcx*/,
int /*srcy*/,
int /*width*/,
int /*height*/,
int /*dstx*/,
int /*dsty*/,
unsigned long /*bitPlane*/);
void (* PolyPoint)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*mode*/,
int /*npt*/,
DDXPointPtr /*pptInit*/);
void (* Polylines)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*mode*/,
int /*npt*/,
DDXPointPtr /*pptInit*/);
void (* PolySegment)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*nseg*/,
xSegment * /*pSegs*/);
void (* PolyRectangle)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*nrects*/,
xRectangle * /*pRects*/);
void (* PolyArc)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*narcs*/,
xArc * /*parcs*/);
void (* FillPolygon)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*shape*/,
int /*mode*/,
int /*count*/,
DDXPointPtr /*pPts*/);
void (* PolyFillRect)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*nrectFill*/,
xRectangle * /*prectInit*/);
void (* PolyFillArc)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*narcs*/,
xArc * /*parcs*/);
int (* PolyText8)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*x*/,
int /*y*/,
int /*count*/,
char * /*chars*/);
int (* PolyText16)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*x*/,
int /*y*/,
int /*count*/,
unsigned short * /*chars*/);
void (* ImageText8)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*x*/,
int /*y*/,
int /*count*/,
char * /*chars*/);
void (* ImageText16)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*x*/,
int /*y*/,
int /*count*/,
unsigned short * /*chars*/);
void (* ImageGlyphBlt)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*x*/,
int /*y*/,
unsigned int /*nglyph*/,
CharInfoPtr * /*ppci*/,
void * /*pglyphBase*/);
void (* PolyGlyphBlt)(
DrawablePtr /*pDrawable*/,
GCPtr /*pGC*/,
int /*x*/,
int /*y*/,
unsigned int /*nglyph*/,
CharInfoPtr * /*ppci*/,
void * /*pglyphBase*/);
void (* PushPixels)(
GCPtr /*pGC*/,
PixmapPtr /*pBitMap*/,
DrawablePtr /*pDst*/,
int /*w*/,
int /*h*/,
int /*x*/,
int /*y*/);
#ifdef NEED_LINEHELPER
void (* LineHelper)();
#endif
DevUnion devPrivate;
} GCOps;
/* there is padding in the bit fields because the Sun compiler doesn't
* force alignment to 32-bit boundaries. losers.
*/
typedef struct _GC {
ScreenPtr pScreen;
unsigned char depth;
unsigned char alu;
unsigned short lineWidth;
unsigned short dashOffset;
unsigned short numInDashList;
unsigned char *dash;
unsigned int lineStyle : 2;
unsigned int capStyle : 2;
unsigned int joinStyle : 2;
unsigned int fillStyle : 2;
unsigned int fillRule : 1;
unsigned int arcMode : 1;
unsigned int subWindowMode : 1;
unsigned int graphicsExposures : 1;
unsigned int clientClipType : 2; /* CT_<kind> */
unsigned int miTranslate:1; /* should mi things translate? */
unsigned int tileIsPixel:1; /* tile is solid pixel */
unsigned int fExpose:1; /* Call exposure handling */
unsigned int freeCompClip:1; /* Free composite clip */
unsigned int unused:14; /* see comment above */
unsigned long planemask;
unsigned long fgPixel;
unsigned long bgPixel;
/*
* alas -- both tile and stipple must be here as they
* are independently specifiable
*/
PixUnion tile;
PixmapPtr stipple;
DDXPointRec patOrg; /* origin for (tile, stipple) */
struct _Font *font;
DDXPointRec clipOrg;
DDXPointRec lastWinOrg; /* position of window last validated */
void * clientClip;
unsigned long stateChanges; /* masked with GC_<kind> */
unsigned long serialNumber;
GCFuncs *funcs;
GCOps *ops;
DevUnion *devPrivates;
/*
* The following were moved here from private storage to allow device-
* independent access to them from screen wrappers.
* --- 1997.11.03 Marc Aurele La France (tsi@xfree86.org)
*/
PixmapPtr pRotatedPixmap; /* tile/stipple rotated for alignment */
RegionPtr pCompositeClip;
/* fExpose & freeCompClip defined above */
} GC;
#endif /* GCSTRUCT_H */

View File

@@ -0,0 +1,146 @@
#ifndef _XSERV_GLOBAL_H_
#define _XSERV_GLOBAL_H_
#include "window.h" /* for WindowPtr */
/* Global X server variables that are visible to mi, dix, os, and ddx */
extern CARD32 defaultScreenSaverTime;
extern CARD32 defaultScreenSaverInterval;
extern CARD32 ScreenSaverTime;
extern CARD32 ScreenSaverInterval;
#ifdef SCREENSAVER
extern Bool screenSaverSuspended;
#endif
extern char *defaultFontPath;
extern int monitorResolution;
extern Bool loadableFonts;
extern int defaultColorVisualClass;
extern int GrabInProgress;
extern char *ConnectionInfo;
extern Bool noTestExtensions;
extern DDXPointRec dixScreenOrigins[MAXSCREENS];
#ifdef DPMSExtension
extern CARD32 defaultDPMSStandbyTime;
extern CARD32 defaultDPMSSuspendTime;
extern CARD32 defaultDPMSOffTime;
extern CARD32 DPMSStandbyTime;
extern CARD32 DPMSSuspendTime;
extern CARD32 DPMSOffTime;
extern CARD16 DPMSPowerLevel;
extern Bool defaultDPMSEnabled;
extern Bool DPMSEnabled;
extern Bool DPMSEnabledSwitch;
extern Bool DPMSDisabledSwitch;
extern Bool DPMSCapableFlag;
#endif
#ifdef PANORAMIX
extern Bool PanoramiXMapped;
extern Bool PanoramiXVisibilityNotifySent;
extern Bool PanoramiXWindowExposureSent;
extern Bool PanoramiXOneExposeRequest;
extern Bool PanoramiXExtensionDisabledHack;
#endif
#ifdef BIGREQS
extern Bool noBigReqExtension;
#endif
#ifdef COMPOSITE
extern Bool noCompositeExtension;
#endif
#ifdef DAMAGE
extern Bool noDamageExtension;
#endif
#ifdef DBE
extern Bool noDbeExtension;
#endif
#ifdef DPMSExtension
extern Bool noDPMSExtension;
#endif
#ifdef GLXEXT
extern Bool noGlxExtension;
#endif
#ifdef SCREENSAVER
extern Bool noScreenSaverExtension;
#endif
#ifdef MITSHM
extern Bool noMITShmExtension;
#endif
#ifdef RANDR
extern Bool noRRExtension;
extern Bool noRRXineramaExtension;
#endif
#ifdef RENDER
extern Bool noRenderExtension;
#endif
#ifdef SHAPE
extern Bool noShapeExtension;
#endif
#ifdef XCSECURITY
extern Bool noSecurityExtension;
#endif
#ifdef XSYNC
extern Bool noSyncExtension;
#endif
#ifdef RES
extern Bool noResExtension;
#endif
#ifdef XCMISC
extern Bool noXCMiscExtension;
#endif
#ifdef XF86BIGFONT
extern Bool noXFree86BigfontExtension;
#endif
#ifdef XF86DRI
extern Bool noXFree86DRIExtension;
#endif
#ifdef XFIXES
extern Bool noXFixesExtension;
#endif
#ifdef XKB
/* |noXkbExtension| is defined in xc/programs/Xserver/xkb/xkbInit.c */
extern Bool noXkbExtension;
#endif
#ifdef PANORAMIX
extern Bool noPanoramiXExtension;
#endif
#ifdef XINPUT
extern Bool noXInputExtension;
#endif
#ifdef XIDLE
extern Bool noXIdleExtension;
#endif
#ifdef XV
extern Bool noXvExtension;
#endif
#endif /* !_XSERV_GLOBAL_H_ */

View File

@@ -0,0 +1,389 @@
/************************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
********************************************************/
#ifndef INPUT_H
#define INPUT_H
#include "misc.h"
#include "screenint.h"
#include <nx-X11/Xmd.h>
#include <nx-X11/Xproto.h>
#include "window.h" /* for WindowPtr */
#define DEVICE_INIT 0
#define DEVICE_ON 1
#define DEVICE_OFF 2
#define DEVICE_CLOSE 3
#define MAP_LENGTH 256
#define DOWN_LENGTH 32 /* 256/8 => number of bytes to hold 256 bits */
#define NullGrab ((GrabPtr)NULL)
#define PointerRootWin ((WindowPtr)PointerRoot)
#define NoneWin ((WindowPtr)None)
#define NullDevice ((DevicePtr)NULL)
#ifndef FollowKeyboard
#define FollowKeyboard 3
#endif
#ifndef FollowKeyboardWin
#define FollowKeyboardWin ((WindowPtr) FollowKeyboard)
#endif
#ifndef RevertToFollowKeyboard
#define RevertToFollowKeyboard 3
#endif
typedef unsigned long Leds;
typedef struct _OtherClients *OtherClientsPtr;
typedef struct _InputClients *InputClientsPtr;
typedef struct _DeviceIntRec *DeviceIntPtr;
typedef int (*DeviceProc)(
DeviceIntPtr /*device*/,
int /*what*/);
typedef void (*ProcessInputProc)(
xEventPtr /*events*/,
DeviceIntPtr /*device*/,
int /*count*/);
typedef Bool (*DeviceHandleProc)(
DeviceIntPtr /*device*/,
void* /*data*/
);
typedef void (*DeviceUnwrapProc)(
DeviceIntPtr /*device*/,
DeviceHandleProc /*proc*/,
void* /*data*/
);
typedef struct _DeviceRec {
void * devicePrivate;
ProcessInputProc processInputProc; /* current */
ProcessInputProc realInputProc; /* deliver */
ProcessInputProc enqueueInputProc; /* enqueue */
Bool on; /* used by DDX to keep state */
} DeviceRec, *DevicePtr;
typedef struct {
int click, bell, bell_pitch, bell_duration;
Bool autoRepeat;
unsigned char autoRepeats[32];
Leds leds;
unsigned char id;
} KeybdCtrl;
typedef struct {
KeySym *map;
KeyCode minKeyCode,
maxKeyCode;
int mapWidth;
} KeySymsRec, *KeySymsPtr;
typedef struct {
int num, den, threshold;
unsigned char id;
} PtrCtrl;
typedef struct {
int resolution, min_value, max_value;
int integer_displayed;
unsigned char id;
} IntegerCtrl;
typedef struct {
int max_symbols, num_symbols_supported;
int num_symbols_displayed;
KeySym *symbols_supported;
KeySym *symbols_displayed;
unsigned char id;
} StringCtrl;
typedef struct {
int percent, pitch, duration;
unsigned char id;
} BellCtrl;
typedef struct {
Leds led_values;
Mask led_mask;
unsigned char id;
} LedCtrl;
extern int AllocateDevicePrivateIndex(void);
extern Bool AllocateDevicePrivate(DeviceIntPtr device, int index);
extern void ResetDevicePrivateIndex(void);
extern KeybdCtrl defaultKeyboardControl;
extern PtrCtrl defaultPointerControl;
#undef AddInputDevice
extern DevicePtr AddInputDevice(
DeviceProc /*deviceProc*/,
Bool /*autoStart*/);
#define AddInputDevice(deviceProc, autoStart) \
_AddInputDevice(deviceProc, autoStart)
extern DeviceIntPtr _AddInputDevice(
DeviceProc /*deviceProc*/,
Bool /*autoStart*/);
extern Bool EnableDevice(
DeviceIntPtr /*device*/);
extern Bool DisableDevice(
DeviceIntPtr /*device*/);
extern int InitAndStartDevices(void);
extern void CloseDownDevices(void);
extern void RemoveDevice(
DeviceIntPtr /*dev*/);
extern int NumMotionEvents(void);
#undef RegisterPointerDevice
extern void RegisterPointerDevice(
DevicePtr /*device*/);
#define RegisterPointerDevice(device) \
_RegisterPointerDevice(device)
extern void _RegisterPointerDevice(
DeviceIntPtr /*device*/);
#undef RegisterKeyboardDevice
extern void RegisterKeyboardDevice(
DevicePtr /*device*/);
#define RegisterKeyboardDevice(device) \
_RegisterKeyboardDevice(device)
extern void _RegisterKeyboardDevice(
DeviceIntPtr /*device*/);
extern DevicePtr LookupKeyboardDevice(void);
extern DevicePtr LookupPointerDevice(void);
extern DevicePtr LookupDevice(
int /* id */);
extern void QueryMinMaxKeyCodes(
KeyCode* /*minCode*/,
KeyCode* /*maxCode*/);
extern Bool SetKeySymsMap(
KeySymsPtr /*dst*/,
KeySymsPtr /*src*/);
extern Bool InitKeyClassDeviceStruct(
DeviceIntPtr /*device*/,
KeySymsPtr /*pKeySyms*/,
CARD8 /*pModifiers*/[]);
extern Bool InitButtonClassDeviceStruct(
DeviceIntPtr /*device*/,
int /*numButtons*/,
CARD8* /*map*/);
typedef int (*ValuatorMotionProcPtr)(
DeviceIntPtr /*pdevice*/,
xTimecoord * /*coords*/,
unsigned long /*start*/,
unsigned long /*stop*/,
ScreenPtr /*pScreen*/);
extern Bool InitValuatorClassDeviceStruct(
DeviceIntPtr /*device*/,
int /*numAxes*/,
ValuatorMotionProcPtr /* motionProc */,
int /*numMotionEvents*/,
int /*mode*/);
extern Bool InitFocusClassDeviceStruct(
DeviceIntPtr /*device*/);
typedef void (*BellProcPtr)(
int /*percent*/,
DeviceIntPtr /*device*/,
void * /*ctrl*/,
int);
typedef void (*KbdCtrlProcPtr)(
DeviceIntPtr /*device*/,
KeybdCtrl * /*ctrl*/);
extern Bool InitKbdFeedbackClassDeviceStruct(
DeviceIntPtr /*device*/,
BellProcPtr /*bellProc*/,
KbdCtrlProcPtr /*controlProc*/);
typedef void (*PtrCtrlProcPtr)(
DeviceIntPtr /*device*/,
PtrCtrl * /*ctrl*/);
extern Bool InitPtrFeedbackClassDeviceStruct(
DeviceIntPtr /*device*/,
PtrCtrlProcPtr /*controlProc*/);
typedef void (*StringCtrlProcPtr)(
DeviceIntPtr /*device*/,
StringCtrl * /*ctrl*/);
extern Bool InitStringFeedbackClassDeviceStruct(
DeviceIntPtr /*device*/,
StringCtrlProcPtr /*controlProc*/,
int /*max_symbols*/,
int /*num_symbols_supported*/,
KeySym* /*symbols*/);
typedef void (*BellCtrlProcPtr)(
DeviceIntPtr /*device*/,
BellCtrl * /*ctrl*/);
extern Bool InitBellFeedbackClassDeviceStruct(
DeviceIntPtr /*device*/,
BellProcPtr /*bellProc*/,
BellCtrlProcPtr /*controlProc*/);
typedef void (*LedCtrlProcPtr)(
DeviceIntPtr /*device*/,
LedCtrl * /*ctrl*/);
extern Bool InitLedFeedbackClassDeviceStruct(
DeviceIntPtr /*device*/,
LedCtrlProcPtr /*controlProc*/);
typedef void (*IntegerCtrlProcPtr)(
DeviceIntPtr /*device*/,
IntegerCtrl * /*ctrl*/);
extern Bool InitIntegerFeedbackClassDeviceStruct(
DeviceIntPtr /*device*/,
IntegerCtrlProcPtr /*controlProc*/);
extern Bool InitPointerDeviceStruct(
DevicePtr /*device*/,
CARD8* /*map*/,
int /*numButtons*/,
ValuatorMotionProcPtr /*motionProc*/,
PtrCtrlProcPtr /*controlProc*/,
int /*numMotionEvents*/);
extern Bool InitKeyboardDeviceStruct(
DevicePtr /*device*/,
KeySymsPtr /*pKeySyms*/,
CARD8 /*pModifiers*/[],
BellProcPtr /*bellProc*/,
KbdCtrlProcPtr /*controlProc*/);
extern void SendMappingNotify(
unsigned int /*request*/,
unsigned int /*firstKeyCode*/,
unsigned int /*count*/,
ClientPtr /* client */);
extern Bool BadDeviceMap(
BYTE* /*buff*/,
int /*length*/,
unsigned /*low*/,
unsigned /*high*/,
XID* /*errval*/);
extern Bool AllModifierKeysAreUp(
DeviceIntPtr /*device*/,
CARD8* /*map1*/,
int /*per1*/,
CARD8* /*map2*/,
int /*per2*/);
extern void NoteLedState(
DeviceIntPtr /*keybd*/,
int /*led*/,
Bool /*on*/);
extern void MaybeStopHint(
DeviceIntPtr /*device*/,
ClientPtr /*client*/);
extern void ProcessPointerEvent(
xEventPtr /*xE*/,
DeviceIntPtr /*mouse*/,
int /*count*/);
extern void ProcessKeyboardEvent(
xEventPtr /*xE*/,
DeviceIntPtr /*keybd*/,
int /*count*/);
#ifdef XKB
extern void CoreProcessPointerEvent(
xEventPtr /*xE*/,
DeviceIntPtr /*mouse*/,
int /*count*/);
extern void CoreProcessKeyboardEvent(
xEventPtr /*xE*/,
DeviceIntPtr /*keybd*/,
int /*count*/);
#endif
extern Bool LegalModifier(
unsigned int /*key*/,
DevicePtr /*pDev*/);
extern void ProcessInputEvents(void);
extern void InitInput(
int /*argc*/,
char ** /*argv*/);
#endif /* INPUT_H */

View File

@@ -0,0 +1,317 @@
/************************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
********************************************************/
#ifndef INPUTSTRUCT_H
#define INPUTSTRUCT_H
#include "input.h"
#include "window.h"
#include "dixstruct.h"
#define BitIsOn(ptr, bit) (((BYTE *) (ptr))[(bit)>>3] & (1 << ((bit) & 7)))
#define SameClient(obj,client) \
(CLIENT_BITS((obj)->resource) == (client)->clientAsMask)
#define MAX_DEVICES 20
#define EMASKSIZE MAX_DEVICES
/* Kludge: OtherClients and InputClients must be compatible, see code */
typedef struct _OtherClients {
OtherClientsPtr next;
XID resource; /* id for putting into resource manager */
Mask mask;
} OtherClients;
typedef struct _InputClients {
InputClientsPtr next;
XID resource; /* id for putting into resource manager */
Mask mask[EMASKSIZE];
} InputClients;
typedef struct _OtherInputMasks {
Mask deliverableEvents[EMASKSIZE];
Mask inputEvents[EMASKSIZE];
Mask dontPropagateMask[EMASKSIZE];
InputClientsPtr inputClients;
} OtherInputMasks;
/*
* The following structure gets used for both active and passive grabs. For
* active grabs some of the fields (e.g. modifiers) are not used. However,
* that is not much waste since there aren't many active grabs (one per
* keyboard/pointer device) going at once in the server.
*/
#define MasksPerDetailMask 8 /* 256 keycodes and 256 possible
modifier combinations, but only
3 buttons. */
typedef struct _DetailRec { /* Grab details may be bit masks */
unsigned short exact;
Mask *pMask;
} DetailRec;
typedef struct _GrabRec {
GrabPtr next; /* for chain of passive grabs */
XID resource;
DeviceIntPtr device;
WindowPtr window;
unsigned ownerEvents:1;
unsigned keyboardMode:1;
unsigned pointerMode:1;
unsigned coreGrab:1; /* grab is on core device */
unsigned coreMods:1; /* modifiers are on core keyboard */
CARD8 type; /* event type */
DetailRec modifiersDetail;
DeviceIntPtr modifierDevice;
DetailRec detail; /* key or button */
WindowPtr confineTo; /* always NULL for keyboards */
CursorPtr cursor; /* always NULL for keyboards */
Mask eventMask;
} GrabRec;
typedef struct _KeyClassRec {
CARD8 down[DOWN_LENGTH];
KeyCode *modifierKeyMap;
KeySymsRec curKeySyms;
int modifierKeyCount[8];
CARD8 modifierMap[MAP_LENGTH];
CARD8 maxKeysPerModifier;
unsigned short state;
unsigned short prev_state;
#ifdef XKB
struct _XkbSrvInfo *xkbInfo;
#endif
} KeyClassRec, *KeyClassPtr;
typedef struct _AxisInfo {
int resolution;
int min_resolution;
int max_resolution;
int min_value;
int max_value;
} AxisInfo, *AxisInfoPtr;
typedef struct _ValuatorClassRec {
ValuatorMotionProcPtr GetMotionProc;
int numMotionEvents;
WindowPtr motionHintWindow;
AxisInfoPtr axes;
unsigned short numAxes;
int *axisVal;
/* the next two are only written by xtest and never read currently. They exist
to satisfy the compiler. Once Xi is updated, too, they will be a regular member
anyway */
int lastx, lasty; /* last event recorded, not posted to
* client; see dix/devices.c */
CARD8 mode;
} ValuatorClassRec, *ValuatorClassPtr;
typedef struct _ButtonClassRec {
CARD8 numButtons;
CARD8 buttonsDown; /* number of buttons currently down */
unsigned short state;
Mask motionMask;
CARD8 down[DOWN_LENGTH];
CARD8 map[MAP_LENGTH];
#ifdef XKB
union _XkbAction * xkb_acts;
#endif
} ButtonClassRec, *ButtonClassPtr;
typedef struct _FocusClassRec {
WindowPtr win;
int revert;
TimeStamp time;
WindowPtr *trace;
int traceSize;
int traceGood;
} FocusClassRec, *FocusClassPtr;
typedef struct _ProximityClassRec {
char pad;
} ProximityClassRec, *ProximityClassPtr;
typedef struct _KbdFeedbackClassRec *KbdFeedbackPtr;
typedef struct _PtrFeedbackClassRec *PtrFeedbackPtr;
typedef struct _IntegerFeedbackClassRec *IntegerFeedbackPtr;
typedef struct _StringFeedbackClassRec *StringFeedbackPtr;
typedef struct _BellFeedbackClassRec *BellFeedbackPtr;
typedef struct _LedFeedbackClassRec *LedFeedbackPtr;
typedef struct _KbdFeedbackClassRec {
BellProcPtr BellProc;
KbdCtrlProcPtr CtrlProc;
KeybdCtrl ctrl;
KbdFeedbackPtr next;
#ifdef XKB
struct _XkbSrvLedInfo *xkb_sli;
#endif
} KbdFeedbackClassRec;
typedef struct _PtrFeedbackClassRec {
PtrCtrlProcPtr CtrlProc;
PtrCtrl ctrl;
PtrFeedbackPtr next;
} PtrFeedbackClassRec;
typedef struct _IntegerFeedbackClassRec {
IntegerCtrlProcPtr CtrlProc;
IntegerCtrl ctrl;
IntegerFeedbackPtr next;
} IntegerFeedbackClassRec;
typedef struct _StringFeedbackClassRec {
StringCtrlProcPtr CtrlProc;
StringCtrl ctrl;
StringFeedbackPtr next;
} StringFeedbackClassRec;
typedef struct _BellFeedbackClassRec {
BellProcPtr BellProc;
BellCtrlProcPtr CtrlProc;
BellCtrl ctrl;
BellFeedbackPtr next;
} BellFeedbackClassRec;
typedef struct _LedFeedbackClassRec {
LedCtrlProcPtr CtrlProc;
LedCtrl ctrl;
LedFeedbackPtr next;
#ifdef XKB
struct _XkbSrvLedInfo *xkb_sli;
#endif
} LedFeedbackClassRec;
/* states for devices */
#define NOT_GRABBED 0
#define THAWED 1
#define THAWED_BOTH 2 /* not a real state */
#define FREEZE_NEXT_EVENT 3
#define FREEZE_BOTH_NEXT_EVENT 4
#define FROZEN 5 /* any state >= has device frozen */
#define FROZEN_NO_EVENT 5
#define FROZEN_WITH_EVENT 6
#define THAW_OTHERS 7
typedef struct _DeviceIntRec {
DeviceRec public;
DeviceIntPtr next;
TimeStamp grabTime;
Bool startup; /* true if needs to be turned on at
server intialization time */
DeviceProc deviceProc; /* proc(DevicePtr, DEVICE_xx). It is
used to initialize, turn on, or
turn off the device */
Bool inited; /* TRUE if INIT returns Success */
GrabPtr grab; /* the grabber - used by DIX */
struct {
Bool frozen;
int state;
GrabPtr other; /* if other grab has this frozen */
xEvent *event; /* saved to be replayed */
int evcount;
} sync;
Atom type;
char *name;
CARD8 id;
CARD8 activatingKey;
Bool fromPassiveGrab;
GrabRec activeGrab;
void (*ActivateGrab) (
DeviceIntPtr /*device*/,
GrabPtr /*grab*/,
TimeStamp /*time*/,
Bool /*autoGrab*/);
void (*DeactivateGrab)(
DeviceIntPtr /*device*/);
KeyClassPtr key;
ValuatorClassPtr valuator;
ButtonClassPtr button;
FocusClassPtr focus;
ProximityClassPtr proximity;
KbdFeedbackPtr kbdfeed;
PtrFeedbackPtr ptrfeed;
IntegerFeedbackPtr intfeed;
StringFeedbackPtr stringfeed;
BellFeedbackPtr bell;
LedFeedbackPtr leds;
#ifdef XKB
struct _XkbInterest * xkb_interest;
#endif
DevUnion *devPrivates;
int nPrivates;
DeviceUnwrapProc unwrapProc;
} DeviceIntRec;
typedef struct {
int numDevices; /* total number of devices */
DeviceIntPtr devices; /* all devices turned on */
DeviceIntPtr off_devices; /* all devices turned off */
DeviceIntPtr keyboard; /* the main one for the server */
DeviceIntPtr pointer;
} InputInfo;
extern InputInfo inputInfo;
/* for keeping the events for devices grabbed synchronously */
typedef struct _QdEvent *QdEventPtr;
typedef struct _QdEvent {
QdEventPtr next;
DeviceIntPtr device;
ScreenPtr pScreen; /* what screen the pointer was on */
unsigned long months; /* milliseconds is in the event */
xEvent *event;
int evcount;
} QdEventRec;
#endif /* INPUTSTRUCT_H */

View File

@@ -0,0 +1,494 @@
/*
* Copyright © 2010 Intel Corporation
* Copyright © 2010 Francisco Jerez <currojerez@riseup.net>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*
*/
#ifndef _XORG_LIST_H_
#define _XORG_LIST_H_
#include <stddef.h> /* offsetof() */
/**
* @file Classic doubly-link circular list implementation.
* For real usage examples of the linked list, see the file test/list.c
*
* Example:
* We need to keep a list of struct foo in the parent struct bar, i.e. what
* we want is something like this.
*
* struct bar {
* ...
* struct foo *list_of_foos; -----> struct foo {}, struct foo {}, struct foo{}
* ...
* }
*
* We need one list head in bar and a list element in all list_of_foos (both are of
* data type 'struct xorg_list').
*
* struct bar {
* ...
* struct xorg_list list_of_foos;
* ...
* }
*
* struct foo {
* ...
* struct xorg_list entry;
* ...
* }
*
* Now we initialize the list head:
*
* struct bar bar;
* ...
* xorg_list_init(&bar.list_of_foos);
*
* Then we create the first element and add it to this list:
*
* struct foo *foo = malloc(...);
* ....
* xorg_list_add(&foo->entry, &bar.list_of_foos);
*
* Repeat the above for each element you want to add to the list. Deleting
* works with the element itself.
* xorg_list_del(&foo->entry);
* free(foo);
*
* Note: calling xorg_list_del(&bar.list_of_foos) will set bar.list_of_foos to an empty
* list again.
*
* Looping through the list requires a 'struct foo' as iterator and the
* name of the field the subnodes use.
*
* struct foo *iterator;
* xorg_list_for_each_entry(iterator, &bar.list_of_foos, entry) {
* if (iterator->something == ...)
* ...
* }
*
* Note: You must not call xorg_list_del() on the iterator if you continue the
* loop. You need to run the safe for-each loop instead:
*
* struct foo *iterator, *next;
* xorg_list_for_each_entry_safe(iterator, next, &bar.list_of_foos, entry) {
* if (...)
* xorg_list_del(&iterator->entry);
* }
*
*/
/**
* The linkage struct for list nodes. This struct must be part of your
* to-be-linked struct. struct xorg_list is required for both the head of the
* list and for each list node.
*
* Position and name of the struct xorg_list field is irrelevant.
* There are no requirements that elements of a list are of the same type.
* There are no requirements for a list head, any struct xorg_list can be a list
* head.
*/
struct xorg_list {
struct xorg_list *next, *prev;
};
/**
* Initialize the list as an empty list.
*
* Example:
* xorg_list_init(&bar->list_of_foos);
*
* @param list The list to initialize
*/
static inline void
xorg_list_init(struct xorg_list *list)
{
list->next = list->prev = list;
}
static inline void
__xorg_list_add(struct xorg_list *entry,
struct xorg_list *prev, struct xorg_list *next)
{
next->prev = entry;
entry->next = next;
entry->prev = prev;
prev->next = entry;
}
/**
* Insert a new element after the given list head. The new element does not
* need to be initialised as empty list.
* The list changes from:
* head → some element → ...
* to
* head → new element → older element → ...
*
* Example:
* struct foo *newfoo = malloc(...);
* xorg_list_add(&newfoo->entry, &bar->list_of_foos);
*
* @param entry The new element to prepend to the list.
* @param head The existing list.
*/
static inline void
xorg_list_add(struct xorg_list *entry, struct xorg_list *head)
{
__xorg_list_add(entry, head, head->next);
}
/**
* Append a new element to the end of the list given with this list head.
*
* The list changes from:
* head → some element → ... → lastelement
* to
* head → some element → ... → lastelement → new element
*
* Example:
* struct foo *newfoo = malloc(...);
* xorg_list_append(&newfoo->entry, &bar->list_of_foos);
*
* @param entry The new element to prepend to the list.
* @param head The existing list.
*/
static inline void
xorg_list_append(struct xorg_list *entry, struct xorg_list *head)
{
__xorg_list_add(entry, head->prev, head);
}
static inline void
__xorg_list_del(struct xorg_list *prev, struct xorg_list *next)
{
next->prev = prev;
prev->next = next;
}
/**
* Remove the element from the list it is in. Using this function will reset
* the pointers to/from this element so it is removed from the list. It does
* NOT free the element itself or manipulate it otherwise.
*
* Using xorg_list_del on a pure list head (like in the example at the top of
* this file) will NOT remove the first element from
* the list but rather reset the list as empty list.
*
* Example:
* xorg_list_del(&foo->entry);
*
* @param entry The element to remove.
*/
static inline void
xorg_list_del(struct xorg_list *entry)
{
__xorg_list_del(entry->prev, entry->next);
xorg_list_init(entry);
}
/**
* Check if the list is empty.
*
* Example:
* xorg_list_is_empty(&bar->list_of_foos);
*
* @return True if the list contains one or more elements or False otherwise.
*/
static inline int
xorg_list_is_empty(struct xorg_list *head)
{
return head->next == head;
}
/**
* Returns a pointer to the container of this list element.
*
* Example:
* struct foo* f;
* f = container_of(&foo->entry, struct foo, entry);
* assert(f == foo);
*
* @param ptr Pointer to the struct xorg_list.
* @param type Data type of the list element.
* @param member Member name of the struct xorg_list field in the list element.
* @return A pointer to the data struct containing the list head.
*/
#ifndef container_of
#define container_of(ptr, type, member) \
(type *)((char *)(ptr) - offsetof(type, member))
#endif
/**
* Alias of container_of
*/
#define xorg_list_entry(ptr, type, member) \
container_of(ptr, type, member)
/**
* Retrieve the first list entry for the given list pointer.
*
* Example:
* struct foo *first;
* first = xorg_list_first_entry(&bar->list_of_foos, struct foo, list_of_foos);
*
* @param ptr The list head
* @param type Data type of the list element to retrieve
* @param member Member name of the struct xorg_list field in the list element.
* @return A pointer to the first list element.
*/
#define xorg_list_first_entry(ptr, type, member) \
xorg_list_entry((ptr)->next, type, member)
/**
* Retrieve the last list entry for the given listpointer.
*
* Example:
* struct foo *first;
* first = xorg_list_last_entry(&bar->list_of_foos, struct foo, list_of_foos);
*
* @param ptr The list head
* @param type Data type of the list element to retrieve
* @param member Member name of the struct xorg_list field in the list element.
* @return A pointer to the last list element.
*/
#define xorg_list_last_entry(ptr, type, member) \
xorg_list_entry((ptr)->prev, type, member)
#ifdef HAVE_TYPEOF
#define __container_of(ptr, sample, member) \
container_of(ptr, typeof(*sample), member)
#else
/* This implementation of __container_of has undefined behavior according
* to the C standard, but it works in many cases. If your compiler doesn't
* support typeof() and fails with this implementation, please try a newer
* compiler.
*/
#define __container_of(ptr, sample, member) \
(void *)((char *)(ptr) \
- ((char *)&(sample)->member - (char *)(sample)))
#endif
/**
* Loop through the list given by head and set pos to struct in the list.
*
* Example:
* struct foo *iterator;
* xorg_list_for_each_entry(iterator, &bar->list_of_foos, entry) {
* [modify iterator]
* }
*
* This macro is not safe for node deletion. Use xorg_list_for_each_entry_safe
* instead.
*
* @param pos Iterator variable of the type of the list elements.
* @param head List head
* @param member Member name of the struct xorg_list in the list elements.
*
*/
#define xorg_list_for_each_entry(pos, head, member) \
for (pos = NULL, \
pos = __container_of((head)->next, pos, member); \
&pos->member != (head); \
pos = __container_of(pos->member.next, pos, member))
/**
* Loop through the list, keeping a backup pointer to the element. This
* macro allows for the deletion of a list element while looping through the
* list.
*
* See xorg_list_for_each_entry for more details.
*/
#define xorg_list_for_each_entry_safe(pos, tmp, head, member) \
for (pos = NULL, \
pos = __container_of((head)->next, pos, member), \
tmp = __container_of(pos->member.next, pos, member); \
&pos->member != (head); \
pos = tmp, tmp = __container_of(pos->member.next, tmp, member))
/* NULL-Terminated List Interface
*
* The interface below does _not_ use the struct xorg_list as described above.
* It is mainly for legacy structures that cannot easily be switched to
* struct xorg_list.
*
* This interface is for structs like
* struct foo {
* [...]
* struct foo *next;
* [...]
* };
*
* The position and field name of "next" are arbitrary.
*/
/**
* Init the element as null-terminated list.
*
* Example:
* struct foo *list = malloc();
* nt_list_init(list, next);
*
* @param list The list element that will be the start of the list
* @param member Member name of the field pointing to next struct
*/
#define nt_list_init(_list, _member) \
(_list)->_member = NULL
/**
* Returns the next element in the list or NULL on termination.
*
* Example:
* struct foo *element = list;
* while ((element = nt_list_next(element, next)) { }
*
* This macro is not safe for node deletion. Use nt_list_for_each_entry_safe
* instead.
*
* @param list The list or current element.
* @param member Member name of the field pointing to next struct.
*/
#define nt_list_next(_list, _member) \
(_list)->_member
/**
* Iterate through each element in the list.
*
* Example:
* struct foo *iterator;
* nt_list_for_each_entry(iterator, list, next) {
* [modify iterator]
* }
*
* @param entry Assigned to the current list element
* @param list The list to iterate through.
* @param member Member name of the field pointing to next struct.
*/
#define nt_list_for_each_entry(_entry, _list, _member) \
for (_entry = _list; _entry; _entry = (_entry)->_member)
/**
* Iterate through each element in the list, keeping a backup pointer to the
* element. This macro allows for the deletion of a list element while
* looping through the list.
*
* See nt_list_for_each_entry for more details.
*
* @param entry Assigned to the current list element
* @param tmp The pointer to the next element
* @param list The list to iterate through.
* @param member Member name of the field pointing to next struct.
*/
#define nt_list_for_each_entry_safe(_entry, _tmp, _list, _member) \
for (_entry = _list, _tmp = (_entry) ? (_entry)->_member : NULL;\
_entry; \
_entry = _tmp, _tmp = (_tmp) ? (_tmp)->_member: NULL)
/**
* Append the element to the end of the list. This macro may be used to
* merge two lists.
*
* Example:
* struct foo *elem = malloc(...);
* nt_list_init(elem, next)
* nt_list_append(elem, list, struct foo, next);
*
* Resulting list order:
* list_item_0 -> list_item_1 -> ... -> elem_item_0 -> elem_item_1 ...
*
* @param entry An entry (or list) to append to the list
* @param list The list to append to. This list must be a valid list, not
* NULL.
* @param type The list type
* @param member Member name of the field pointing to next struct
*/
#define nt_list_append(_entry, _list, _type, _member) \
do { \
_type *__iterator = _list; \
while (__iterator->_member) { __iterator = __iterator->_member;}\
__iterator->_member = _entry; \
} while (0)
/**
* Insert the element at the next position in the list. This macro may be
* used to insert a list into a list.
*
* struct foo *elem = malloc(...);
* nt_list_init(elem, next)
* nt_list_insert(elem, list, struct foo, next);
*
* Resulting list order:
* list_item_0 -> elem_item_0 -> elem_item_1 ... -> list_item_1 -> ...
*
* @param entry An entry (or list) to append to the list
* @param list The list to insert to. This list must be a valid list, not
* NULL.
* @param type The list type
* @param member Member name of the field pointing to next struct
*/
#define nt_list_insert(_entry, _list, _type, _member) \
do { \
nt_list_append((_list)->_member, _entry, _type, _member); \
(_list)->_member = _entry; \
} while (0)
/**
* Delete the entry from the list by iterating through the list and
* removing any reference from the list to the entry.
*
* Example:
* struct foo *elem = <assign to right element>
* nt_list_del(elem, list, struct foo, next);
*
* @param entry The entry to delete from the list. entry is always
* re-initialized as a null-terminated list.
* @param list The list containing the entry, set to the new list without
* the removed entry.
* @param type The list type
* @param member Member name of the field pointing to the next entry
*/
#define nt_list_del(_entry, _list, _type, _member) \
do { \
_type *__e = _entry; \
if (__e == NULL || _list == NULL) break; \
if ((_list) == __e) { \
_list = __e->_member; \
} else { \
_type *__prev = _list; \
while (__prev->_member && __prev->_member != __e) \
__prev = nt_list_next(__prev, _member); \
if (__prev->_member) \
__prev->_member = __e->_member; \
} \
nt_list_init(__e, _member); \
} while(0)
/**
* DO NOT USE THIS.
* This is a remainder of the xfree86 DDX attempt of having a set of generic
* list functions. Unfortunately, the xf86OptionRec uses it and we can't
* easily get rid of it. Do not use for new code.
*/
typedef struct generic_list_rec {
void *next;
} GenericListRec, *GenericListPtr, *glp;
#endif

View File

@@ -0,0 +1,400 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
Copyright 1992, 1993 Data General Corporation;
Copyright 1992, 1993 OMRON Corporation
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
neither the name OMRON or DATA GENERAL be used in advertising or publicity
pertaining to distribution of the software without specific, written prior
permission of the party whose name is to be used. Neither OMRON or
DATA GENERAL make any representation about the suitability of this software
for any purpose. It is provided "as is" without express or implied warranty.
OMRON AND DATA GENERAL EACH DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
IN NO EVENT SHALL OMRON OR DATA GENERAL 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.
******************************************************************/
#ifndef MISC_H
#define MISC_H 1
/*
* X internal definitions
*
*/
extern unsigned long globalSerialNumber;
extern unsigned long serverGeneration;
#include <nx-X11/Xosdefs.h>
#include <nx-X11/Xfuncproto.h>
#include <nx-X11/Xmd.h>
#include <nx-X11/X.h>
#include <stdint.h>
#ifndef _XTYPEDEF_POINTER
/* Don't let Xdefs.h define 'pointer' */
#define _XTYPEDEF_POINTER 1
#endif /* _XTYPEDEF_POINTER */
/* FIXME: for building this code against Xlib versions older than apprx. 04/2014
* we still have to define the pointer type via Xdefs.h.
*
* The nx-libs code itself does not require the pointer definition.
*
*/
#undef _XTYPEDEF_POINTER
#include <nx-X11/Xdefs.h>
#ifndef NULL
#include <stddef.h>
#endif
#ifndef MAXSCREENS
#define MAXSCREENS 16
#endif
#define MAXCLIENTS 256
#define MAXDITS 1
#define MAXEXTENSIONS 128
#define MAXFORMATS 8
#define MAXVISUALS_PER_SCREEN 50
typedef unsigned long PIXEL;
typedef unsigned long ATOM;
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
#ifndef _XTYPEDEF_CALLBACKLISTPTR
typedef struct _CallbackList *CallbackListPtr; /* also in dix.h */
#define _XTYPEDEF_CALLBACKLISTPTR
#endif
typedef struct _xReq *xReqPtr;
#include "os.h" /* for ALLOCATE_LOCAL and DEALLOCATE_LOCAL */
#include <nx-X11/Xfuncs.h> /* for bcopy, bzero, and bcmp */
#define NullBox ((BoxPtr)0)
#define MILLI_PER_MIN (1000 * 60)
#define MILLI_PER_SECOND (1000)
/* this next is used with None and ParentRelative to tell
PaintWin() what to use to paint the background. Also used
in the macro IS_VALID_PIXMAP */
#define USE_BACKGROUND_PIXEL 3
#define USE_BORDER_PIXEL 3
/* byte swap a 32-bit literal */
#define lswapl(x) ((((x) & 0xff) << 24) |\
(((x) & 0xff00) << 8) |\
(((x) & 0xff0000) >> 8) |\
(((x) >> 24) & 0xff))
/* byte swap a short literal */
#define lswaps(x) ((((x) & 0xff) << 8) | (((x) >> 8) & 0xff))
#undef min
#undef max
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define max(a, b) (((a) > (b)) ? (a) : (b))
/* abs() is a function, not a macro; include the file declaring
* it in case we haven't done that yet.
*/
#include <stdlib.h>
#ifndef Fabs
#define Fabs(a) ((a) > 0.0 ? (a) : -(a)) /* floating absolute value */
#endif
#define sign(x) ((x) < 0 ? -1 : ((x) > 0 ? 1 : 0))
/* this assumes b > 0 */
#define modulus(a, b, d) if (((d) = (a) % (b)) < 0) (d) += (b)
/*
* return the least significant bit in x which is set
*
* This works on 1's complement and 2's complement machines.
* If you care about the extra instruction on 2's complement
* machines, change to ((x) & (-(x)))
*/
#define lowbit(x) ((x) & (~(x) + 1))
/* XXX Not for modules */
#include <limits.h>
#if !defined(MAXSHORT) || !defined(MINSHORT) || \
!defined(MAXINT) || !defined(MININT)
/*
* Some implementations #define these through <math.h>, so preclude
* #include'ing it later.
*/
#include <math.h>
#endif
#undef MAXSHORT
#define MAXSHORT SHRT_MAX
#undef MINSHORT
#define MINSHORT SHRT_MIN
#undef MAXINT
#define MAXINT INT_MAX
#undef MININT
#define MININT INT_MIN
#include <assert.h>
#include <ctype.h>
#include <stdio.h> /* for fopen, etc... */
/**
* Calculate the number of bytes needed to hold bits.
* @param bits The minimum number of bits needed.
* @return The number of bytes needed to hold bits.
*/
static __inline__ int
bits_to_bytes(const int bits) {
return ((bits + 7) >> 3);
}
/**
* Calculate the number of 4-byte units needed to hold the given number of
* bytes.
* @param bytes The minimum number of bytes needed.
* @return The number of 4-byte units needed to hold bytes.
*/
static __inline__ int
bytes_to_int32(const int bytes) {
return (((bytes) + 3) >> 2);
}
/**
* Calculate the number of bytes (in multiples of 4) needed to hold bytes.
* @param bytes The minimum number of bytes needed.
* @return The closest multiple of 4 that is equal or higher than bytes.
*/
static __inline__ int
pad_to_int32(const int bytes) {
return (((bytes) + 3) & ~3);
}
/**
* Compare the two version numbers comprising of major.minor.
*
* @return A value less than 0 if a is less than b, 0 if a is equal to b,
* or a value greater than 0
*/
static inline int
version_compare(uint32_t a_major, uint32_t a_minor,
uint32_t b_major, uint32_t b_minor)
{
if (a_major > b_major)
return 1;
if (a_major < b_major)
return -1;
if (a_minor > b_minor)
return 1;
if (a_minor < b_minor)
return -1;
return 0;
}
/* some macros to help swap requests, replies, and events */
#define LengthRestB(stuff) \
((client->req_len << 2) - sizeof(*stuff))
#define LengthRestS(stuff) \
((client->req_len << 1) - (sizeof(*stuff) >> 1))
#define LengthRestL(stuff) \
(client->req_len - (sizeof(*stuff) >> 2))
#define SwapRestS(stuff) \
SwapShorts((short *)(stuff + 1), LengthRestS(stuff))
#define SwapRestL(stuff) \
SwapLongs((CARD32 *)(stuff + 1), LengthRestL(stuff))
#if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
void __attribute__ ((error("wrong sized variable passed to swap")))
wrong_size(void);
#else
static inline void
wrong_size(void)
{
}
#endif
#if !(defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)))
static inline int
__builtin_constant_p(int x)
{
return 0;
}
#endif
/* byte swap a 64-bit value */
static inline void
swap_uint64(uint64_t *x)
{
char n;
n = ((char *) x)[0];
((char *) x)[0] = ((char *) x)[7];
((char *) x)[7] = n;
n = ((char *) x)[1];
((char *) x)[1] = ((char *) x)[6];
((char *) x)[6] = n;
n = ((char *) x)[2];
((char *) x)[2] = ((char *) x)[5];
((char *) x)[5] = n;
n = ((char *) x)[3];
((char *) x)[3] = ((char *) x)[4];
((char *) x)[4] = n;
}
#define swapll(x) do { \
if (sizeof(*(x)) != 8) \
wrong_size(); \
swap_uint64((uint64_t *)(x)); \
} while (0)
/* byte swap a 32-bit value */
static inline void
swap_uint32(uint32_t * x)
{
char n = ((char *) x)[0];
((char *) x)[0] = ((char *) x)[3];
((char *) x)[3] = n;
n = ((char *) x)[1];
((char *) x)[1] = ((char *) x)[2];
((char *) x)[2] = n;
}
#define swapl(x) do { \
if (sizeof(*(x)) != 4) \
wrong_size(); \
if (__builtin_constant_p((uintptr_t)(x) & 3) && ((uintptr_t)(x) & 3) == 0) \
*(x) = lswapl(*(x)); \
else \
swap_uint32((uint32_t *)(x)); \
} while (0)
/* byte swap a 16-bit value */
static inline void
swap_uint16(uint16_t * x)
{
char n = ((char *) x)[0];
((char *) x)[0] = ((char *) x)[1];
((char *) x)[1] = n;
}
#define swaps(x) do { \
if (sizeof(*(x)) != 2) \
wrong_size(); \
if (__builtin_constant_p((uintptr_t)(x) & 1) && ((uintptr_t)(x) & 1) == 0) \
*(x) = lswaps(*(x)); \
else \
swap_uint16((uint16_t *)(x)); \
} while (0)
/* copy 32-bit value from src to dst byteswapping on the way */
#define cpswapl(src, dst) do { \
if (sizeof((src)) != 4 || sizeof((dst)) != 4) \
wrong_size(); \
(dst) = lswapl((src)); \
} while (0)
/* copy short from src to dst byteswapping on the way */
#define cpswaps(src, dst) do { \
if (sizeof((src)) != 2 || sizeof((dst)) != 2) \
wrong_size(); \
(dst) = lswaps((src)); \
} while (0)
extern void SwapLongs(
CARD32 *list,
unsigned long count);
extern void SwapShorts(
short *list,
unsigned long count);
extern void MakePredeclaredAtoms(void);
extern int Ones(
unsigned long /*mask*/);
typedef struct _xPoint *DDXPointPtr;
typedef struct pixman_box16 *BoxPtr;
typedef struct _xEvent *xEventPtr;
typedef struct _xRectangle *xRectanglePtr;
typedef struct _GrabRec *GrabPtr;
/* typedefs from other places - duplicated here to minimize the amount
* of unnecessary junk that one would normally have to include to get
* these symbols defined
*/
#ifndef _XTYPEDEF_CHARINFOPTR
typedef struct _CharInfo *CharInfoPtr; /* also in fonts/include/font.h */
#define _XTYPEDEF_CHARINFOPTR
#endif
#endif /* MISC_H */

View File

@@ -0,0 +1,78 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef MISCSTRUCT_H
#define MISCSTRUCT_H 1
#include <pixman.h>
#include "misc.h"
#include <nx-X11/Xprotostr.h>
#include "gc.h"
typedef xPoint DDXPointRec;
typedef struct pixman_box16 BoxRec;
typedef union _DevUnion {
void * ptr;
long val;
unsigned long uval;
RegionPtr (*fptr)(
DrawablePtr /* pSrcDrawable */,
DrawablePtr /* pDstDrawable */,
GCPtr /* pGC */,
int /* srcx */,
int /* srcy */,
int /* width */,
int /* height */,
int /* dstx */,
int /* dsty */,
unsigned long /* bitPlane */);
} DevUnion;
#endif /* MISCSTRUCT_H */

View File

@@ -0,0 +1,83 @@
/*
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from The Open Group.
*/
#ifndef OPAQUE_H
#define OPAQUE_H
#include <nx-X11/Xmd.h>
#include "globals.h"
extern char *defaultTextFont;
extern char *defaultCursorFont;
extern int MaxClients;
extern volatile char isItTimeToYield;
extern volatile char dispatchException;
/* bit values for dispatchException */
#define DE_RESET 1
#define DE_TERMINATE 2
#define DE_PRIORITYCHANGE 4 /* set when a client's priority changes */
extern CARD32 TimeOutValue;
extern int ScreenSaverBlanking;
extern int ScreenSaverAllowExposures;
extern int defaultScreenSaverBlanking;
extern int defaultScreenSaverAllowExposures;
extern int argcGlobal;
extern char **argvGlobal;
extern char *display;
extern int displayfd;
extern Bool explicit_display;
extern int defaultBackingStore;
extern Bool disableBackingStore;
extern Bool enableBackingStore;
extern Bool disableSaveUnders;
extern Bool PartialNetwork;
#ifndef NOLOGOHACK
extern int logoScreenSaver;
#endif
#ifdef RLIMIT_DATA
extern int limitDataSpace;
#endif
#ifdef RLIMIT_STACK
extern int limitStackSpace;
#endif
#ifdef RLIMIT_NOFILE
extern int limitNoFile;
#endif
extern Bool defeatAccessControl;
extern long maxBigRequestSize;
extern Bool blackRoot;
extern Bool whiteRoot;
extern Bool CoreDump;
extern Bool NoListenAll;
#endif /* OPAQUE_H */

View File

@@ -0,0 +1,566 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef OS_H
#define OS_H
#include "misc.h"
#include <stdarg.h>
#define NullFID ((FID) 0)
#define SCREEN_SAVER_ON 0
#define SCREEN_SAVER_OFF 1
#define SCREEN_SAVER_FORCER 2
#define SCREEN_SAVER_CYCLE 3
#ifndef MAX_REQUEST_SIZE
#define MAX_REQUEST_SIZE 65535
#endif
#ifndef MAX_BIG_REQUEST_SIZE
#define MAX_BIG_REQUEST_SIZE 4194303
#endif
typedef void * FID;
typedef struct _FontPathRec *FontPathPtr;
typedef struct _NewClientRec *NewClientPtr;
#ifndef xnfalloc
#define xnfalloc(size) XNFalloc((unsigned long)(size))
#define xnfcalloc(_num, _size) XNFcalloc((unsigned long)(_num)*(unsigned long)(_size))
#define xnfrealloc(ptr, size) XNFrealloc((void *)(ptr), (unsigned long)(size))
#define xstrdup(s) Xstrdup(s)
#define xnfstrdup(s) XNFstrdup(s)
#define xallocarray(num, size) reallocarray(NULL, (num), (size))
#endif
#ifdef __SCO__
#include <stdio.h>
#endif
#include <string.h>
/* have to put $(SIGNAL_DEFINES) in DEFINES in Imakefile to get this right */
#ifdef SIGNALRETURNSINT
#define SIGVAL int
#else
#define SIGVAL void
#endif
extern void (*OsVendorVErrorFProc)(const char *, va_list args);
extern int WaitForSomething(
int* /*pClientsReady*/
);
extern int ReadRequestFromClient(ClientPtr /*client*/);
extern Bool InsertFakeRequest(
ClientPtr /*client*/,
char* /*data*/,
int /*count*/);
extern void ResetCurrentRequest(ClientPtr /*client*/);
extern void FlushAllOutput(void);
extern void FlushIfCriticalOutputPending(void);
extern void SetCriticalOutputPending(void);
extern int WriteToClient(ClientPtr /*who*/, int /*count*/, const void* /*__buf*/);
extern void ResetOsBuffers(void);
extern void InitConnectionLimits(void);
extern void NotifyParentProcess(void);
extern void CreateWellKnownSockets(void);
extern void ResetWellKnownSockets(void);
extern void CloseWellKnownConnections(void);
extern XID AuthorizationIDOfClient(ClientPtr /*client*/);
extern char *ClientAuthorized(
ClientPtr /*client*/,
unsigned int /*proto_n*/,
char* /*auth_proto*/,
unsigned int /*string_n*/,
char* /*auth_string*/);
extern void CheckConnections(void);
extern void CloseDownConnection(ClientPtr /*client*/);
typedef void (*NotifyFdProcPtr)(int fd, int ready, void *data);
#define X_NOTIFY_NONE 0
#define X_NOTIFY_READ 1
#define X_NOTIFY_WRITE 2
extern Bool SetNotifyFd(int fd, NotifyFdProcPtr notify_fd, int mask, void *data);
static inline void RemoveNotifyFd(int fd)
{
(void) SetNotifyFd(fd, NULL, X_NOTIFY_NONE, NULL);
}
extern void OnlyListenToOneClient(ClientPtr /*client*/);
extern void ListenToAllClients(void);
extern void IgnoreClient(ClientPtr /*client*/);
extern void AttendClient(ClientPtr /*client*/);
extern void MakeClientGrabImpervious(ClientPtr /*client*/);
extern void MakeClientGrabPervious(ClientPtr /*client*/);
extern void AvailableClientInput(ClientPtr /* client */);
extern CARD32 GetTimeInMillis(void);
extern void AdjustWaitForDelay(
void * /*waitTime*/,
unsigned long /*newdelay*/);
typedef struct _OsTimerRec *OsTimerPtr;
typedef CARD32 (*OsTimerCallback)(
OsTimerPtr /* timer */,
CARD32 /* time */,
void * /* arg */);
extern void TimerInit(void);
extern Bool TimerForce(OsTimerPtr /* timer */);
#define TimerAbsolute (1<<0)
#define TimerForceOld (1<<1)
extern OsTimerPtr TimerSet(
OsTimerPtr /* timer */,
int /* flags */,
CARD32 /* millis */,
OsTimerCallback /* func */,
void * /* arg */);
extern void TimerCheck(void);
extern void TimerCancel(OsTimerPtr /* pTimer */);
extern void TimerFree(OsTimerPtr /* pTimer */);
extern void SetScreenSaverTimer(void);
extern void FreeScreenSaverTimer(void);
#ifdef DPMSExtension
extern void SetDPMSTimers(void);
extern void FreeDPMSTimers(void);
#endif
extern SIGVAL AutoResetServer(int /*sig*/);
extern SIGVAL GiveUp(int /*sig*/);
extern void UseMsg(void);
extern void InitGlobals(void);
extern void ProcessCommandLine(int /*argc*/, char* /*argv*/[]);
extern int set_font_authorizations(
char ** /* authorizations */,
int * /*authlen */,
void * /* client */);
extern void * XNFalloc(unsigned long /*amount*/);
extern void * XNFcalloc(unsigned long /*amount*/);
extern void * XNFrealloc(void * /*ptr*/, unsigned long /*amount*/);
extern void OsInitAllocator(void);
extern char *Xstrdup(const char *s);
extern char *XNFstrdup(const char *s);
/* Include new X*asprintf API */
#include "Xprintf.h"
/* Older api deprecated in favor of the asprintf versions */
extern _X_EXPORT char *Xprintf(const char *fmt, ...) _X_ATTRIBUTE_PRINTF(1,2) _X_DEPRECATED;
extern _X_EXPORT char *Xvprintf(const char *fmt, va_list va)_X_ATTRIBUTE_PRINTF(1,0) _X_DEPRECATED;
extern _X_EXPORT char *XNFprintf(const char *fmt, ...) _X_ATTRIBUTE_PRINTF(1,2) _X_DEPRECATED;
extern _X_EXPORT char *XNFvprintf(const char *fmt, va_list va)_X_ATTRIBUTE_PRINTF(1,0) _X_DEPRECATED;
typedef SIGVAL (*OsSigHandlerPtr)(int /* sig */);
extern OsSigHandlerPtr OsSignal(int /* sig */, OsSigHandlerPtr /* handler */);
extern int auditTrailLevel;
#ifdef SERVER_LOCK
extern void LockServer(void);
extern void UnlockServer(void);
#endif
extern int OsLookupColor(
int /*screen*/,
char * /*name*/,
unsigned /*len*/,
unsigned short * /*pred*/,
unsigned short * /*pgreen*/,
unsigned short * /*pblue*/);
extern void OsInit(void);
extern void OsCleanup(Bool);
extern void OsVendorFatalError(void);
extern void OsVendorInit(void);
extern int OsInitColors(void);
void OsBlockSignals (void);
void OsReleaseSignals (void);
#if !defined(WIN32)
extern int System(char *);
extern void * Popen(char *, char *);
extern int Pclose(void *);
extern void * Fopen(char *, char *);
extern int Fclose(void *);
#else
#define System(a) system(a)
#define Popen(a,b) popen(a,b)
#define Pclose(a) pclose(a)
#define Fopen(a,b) fopen(a,b)
#define Fclose(a) fclose(a)
#endif
extern void CheckUserParameters(int argc, char **argv, char **envp);
extern void CheckUserAuthorization(void);
extern int AddHost(
ClientPtr /*client*/,
int /*family*/,
unsigned /*length*/,
void * /*pAddr*/);
extern Bool ForEachHostInFamily (
int /*family*/,
Bool (* /*func*/ )(
unsigned char * /* addr */,
short /* len */,
void * /* closure */),
void * /*closure*/);
extern int RemoveHost(
ClientPtr /*client*/,
int /*family*/,
unsigned /*length*/,
void * /*pAddr*/);
extern int GetHosts(
void ** /*data*/,
int * /*pnHosts*/,
int * /*pLen*/,
BOOL * /*pEnabled*/);
typedef struct sockaddr * sockaddrPtr;
extern int InvalidHost(sockaddrPtr /*saddr*/, int /*len*/, ClientPtr client);
extern int LocalClientCred(ClientPtr, int *, int *);
#define LCC_UID_SET (1 << 0)
#define LCC_GID_SET (1 << 1)
#define LCC_PID_SET (1 << 2)
#define LCC_ZID_SET (1 << 3)
typedef struct {
int fieldsSet; /* Bit mask of fields set */
int euid; /* Effective uid */
int egid; /* Primary effective group id */
int nSuppGids; /* Number of supplementary group ids */
int *pSuppGids; /* Array of supplementary group ids */
int pid; /* Process id */
int zoneid; /* Only set on Solaris 10 & later */
} LocalClientCredRec;
extern int GetLocalClientCreds(ClientPtr, LocalClientCredRec **);
extern void FreeLocalClientCreds(LocalClientCredRec *);
extern int ChangeAccessControl(ClientPtr /*client*/, int /*fEnabled*/);
extern int GetAccessControl(void);
extern void AddLocalHosts(void);
extern void ResetHosts(char *display);
extern void EnableLocalHost(void);
extern void DisableLocalHost(void);
extern void AccessUsingXdmcp(void);
extern void DefineSelf(int /*fd*/);
extern void AugmentSelf(void * /*from*/, int /*len*/);
extern void InitAuthorization(char * /*filename*/);
/* extern int LoadAuthorization(void); */
extern void RegisterAuthorizations(void);
extern XID AuthorizationToID (
unsigned short name_length,
char *name,
unsigned short data_length,
char *data);
extern int AuthorizationFromID (
XID id,
unsigned short *name_lenp,
char **namep,
unsigned short *data_lenp,
char **datap);
extern XID CheckAuthorization(
unsigned int /*namelength*/,
char * /*name*/,
unsigned int /*datalength*/,
char * /*data*/,
ClientPtr /*client*/,
char ** /*reason*/
);
extern void ResetAuthorization(void);
extern int RemoveAuthorization (
unsigned short name_length,
char *name,
unsigned short data_length,
char *data);
extern int AddAuthorization(
unsigned int /*name_length*/,
char * /*name*/,
unsigned int /*data_length*/,
char * /*data*/);
extern XID GenerateAuthorization(
unsigned int /* name_length */,
char * /* name */,
unsigned int /* data_length */,
char * /* data */,
unsigned int * /* data_length_return */,
char ** /* data_return */);
#ifdef COMMANDLINE_CHALLENGED_OPERATING_SYSTEMS
extern void ExpandCommandLine(int * /*pargc*/, char *** /*pargv*/);
#endif
extern void ddxInitGlobals(void);
extern int ddxProcessArgument(int /*argc*/, char * /*argv*/ [], int /*i*/);
extern void ddxUseMsg(void);
/*
* idiom processing stuff
*/
extern xReqPtr PeekNextRequest(xReqPtr req, ClientPtr client, Bool readmore);
extern void SkipRequests(xReqPtr req, ClientPtr client, int numskipped);
/* int ReqLen(xReq *req, ClientPtr client)
* Given a pointer to a *complete* request, return its length in bytes.
* Note that if the request is a big request (as defined in the Big
* Requests extension), the macro lies by returning 4 less than the
* length that it actually occupies in the request buffer. This is so you
* can blindly compare the length with the various sz_<request> constants
* in Xproto.h without having to know/care about big requests.
*/
#define ReqLen(_pxReq, _client) \
((_pxReq->length ? \
(_client->swapped ? lswaps(_pxReq->length) : _pxReq->length) \
: ((_client->swapped ? \
lswapl(((CARD32*)_pxReq)[1]) : ((CARD32*)_pxReq)[1])-1) \
) << 2)
/* otherReqTypePtr CastxReq(xReq *req, otherReqTypePtr)
* Cast the given request to one of type otherReqTypePtr to access
* fields beyond the length field.
*/
#define CastxReq(_pxReq, otherReqTypePtr) \
(_pxReq->length ? (otherReqTypePtr)_pxReq \
: (otherReqTypePtr)(((CARD32*)_pxReq)+1))
/* stuff for SkippedRequestsCallback */
extern CallbackListPtr SkippedRequestsCallback;
typedef struct {
xReqPtr req;
ClientPtr client;
int numskipped;
} SkippedRequestInfoRec;
/* stuff for ReplyCallback */
extern CallbackListPtr ReplyCallback;
typedef struct {
ClientPtr client;
const void * replyData;
unsigned long dataLenBytes;
unsigned long bytesRemaining;
Bool startOfReply;
} ReplyInfoRec;
/* stuff for FlushCallback */
extern CallbackListPtr FlushCallback;
extern void AbortDDX(void);
extern void ddxGiveUp(void);
extern int TimeSinceLastInputEvent(void);
#ifndef HAVE_REALLOCARRAY
#define reallocarray xreallocarray
extern _X_EXPORT void *
reallocarray(void *optr, size_t nmemb, size_t size);
#endif
#ifndef HAVE_STRLCPY
extern _X_EXPORT size_t
strlcpy(char *dst, const char *src, size_t siz);
extern _X_EXPORT size_t
strlcat(char *dst, const char *src, size_t siz);
#endif
#ifndef HAVE_TIMINGSAFE_MEMCMP
extern _X_EXPORT int
timingsafe_memcmp(const void *b1, const void *b2, size_t len);
#endif
/* Logging. */
typedef enum _LogParameter {
XLOG_FLUSH,
XLOG_SYNC,
XLOG_VERBOSITY,
XLOG_FILE_VERBOSITY
} LogParameter;
/* Flags for log messages. */
typedef enum {
X_PROBED, /* Value was probed */
X_CONFIG, /* Value was given in the config file */
X_DEFAULT, /* Value is a default */
X_CMDLINE, /* Value was given on the command line */
X_NOTICE, /* Notice */
X_ERROR, /* Error message */
X_WARNING, /* Warning message */
X_INFO, /* Informational message */
X_NONE, /* No prefix */
X_NOT_IMPLEMENTED, /* Not implemented */
X_UNKNOWN = -1 /* unknown -- this must always be last */
} MessageType;
/* XXX Need to check which GCC versions have the format(printf) attribute. */
#if defined(__GNUC__) && \
((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ > 4)))
#define _printf_attribute(a,b) __attribute((format(__printf__,a,b)))
#else
#define _printf_attribute(a,b) /**/
#endif
extern const char *LogInit(const char *fname, const char *backup);
extern void LogSetDisplay(void);
extern void LogClose(void);
extern Bool LogSetParameter(LogParameter param, int value);
extern void LogVWrite(int verb, const char *f, va_list args);
extern void LogWrite(int verb, const char *f, ...) _printf_attribute(2,3);
extern void LogVMessageVerb(MessageType type, int verb, const char *format,
va_list args);
extern void LogMessageVerb(MessageType type, int verb, const char *format,
...) _printf_attribute(3,4);
extern void LogMessage(MessageType type, const char *format, ...)
_printf_attribute(2,3);
extern void FreeAuditTimer(void);
extern void AuditF(const char *f, ...) _printf_attribute(1,2);
extern void VAuditF(const char *f, va_list args);
extern void FatalError(const char *f, ...) _printf_attribute(1,2)
#if defined(__GNUC__) && \
((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ > 4)))
__attribute((noreturn))
#endif
;
extern void VErrorF(const char *f, va_list args);
extern void ErrorF(const char *f, ...) _printf_attribute(1,2);
extern void Error(char *str);
extern void LogPrintMarkers(void);
#if defined(NEED_SNPRINTF)
extern int snprintf(char *str, size_t size, const char *format, ...)
_printf_attribute(3,4);
extern int vsnprintf(char *str, size_t size, const char *format, va_list ap);
#endif
#ifdef DEBUG
#define DebugF ErrorF
#else
#define DebugF(...) /* */
#endif
#endif /* OS_H */

View File

@@ -0,0 +1,108 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef PIXMAP_H
#define PIXMAP_H
#include "misc.h"
#include "screenint.h"
/* types for Drawable */
#define DRAWABLE_WINDOW 0
#define DRAWABLE_PIXMAP 1
#define UNDRAWABLE_WINDOW 2
#define DRAWABLE_BUFFER 3
/* flags to PaintWindow() */
#define PW_BACKGROUND 0
#define PW_BORDER 1
#define NullPixmap ((PixmapPtr)0)
typedef struct _Drawable *DrawablePtr;
typedef struct _Pixmap *PixmapPtr;
typedef union _PixUnion {
PixmapPtr pixmap;
unsigned long pixel;
} PixUnion;
#define SamePixUnion(a,b,isPixel)\
((isPixel) ? (a).pixel == (b).pixel : (a).pixmap == (b).pixmap)
#define EqualPixUnion(as, a, bs, b) \
((as) == (bs) && (SamePixUnion (a, b, as)))
#define OnScreenDrawable(type) \
((type == DRAWABLE_WINDOW) || (type == DRAWABLE_BUFFER))
#define WindowDrawable(type) \
((type == DRAWABLE_WINDOW) || (type == UNDRAWABLE_WINDOW))
extern PixmapPtr GetScratchPixmapHeader(
ScreenPtr /*pScreen*/,
int /*width*/,
int /*height*/,
int /*depth*/,
int /*bitsPerPixel*/,
int /*devKind*/,
void * /*pPixData*/);
extern void FreeScratchPixmapHeader(
PixmapPtr /*pPixmap*/);
extern Bool CreateScratchPixmapsForScreen(
int /*scrnum*/);
extern void FreeScratchPixmapsForScreen(
int /*scrnum*/);
extern PixmapPtr AllocatePixmap(
ScreenPtr /*pScreen*/,
int /*pixDataSize*/);
#endif /* PIXMAP_H */

View File

@@ -0,0 +1,98 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef PIXMAPSTRUCT_H
#define PIXMAPSTRUCT_H
#include <nx-X11/Xarch.h>
#include "pixmap.h"
#include "screenint.h"
#include "regionstr.h"
/*
* The padN members are unfortunate ABI BC. See fdo bug #6924.
*/
typedef struct _Drawable {
unsigned char type; /* DRAWABLE_<type> */
unsigned char class; /* specific to type */
unsigned char depth;
unsigned char bitsPerPixel;
#if defined(_XSERVER64)
XID pad0;
#endif
XID id; /* resource id */
#if defined(_XSERVER64)
XID pad1;
#endif
short x; /* window: screen absolute, pixmap: 0 */
short y; /* window: screen absolute, pixmap: 0 */
unsigned short width;
unsigned short height;
ScreenPtr pScreen;
unsigned long serialNumber;
} DrawableRec;
/*
* PIXMAP -- device dependent
*/
typedef struct _Pixmap {
DrawableRec drawable;
int refcnt;
int devKind;
DevUnion devPrivate;
#ifdef PIXPRIV
DevUnion *devPrivates; /* real devPrivates like gcs & windows */
#endif
#ifdef COMPOSITE
short screen_x;
short screen_y;
#endif
unsigned usage_hint; /* see CREATE_PIXMAP_USAGE_* */
} PixmapRec;
#endif /* PIXMAPSTRUCT_H */

View File

@@ -0,0 +1,72 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef PROPERTY_H
#define PROPERTY_H
#include "window.h"
typedef struct _Property *PropertyPtr;
extern int ChangeWindowProperty(
WindowPtr /*pWin*/,
Atom /*property*/,
Atom /*type*/,
int /*format*/,
int /*mode*/,
unsigned long /*len*/,
void * /*value*/,
Bool /*sendevent*/);
extern int DeleteProperty(
WindowPtr /*pWin*/,
Atom /*propName*/);
extern void DeleteAllWindowProperties(
WindowPtr /*pWin*/);
#endif /* PROPERTY_H */

View File

@@ -0,0 +1,66 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef PROPERTYSTRUCT_H
#define PROPERTYSTRUCT_H
#include "misc.h"
#include "property.h"
/*
* PROPERTY -- property element
*/
typedef struct _Property {
struct _Property *next;
ATOM propertyName;
ATOM type; /* ignored by server */
short format; /* format of data for swapping - 8,16,32 */
long size; /* size of data in (format/8) bytes */
void *data; /* private to client */
} PropertyRec;
#endif /* PROPERTYSTRUCT_H */

View File

@@ -0,0 +1,182 @@
/*
* Copyright © 2009 Red Hat, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
/**
* This file specifies the server-supported protocol versions.
*/
#ifndef PROTOCOL_VERSIONS_H
#define PROTOCOL_VERSIONS_H
#ifdef NXAGENT_SERVER
# define XTRANS_SEND_FDS 0
#endif
/* Composite */
#define SERVER_COMPOSITE_MAJOR_VERSION 0
#define SERVER_COMPOSITE_MINOR_VERSION 4
/* Damage */
#define SERVER_DAMAGE_MAJOR_VERSION 1
#ifndef NXAGENT_SERVER
#define SERVER_DAMAGE_MINOR_VERSION 1
#else /* !defined(NXAGENT_SERVER) */
#define SERVER_DAMAGE_MINOR_VERSION 0
#endif /* !defined(NXAGENT_SERVER) */
#ifndef NXAGENT_SERVER
/* DRI3 */
#define SERVER_DRI3_MAJOR_VERSION 1
#define SERVER_DRI3_MINOR_VERSION 0
#endif /* !defined(NXAGENT_SERVER) */
#ifndef NXAGENT_SERVER
/* DMX */
#define SERVER_DMX_MAJOR_VERSION 2
#define SERVER_DMX_MINOR_VERSION 2
#define SERVER_DMX_PATCH_VERSION 20040604
#endif /* !defined(NXAGENT_SERVER) */
#ifndef NXAGENT_SERVER
/* Generic event extension */
#define SERVER_GE_MAJOR_VERSION 1
#define SERVER_GE_MINOR_VERSION 0
#endif /* !defined(NXAGENT_SERVER) */
/* GLX */
#define SERVER_GLX_MAJOR_VERSION 1
#ifndef NXAGENT_SERVER
#define SERVER_GLX_MINOR_VERSION 4
#else
#define SERVER_GLX_MINOR_VERSION 2
#endif
/* Xinerama */
#define SERVER_PANORAMIX_MAJOR_VERSION 1
#define SERVER_PANORAMIX_MINOR_VERSION 1
#ifndef NXAGENT_SERVER
/* Present */
#define SERVER_PRESENT_MAJOR_VERSION 1
#define SERVER_PRESENT_MINOR_VERSION 0
#endif /* !defined(NXAGENT_SERVER) */
/* RandR */
#define SERVER_RANDR_MAJOR_VERSION 1
#define SERVER_RANDR_MINOR_VERSION 5
/* Record */
#define SERVER_RECORD_MAJOR_VERSION 1
#define SERVER_RECORD_MINOR_VERSION 13
/* Render */
#define SERVER_RENDER_MAJOR_VERSION 0
#ifndef NXAGENT_SERVER
#define SERVER_RENDER_MINOR_VERSION 11
#else /* !defined(NXAGENT_SERVER) */
#define SERVER_RENDER_MINOR_VERSION 10
#endif /* !defined(NXAGENT_SERVER) */
/* RandR Xinerama */
#define SERVER_RRXINERAMA_MAJOR_VERSION 1
#define SERVER_RRXINERAMA_MINOR_VERSION 1
/* Screensaver */
#define SERVER_SAVER_MAJOR_VERSION 1
#define SERVER_SAVER_MINOR_VERSION 1
/* Security */
#define SERVER_SECURITY_MAJOR_VERSION 1
#define SERVER_SECURITY_MINOR_VERSION 0
/* Shape */
#define SERVER_SHAPE_MAJOR_VERSION 1
#define SERVER_SHAPE_MINOR_VERSION 1
/* SHM */
#define SERVER_SHM_MAJOR_VERSION 1
#ifndef NXAGENT_SERVER
#if XTRANS_SEND_FDS
#define SERVER_SHM_MINOR_VERSION 2
#else
#define SERVER_SHM_MINOR_VERSION 1
#endif
#else /* !defined(NXAGENT_SERVER) */
#define SERVER_SHM_MINOR_VERSION 1
#endif /* !defined(NXAGENT_SERVER) */
/* Sync */
#define SERVER_SYNC_MAJOR_VERSION 3
#ifndef NXAGENT_SERVER
#define SERVER_SYNC_MINOR_VERSION 1
#else /* !defined(NXAGENT_SERVER) */
#define SERVER_SYNC_MINOR_VERSION 0
#endif /* !defined(NXAGENT_SERVER) */
/* Big Font */
#define SERVER_XF86BIGFONT_MAJOR_VERSION 1
#define SERVER_XF86BIGFONT_MINOR_VERSION 1
#ifndef NXAGENT_SERVER
/* Vidmode */
#define SERVER_XF86VIDMODE_MAJOR_VERSION 2
#define SERVER_XF86VIDMODE_MINOR_VERSION 2
#endif /* !defined(NXAGENT_SERVER) */
/* Fixes */
#ifndef NXAGENT_SERVER
#define SERVER_XFIXES_MAJOR_VERSION 5
#define SERVER_XFIXES_MINOR_VERSION 0
#else /* !defined(NXAGENT_SERVER) */
#define SERVER_XFIXES_MAJOR_VERSION 4
#define SERVER_XFIXES_MINOR_VERSION 0
#endif /* !defined(NXAGENT_SERVER) */
/* X Input */
#ifndef NXAGENT_SERVER
#define SERVER_XI_MAJOR_VERSION 2
#define SERVER_XI_MINOR_VERSION 3
#else /* !defined(NXAGENT_SERVER) */
#define SERVER_XI_MAJOR_VERSION 1
#define SERVER_XI_MINOR_VERSION 3
#endif /* !defined(NXAGENT_SERVER) */
/* XKB */
#define SERVER_XKB_MAJOR_VERSION 1
#define SERVER_XKB_MINOR_VERSION 0
/* Resource */
#define SERVER_XRES_MAJOR_VERSION 1
#ifndef NXAGENT_SERVER
#define SERVER_XRES_MINOR_VERSION 2
#else /* !defined(NXAGENT_SERVER) */
#define SERVER_XRES_MINOR_VERSION 0
#endif /* !defined(NXAGENT_SERVER) */
#ifndef NXAGENT_SERVER
/* XvMC */
#define SERVER_XVMC_MAJOR_VERSION 1
#define SERVER_XVMC_MINOR_VERSION 1
#endif /* !defined(NXAGENT_SERVER) */
#endif /* PROTOCOL_VERSIONS_H */

View File

@@ -0,0 +1,53 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef REGION_H
#define REGION_H
#include "regionstr.h"
#endif /* REGION_H */

View File

@@ -0,0 +1,411 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef REGIONSTRUCT_H
#define REGIONSTRUCT_H
#include <pixman.h>
typedef struct pixman_region16 RegionRec, *RegionPtr;
#include <stddef.h>
#include <limits.h>
#include "miscstruct.h"
/* Return values from RectIn() */
#define rgnOUT 0
#define rgnIN 1
#define rgnPART 2
#define NullRegion ((RegionPtr)0)
/*
* clip region
*/
typedef struct pixman_region16_data RegDataRec, *RegDataPtr;
extern BoxRec RegionEmptyBox;
extern RegDataRec RegionEmptyData;
extern RegDataRec RegionBrokenData;
static inline Bool RegionNil(RegionPtr reg) {
return ((reg)->data && !(reg)->data->numRects);
}
static inline Bool RegionNar(RegionPtr reg) {
return ((reg)->data == &RegionBrokenData);
}
static inline int RegionNumRects(RegionPtr reg) {
return ((reg)->data ? (reg)->data->numRects : 1);
}
static inline int RegionSize(RegionPtr reg) {
return ((reg)->data ? (reg)->data->size : 0);
}
static inline BoxPtr RegionRects(RegionPtr reg) {
return ((reg)->data ? (BoxPtr)((reg)->data + 1) : &(reg)->extents);
}
static inline BoxPtr RegionBoxptr(RegionPtr reg) {
return ((BoxPtr)((reg)->data + 1));
}
static inline BoxPtr RegionBox(RegionPtr reg, int i) {
return (&RegionBoxptr(reg)[i]);
}
static inline BoxPtr RegionTop(RegionPtr reg) {
return RegionBox(reg, (reg)->data->numRects);
}
static inline BoxPtr RegionEnd(RegionPtr reg) {
return RegionBox(reg, (reg)->data->numRects - 1);
}
static inline size_t RegionSizeof(int n) {
return (sizeof(RegDataRec) + ((n) * sizeof(BoxRec)));
}
static inline void RegionInit(RegionPtr _pReg, BoxPtr _rect, int _size)
{
if ((_rect) != NULL)
{
(_pReg)->extents = *(_rect);
(_pReg)->data = (RegDataPtr)NULL;
}
else
{
(_pReg)->extents = RegionEmptyBox;
if (((_size) > 1) && ((_pReg)->data =
(RegDataPtr)malloc(RegionSizeof(_size))))
{
(_pReg)->data->size = (_size);
(_pReg)->data->numRects = 0;
}
else
(_pReg)->data = &RegionEmptyData;
}
}
static inline void RegionUninit(RegionPtr _pReg)
{
if ((_pReg)->data && (_pReg)->data->size) {
free((_pReg)->data);
(_pReg)->data = NULL;
}
}
static inline void RegionReset(RegionPtr _pReg, BoxPtr _pBox)
{
(_pReg)->extents = *(_pBox);
RegionUninit(_pReg);
(_pReg)->data = (RegDataPtr)NULL;
}
static inline Bool RegionNotEmpty(RegionPtr _pReg) {
return !RegionNil(_pReg);
}
static inline Bool RegionBroken(RegionPtr _pReg) {
return RegionNar(_pReg);
}
static inline void RegionEmpty(RegionPtr _pReg)
{
RegionUninit(_pReg);
(_pReg)->extents.x2 = (_pReg)->extents.x1;
(_pReg)->extents.y2 = (_pReg)->extents.y1;
(_pReg)->data = &RegionEmptyData;
}
static inline BoxPtr RegionExtents(RegionPtr _pReg)
{
return (&(_pReg)->extents);
}
static inline void RegionNull(RegionPtr _pReg)
{
(_pReg)->extents = RegionEmptyBox;
(_pReg)->data = &RegionEmptyData;
}
static inline Bool
RegionCopy(RegionPtr dst, RegionPtr src)
{
return pixman_region_copy (dst, src);
}
static inline Bool
RegionIntersect(
RegionPtr newReg, /* destination Region */
RegionPtr reg1,
RegionPtr reg2 /* source regions */
)
{
return pixman_region_intersect (newReg, reg1, reg2);
}
static inline Bool
RegionUnion(
RegionPtr newReg, /* destination Region */
RegionPtr reg1,
RegionPtr reg2 /* source regions */
)
{
return pixman_region_union (newReg, reg1, reg2);
}
/*
*-----------------------------------------------------------------------
* Subtract --
* Subtract regS from regM and leave the result in regD.
* S stands for subtrahend, M for minuend and D for difference.
*
* Results:
* TRUE if successful.
*
* Side Effects:
* regD is overwritten.
*
*-----------------------------------------------------------------------
*/
static inline Bool
RegionSubtract(RegionPtr regD, RegionPtr regM, RegionPtr regS)
{
return pixman_region_subtract (regD, regM, regS);
}
/*
*-----------------------------------------------------------------------
* Inverse --
* Take a region and a box and return a region that is everything
* in the box but not in the region. The careful reader will note
* that this is the same as subtracting the region from the box...
*
* Results:
* TRUE.
*
* Side Effects:
* newReg is overwritten.
*
*-----------------------------------------------------------------------
*/
static inline Bool
RegionInverse(
RegionPtr newReg, /* Destination region */
RegionPtr reg1, /* Region to invert */
BoxPtr invRect /* Bounding box for inversion */
)
{
return pixman_region_inverse (newReg, reg1, invRect);
}
static inline int
RegionContainsRect(RegionPtr region, BoxPtr prect)
{
return pixman_region_contains_rectangle (region, prect);
}
/* TranslateRegion(pReg, x, y)
* translates in place
*/
static inline void
RegionTranslate(RegionPtr pReg, int x, int y)
{
pixman_region_translate (pReg, x, y);
}
static inline Bool
RegionContainsPoint(
RegionPtr pReg,
int x,
int y,
BoxPtr box /* "return" value */
)
{
return pixman_region_contains_point (pReg, x, y, box);
}
static inline Bool
RegionEqual(RegionPtr reg1, RegionPtr reg2)
{
return pixman_region_equal (reg1, reg2);
}
extern RegionPtr RegionCreate(
BoxPtr /*rect*/,
int /*size*/);
extern void RegionInit(
RegionPtr /*pReg*/,
BoxPtr /*rect*/,
int /*size*/);
extern void RegionDestroy(
RegionPtr /*pReg*/);
extern void RegionUninit(
RegionPtr /*pReg*/);
extern Bool RegionCopy(
RegionPtr /*dst*/,
RegionPtr /*src*/);
extern Bool RegionIntersect(
RegionPtr /*newReg*/,
RegionPtr /*reg1*/,
RegionPtr /*reg2*/);
extern Bool RegionUnion(
RegionPtr /*newReg*/,
RegionPtr /*reg1*/,
RegionPtr /*reg2*/);
extern Bool RegionAppend(
RegionPtr /*dstrgn*/,
RegionPtr /*rgn*/);
extern Bool RegionValidate(
RegionPtr /*badreg*/,
Bool * /*pOverlap*/);
extern RegionPtr RegionFromRects(
int /*nrects*/,
xRectanglePtr /*prect*/,
int /*ctype*/);
extern Bool RegionSubtract(
RegionPtr /*regD*/,
RegionPtr /*regM*/,
RegionPtr /*regS*/);
extern Bool RegionInverse(
RegionPtr /*newReg*/,
RegionPtr /*reg1*/,
BoxPtr /*invRect*/);
extern int RegionContainsRect(
RegionPtr /*region*/,
BoxPtr /*prect*/);
extern void RegionTranslate(
RegionPtr /*pReg*/,
int /*x*/,
int /*y*/);
extern void RegionReset(
RegionPtr /*pReg*/,
BoxPtr /*pBox*/);
extern Bool RegionBreak(
RegionPtr /*pReg*/);
extern Bool RegionContainsPoint(
RegionPtr /*pReg*/,
int /*x*/,
int /*y*/,
BoxPtr /*box*/);
extern Bool RegionEqual(
RegionPtr /*pReg1*/,
RegionPtr /*pReg2*/);
extern Bool RegionNotEmpty(
RegionPtr /*pReg*/);
extern void RegionEmpty(
RegionPtr /*pReg*/);
extern BoxPtr RegionExtents(
RegionPtr /*pReg*/);
#define INCLUDE_LEGACY_REGION_DEFINES
#ifdef INCLUDE_LEGACY_REGION_DEFINES
#define REGION_NIL RegionNil
#define REGION_NAR RegionNar
#define REGION_NUM_RECTS RegionNumRects
#define REGION_SIZE RegionSize
#define REGION_RECTS RegionRects
#define REGION_BOXPTR RegionBoxptr
#define REGION_BOX RegionBox
#define REGION_TOP RegionTop
#define REGION_END RegionEnd
#define REGION_SZOF RegionSizeof
#define BitmapToRegion BitmapToRegion
#define REGION_CREATE(pScreen, r, s) RegionCreate(r,s)
#define REGION_COPY(pScreen, d, r) RegionCopy(d, r)
#define REGION_DESTROY(pScreen, r) RegionDestroy(r)
#define REGION_INTERSECT(pScreen, res, r1, r2) RegionIntersect(res, r1, r2)
#define REGION_UNION(pScreen, res, r1, r2) RegionUnion(res, r1, r2)
#define REGION_SUBTRACT(pScreen, res, r1, r2) RegionSubtract(res, r1, r2)
#define REGION_INVERSE(pScreen, n, r, b) RegionInverse(n, r, b)
#define REGION_TRANSLATE(pScreen, r, x, y) RegionTranslate(r, x, y)
#define RECT_IN_REGION(pScreen, r, b) RegionContainsRect(r, b)
#define POINT_IN_REGION(pScreen, r, x, y, b) RegionContainsPoint(r, x, y, b)
#define REGION_EQUAL(pScreen, r1, r2) RegionEqual(r1, r2)
#define REGION_APPEND(pScreen, d, r) RegionAppend(d, r)
#define REGION_VALIDATE(pScreen, r, o) RegionValidate(r, o)
#define RECTS_TO_REGION(pScreen, n, r, c) RegionFromRects(n, r, c)
#define REGION_BREAK(pScreen, r) RegionBreak(r)
#define REGION_INIT(pScreen, r, b, s) RegionInit(r, b, s)
#define REGION_UNINIT(pScreen, r) RegionUninit(r)
#define REGION_RESET(pScreen, r, b) RegionReset(r, b)
#define REGION_NOTEMPTY(pScreen, r) RegionNotEmpty(r)
#define REGION_BROKEN(pScreen, r) RegionBroken(r)
#define REGION_EMPTY(pScreen, r) RegionEmpty(r)
#define REGION_EXTENTS(pScreen, r) RegionExtents(r)
#define REGION_NULL(pScreen, r) RegionNull(r)
#endif /* INCLUDE_LEGACY_REGION_DEFINES */
#endif /* REGIONSTRUCT_H */

View File

@@ -0,0 +1,272 @@
/***********************************************************
Copyright 1987, 1989, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1989 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef RESOURCE_H
#define RESOURCE_H 1
#include "misc.h"
/*****************************************************************
* STUFF FOR RESOURCES
*****************************************************************/
/* classes for Resource routines */
typedef unsigned long RESTYPE;
#define RC_VANILLA ((RESTYPE)0)
#define RC_CACHED ((RESTYPE)1<<31)
#define RC_DRAWABLE ((RESTYPE)1<<30)
/* Use class RC_NEVERRETAIN for resources that should not be retained
* regardless of the close down mode when the client dies. (A client's
* event selections on objects that it doesn't own are good candidates.)
* Extensions can use this too!
*/
#define RC_NEVERRETAIN ((RESTYPE)1<<29)
#define RC_LASTPREDEF RC_NEVERRETAIN
#define RC_ANY (~(RESTYPE)0)
/* types for Resource routines */
#define RT_WINDOW ((RESTYPE)1|RC_DRAWABLE)
#define RT_PIXMAP ((RESTYPE)2|RC_DRAWABLE)
#define RT_GC ((RESTYPE)3)
#undef RT_FONT
#undef RT_CURSOR
#define RT_FONT ((RESTYPE)4)
#define RT_CURSOR ((RESTYPE)5)
#define RT_COLORMAP ((RESTYPE)6)
#define RT_CMAPENTRY ((RESTYPE)7)
#define RT_OTHERCLIENT ((RESTYPE)8|RC_NEVERRETAIN)
#define RT_PASSIVEGRAB ((RESTYPE)9|RC_NEVERRETAIN)
#define RT_LASTPREDEF ((RESTYPE)9)
#define RT_NONE ((RESTYPE)0)
/* bits and fields within a resource id */
#define RESOURCE_AND_CLIENT_COUNT 29 /* 29 bits for XIDs */
#if MAXCLIENTS == 64
#define RESOURCE_CLIENT_BITS 6
#endif
#if MAXCLIENTS == 128
#define RESOURCE_CLIENT_BITS 7
#endif
#if MAXCLIENTS == 256
#define RESOURCE_CLIENT_BITS 8
#endif
#if MAXCLIENTS == 512
#define RESOURCE_CLIENT_BITS 9
#endif
/* client field offset */
#define CLIENTOFFSET (RESOURCE_AND_CLIENT_COUNT - RESOURCE_CLIENT_BITS)
/* resource field */
#define RESOURCE_ID_MASK ((1 << CLIENTOFFSET) - 1)
/* client field */
#define RESOURCE_CLIENT_MASK (((1 << RESOURCE_CLIENT_BITS) - 1) << CLIENTOFFSET)
/* extract the client mask from an XID */
#define CLIENT_BITS(id) ((id) & RESOURCE_CLIENT_MASK)
/* extract the client id from an XID */
#define CLIENT_ID(id) ((int)(CLIENT_BITS(id) >> CLIENTOFFSET))
#define SERVER_BIT (Mask)0x40000000 /* use illegal bit */
#ifdef INVALID
#undef INVALID /* needed on HP/UX */
#endif
/* Invalid resource id */
#define INVALID (0)
#define BAD_RESOURCE 0xe0000000
typedef int (*DeleteType)(
void * /*value*/,
XID /*id*/);
typedef void (*FindResType)(
void * /*value*/,
XID /*id*/,
void * /*cdata*/);
typedef void (*FindAllRes)(
void * /*value*/,
XID /*id*/,
RESTYPE /*type*/,
void * /*cdata*/);
typedef Bool (*FindComplexResType)(
void * /*value*/,
XID /*id*/,
void * /*cdata*/);
extern RESTYPE CreateNewResourceType(
DeleteType /*deleteFunc*/);
extern RESTYPE CreateNewResourceClass(void);
extern Bool InitClientResources(
ClientPtr /*client*/);
extern XID FakeClientID(
int /*client*/);
/* Quartz support on Mac OS X uses the CarbonCore
framework whose AddResource function conflicts here. */
#ifdef __DARWIN__
#define AddResource Darwin_X_AddResource
#endif
extern Bool AddResource(
XID /*id*/,
RESTYPE /*type*/,
void * /*value*/);
extern void FreeResource(
XID /*id*/,
RESTYPE /*skipDeleteFuncType*/);
extern void FreeResourceByType(
XID /*id*/,
RESTYPE /*type*/,
Bool /*skipFree*/);
extern Bool ChangeResourceValue(
XID /*id*/,
RESTYPE /*rtype*/,
void * /*value*/);
extern void FindClientResourcesByType(
ClientPtr /*client*/,
RESTYPE /*type*/,
FindResType /*func*/,
void * /*cdata*/);
extern void FindAllClientResources(
ClientPtr /*client*/,
FindAllRes /*func*/,
void * /*cdata*/);
extern void FreeClientNeverRetainResources(
ClientPtr /*client*/);
extern void FreeClientResources(
ClientPtr /*client*/);
extern void FreeAllResources(void);
extern Bool LegalNewID(
XID /*id*/,
ClientPtr /*client*/);
extern void * LookupIDByType(
XID /*id*/,
RESTYPE /*rtype*/);
extern void * LookupIDByClass(
XID /*id*/,
RESTYPE /*classes*/);
extern void * LookupClientResourceComplex(
ClientPtr client,
RESTYPE type,
FindComplexResType func,
void * cdata);
/* These are the access modes that can be passed in the last parameter
* to SecurityLookupIDByType/Class. The Security extension doesn't
* currently make much use of these; they're mainly provided as an
* example of what you might need for discretionary access control.
* You can or these values together to indicate multiple modes
* simultaneously.
*/
#define DixUnknownAccess 0 /* don't know intentions */
#define DixReadAccess (1<<0) /* inspecting the object */
#define DixWriteAccess (1<<1) /* changing the object */
#define DixDestroyAccess (1<<2) /* destroying the object */
#ifdef XCSECURITY
extern void * SecurityLookupIDByType(
ClientPtr /*client*/,
XID /*id*/,
RESTYPE /*rtype*/,
Mask /*access_mode*/);
extern void * SecurityLookupIDByClass(
ClientPtr /*client*/,
XID /*id*/,
RESTYPE /*classes*/,
Mask /*access_mode*/);
#else /* not XCSECURITY */
#define SecurityLookupIDByType(client, id, rtype, access_mode) \
LookupIDByType(id, rtype)
#define SecurityLookupIDByClass(client, id, classes, access_mode) \
LookupIDByClass(id, classes)
#endif /* XCSECURITY */
extern void GetXIDRange(
int /*client*/,
Bool /*server*/,
XID * /*minp*/,
XID * /*maxp*/);
extern unsigned int GetXIDList(
ClientPtr /*client*/,
unsigned int /*count*/,
XID * /*pids*/);
extern RESTYPE lastResourceType;
extern RESTYPE TypeMask;
#ifdef XResExtension
extern Atom *ResourceNames;
void RegisterResourceName(RESTYPE type, char* name);
#endif
#endif /* RESOURCE_H */

View File

@@ -0,0 +1,110 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef SCREENINT_H
#define SCREENINT_H
#include "misc.h"
typedef struct _PixmapFormat *PixmapFormatPtr;
typedef struct _Visual *VisualPtr;
typedef struct _Depth *DepthPtr;
typedef struct _Screen *ScreenPtr;
extern void ResetScreenPrivates(void);
extern int AllocateScreenPrivateIndex(void);
extern void ResetWindowPrivates(void);
extern int AllocateWindowPrivateIndex(void);
extern Bool AllocateWindowPrivate(
ScreenPtr /* pScreen */,
int /* index */,
unsigned /* amount */);
extern void ResetGCPrivates(void);
extern int AllocateGCPrivateIndex(void);
extern Bool AllocateGCPrivate(
ScreenPtr /* pScreen */,
int /* index */,
unsigned /* amount */);
extern int AddScreen(
Bool (* /*pfnInit*/)(
ScreenPtr /*pScreen*/,
int /*argc*/,
char ** /*argv*/),
int /*argc*/,
char** /*argv*/);
#ifdef PIXPRIV
extern void ResetPixmapPrivates(void);
extern int AllocatePixmapPrivateIndex(void);
extern Bool AllocatePixmapPrivate(
ScreenPtr /* pScreen */,
int /* index */,
unsigned /* amount */);
#endif /* PIXPRIV */
extern void ResetColormapPrivates(void);
typedef struct _ColormapRec *ColormapPtr;
typedef int (*InitCmapPrivFunc)(ColormapPtr, int);
extern int AllocateColormapPrivateIndex(
InitCmapPrivFunc /* initPrivFunc */);
#endif /* SCREENINT_H */

View File

@@ -0,0 +1,756 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef SCREENINTSTRUCT_H
#define SCREENINTSTRUCT_H
#include "screenint.h"
#include "regionstr.h"
#include "bstore.h"
#include "colormap.h"
#include "cursor.h"
#include "validate.h"
#include <nx-X11/Xproto.h>
#include "dix.h"
typedef struct _PixmapFormat {
unsigned char depth;
unsigned char bitsPerPixel;
unsigned char scanlinePad;
} PixmapFormatRec;
typedef struct _Visual {
VisualID vid;
short class;
short bitsPerRGBValue;
short ColormapEntries;
short nplanes;/* = log2 (ColormapEntries). This does not
* imply that the screen has this many planes.
* it may have more or fewer */
unsigned long redMask, greenMask, blueMask;
int offsetRed, offsetGreen, offsetBlue;
} VisualRec;
typedef struct _Depth {
unsigned char depth;
short numVids;
VisualID *vids; /* block of visual ids for this depth */
} DepthRec;
/*
* There is a typedef for each screen function void * so that code that
* needs to declare a screen function void * (e.g. in a screen private
* or as a local variable) can easily do so and retain full type checking.
*/
typedef Bool (* CloseScreenProcPtr)(
ScreenPtr /*pScreen*/);
typedef void (* QueryBestSizeProcPtr)(
int /*class*/,
unsigned short * /*pwidth*/,
unsigned short * /*pheight*/,
ScreenPtr /*pScreen*/);
typedef Bool (* SaveScreenProcPtr)(
ScreenPtr /*pScreen*/,
int /*on*/);
typedef void (* GetImageProcPtr)(
DrawablePtr /*pDrawable*/,
int /*sx*/,
int /*sy*/,
int /*w*/,
int /*h*/,
unsigned int /*format*/,
unsigned long /*planeMask*/,
char * /*pdstLine*/);
typedef void (* GetSpansProcPtr)(
DrawablePtr /*pDrawable*/,
int /*wMax*/,
DDXPointPtr /*ppt*/,
int* /*pwidth*/,
int /*nspans*/,
char * /*pdstStart*/);
typedef void (* PointerNonInterestBoxProcPtr)(
ScreenPtr /*pScreen*/,
BoxPtr /*pBox*/);
typedef void (* SourceValidateProcPtr)(
DrawablePtr /*pDrawable*/,
int /*x*/,
int /*y*/,
int /*width*/,
int /*height*/);
typedef Bool (* CreateWindowProcPtr)(
WindowPtr /*pWindow*/);
typedef Bool (* DestroyWindowProcPtr)(
WindowPtr /*pWindow*/);
typedef Bool (* PositionWindowProcPtr)(
WindowPtr /*pWindow*/,
int /*x*/,
int /*y*/);
typedef Bool (* ChangeWindowAttributesProcPtr)(
WindowPtr /*pWindow*/,
unsigned long /*mask*/);
typedef Bool (* RealizeWindowProcPtr)(
WindowPtr /*pWindow*/);
typedef Bool (* UnrealizeWindowProcPtr)(
WindowPtr /*pWindow*/);
typedef void (* RestackWindowProcPtr)(
WindowPtr /*pWindow*/,
WindowPtr /*pOldNextSib*/);
typedef int (* ValidateTreeProcPtr)(
WindowPtr /*pParent*/,
WindowPtr /*pChild*/,
VTKind /*kind*/);
typedef void (* PostValidateTreeProcPtr)(
WindowPtr /*pParent*/,
WindowPtr /*pChild*/,
VTKind /*kind*/);
typedef void (* WindowExposuresProcPtr)(
WindowPtr /*pWindow*/,
RegionPtr /*prgn*/,
RegionPtr /*other_exposed*/);
typedef void (* PaintWindowProcPtr)(
WindowPtr /*pWindow*/,
RegionPtr /*pRegion*/,
int /*what*/);
typedef PaintWindowProcPtr PaintWindowBackgroundProcPtr;
typedef PaintWindowProcPtr PaintWindowBorderProcPtr;
typedef void (* CopyWindowProcPtr)(
WindowPtr /*pWindow*/,
DDXPointRec /*ptOldOrg*/,
RegionPtr /*prgnSrc*/);
typedef void (* ClearToBackgroundProcPtr)(
WindowPtr /*pWindow*/,
int /*x*/,
int /*y*/,
int /*w*/,
int /*h*/,
Bool /*generateExposures*/);
typedef void (* ClipNotifyProcPtr)(
WindowPtr /*pWindow*/,
int /*dx*/,
int /*dy*/);
/* pixmap will exist only for the duration of the current rendering operation */
#define CREATE_PIXMAP_USAGE_SCRATCH 1
/* pixmap will be the backing pixmap for a redirected window */
#define CREATE_PIXMAP_USAGE_BACKING_PIXMAP 2
/* pixmap will contain a glyph */
#define CREATE_PIXMAP_USAGE_GLYPH_PICTURE 3
typedef PixmapPtr (* CreatePixmapProcPtr)(
ScreenPtr /*pScreen*/,
int /*width*/,
int /*height*/,
int /*depth*/,
unsigned /*usage_hint*/);
typedef Bool (* DestroyPixmapProcPtr)(
PixmapPtr /*pPixmap*/);
typedef void (* SaveDoomedAreasProcPtr)(
WindowPtr /*pWindow*/,
RegionPtr /*prgnSave*/,
int /*xorg*/,
int /*yorg*/);
typedef RegionPtr (* RestoreAreasProcPtr)(
WindowPtr /*pWindow*/,
RegionPtr /*prgnRestore*/);
typedef void (* ExposeCopyProcPtr)(
WindowPtr /*pSrc*/,
DrawablePtr /*pDst*/,
GCPtr /*pGC*/,
RegionPtr /*prgnExposed*/,
int /*srcx*/,
int /*srcy*/,
int /*dstx*/,
int /*dsty*/,
unsigned long /*plane*/);
typedef RegionPtr (* TranslateBackingStoreProcPtr)(
WindowPtr /*pWindow*/,
int /*windx*/,
int /*windy*/,
RegionPtr /*oldClip*/,
int /*oldx*/,
int /*oldy*/);
typedef RegionPtr (* ClearBackingStoreProcPtr)(
WindowPtr /*pWindow*/,
int /*x*/,
int /*y*/,
int /*w*/,
int /*h*/,
Bool /*generateExposures*/);
typedef void (* DrawGuaranteeProcPtr)(
WindowPtr /*pWindow*/,
GCPtr /*pGC*/,
int /*guarantee*/);
typedef Bool (* RealizeFontProcPtr)(
ScreenPtr /*pScreen*/,
FontPtr /*pFont*/);
typedef Bool (* UnrealizeFontProcPtr)(
ScreenPtr /*pScreen*/,
FontPtr /*pFont*/);
typedef void (* ConstrainCursorProcPtr)(
ScreenPtr /*pScreen*/,
BoxPtr /*pBox*/);
typedef void (* CursorLimitsProcPtr)(
ScreenPtr /*pScreen*/,
CursorPtr /*pCursor*/,
BoxPtr /*pHotBox*/,
BoxPtr /*pTopLeftBox*/);
typedef Bool (* DisplayCursorProcPtr)(
ScreenPtr /*pScreen*/,
CursorPtr /*pCursor*/);
typedef Bool (* RealizeCursorProcPtr)(
ScreenPtr /*pScreen*/,
CursorPtr /*pCursor*/);
typedef Bool (* UnrealizeCursorProcPtr)(
ScreenPtr /*pScreen*/,
CursorPtr /*pCursor*/);
typedef void (* RecolorCursorProcPtr)(
ScreenPtr /*pScreen*/,
CursorPtr /*pCursor*/,
Bool /*displayed*/);
typedef Bool (* SetCursorPositionProcPtr)(
ScreenPtr /*pScreen*/,
int /*x*/,
int /*y*/,
Bool /*generateEvent*/);
typedef Bool (* CreateGCProcPtr)(
GCPtr /*pGC*/);
typedef Bool (* CreateColormapProcPtr)(
ColormapPtr /*pColormap*/);
typedef void (* DestroyColormapProcPtr)(
ColormapPtr /*pColormap*/);
typedef void (* InstallColormapProcPtr)(
ColormapPtr /*pColormap*/);
typedef void (* UninstallColormapProcPtr)(
ColormapPtr /*pColormap*/);
typedef int (* ListInstalledColormapsProcPtr) (
ScreenPtr /*pScreen*/,
XID* /*pmaps */);
typedef void (* StoreColorsProcPtr)(
ColormapPtr /*pColormap*/,
int /*ndef*/,
xColorItem * /*pdef*/);
typedef void (* ResolveColorProcPtr)(
unsigned short* /*pred*/,
unsigned short* /*pgreen*/,
unsigned short* /*pblue*/,
VisualPtr /*pVisual*/);
#ifdef NEED_SCREEN_REGIONS
typedef RegionPtr (* RegionCreateProcPtr)(
BoxPtr /*rect*/,
int /*size*/);
typedef void (* RegionInitProcPtr)(
RegionPtr /*pReg*/,
BoxPtr /*rect*/,
int /*size*/);
typedef Bool (* RegionCopyProcPtr)(
RegionPtr /*dst*/,
RegionPtr /*src*/);
typedef void (* RegionDestroyProcPtr)(
RegionPtr /*pReg*/);
typedef void (* RegionUninitProcPtr)(
RegionPtr /*pReg*/);
typedef Bool (* IntersectProcPtr)(
RegionPtr /*newReg*/,
RegionPtr /*reg1*/,
RegionPtr /*reg2*/);
typedef Bool (* UnionProcPtr)(
RegionPtr /*newReg*/,
RegionPtr /*reg1*/,
RegionPtr /*reg2*/);
typedef Bool (* SubtractProcPtr)(
RegionPtr /*regD*/,
RegionPtr /*regM*/,
RegionPtr /*regS*/);
typedef Bool (* InverseProcPtr)(
RegionPtr /*newReg*/,
RegionPtr /*reg1*/,
BoxPtr /*invRect*/);
typedef void (* RegionResetProcPtr)(
RegionPtr /*pReg*/,
BoxPtr /*pBox*/);
typedef void (* TranslateRegionProcPtr)(
RegionPtr /*pReg*/,
int /*x*/,
int /*y*/);
typedef int (* RectInProcPtr)(
RegionPtr /*region*/,
BoxPtr /*prect*/);
typedef Bool (* PointInRegionProcPtr)(
RegionPtr /*pReg*/,
int /*x*/,
int /*y*/,
BoxPtr /*box*/);
typedef Bool (* RegionNotEmptyProcPtr)(
RegionPtr /*pReg*/);
typedef Bool (* RegionEqualProcPtr)(
RegionPtr /*pReg1*/,
RegionPtr /*pReg2*/);
typedef Bool (* RegionBrokenProcPtr)(
RegionPtr /*pReg*/);
typedef Bool (* RegionBreakProcPtr)(
RegionPtr /*pReg*/);
typedef void (* RegionEmptyProcPtr)(
RegionPtr /*pReg*/);
typedef BoxPtr (* RegionExtentsProcPtr)(
RegionPtr /*pReg*/);
typedef Bool (* RegionAppendProcPtr)(
RegionPtr /*dstrgn*/,
RegionPtr /*rgn*/);
typedef Bool (* RegionValidateProcPtr)(
RegionPtr /*badreg*/,
Bool* /*pOverlap*/);
#endif /* NEED_SCREEN_REGIONS */
typedef RegionPtr (* BitmapToRegionProcPtr)(
PixmapPtr /*pPix*/);
#ifdef NEED_SCREEN_REGIONS
typedef RegionPtr (* RectsToRegionProcPtr)(
int /*nrects*/,
xRectangle* /*prect*/,
int /*ctype*/);
#endif /* NEED_SCREEN_REGIONS */
typedef void (* SendGraphicsExposeProcPtr)(
ClientPtr /*client*/,
RegionPtr /*pRgn*/,
XID /*drawable*/,
int /*major*/,
int /*minor*/);
typedef void (* ScreenBlockHandlerProcPtr)(
int /*screenNum*/,
void * /*blockData*/,
void * /*pTimeout*/,
void * /*pReadmask*/);
typedef void (* ScreenWakeupHandlerProcPtr)(
int /*screenNum*/,
void * /*wakeupData*/,
unsigned long /*result*/,
void * /*pReadMask*/);
typedef Bool (* CreateScreenResourcesProcPtr)(
ScreenPtr /*pScreen*/);
typedef Bool (* ModifyPixmapHeaderProcPtr)(
PixmapPtr /*pPixmap*/,
int /*width*/,
int /*height*/,
int /*depth*/,
int /*bitsPerPixel*/,
int /*devKind*/,
void * /*pPixData*/);
typedef PixmapPtr (* GetWindowPixmapProcPtr)(
WindowPtr /*pWin*/);
typedef void (* SetWindowPixmapProcPtr)(
WindowPtr /*pWin*/,
PixmapPtr /*pPix*/);
typedef PixmapPtr (* GetScreenPixmapProcPtr)(
ScreenPtr /*pScreen*/);
typedef void (* SetScreenPixmapProcPtr)(
PixmapPtr /*pPix*/);
typedef void (* MarkWindowProcPtr)(
WindowPtr /*pWin*/);
typedef Bool (* MarkOverlappedWindowsProcPtr)(
WindowPtr /*parent*/,
WindowPtr /*firstChild*/,
WindowPtr * /*pLayerWin*/);
typedef Bool (* ChangeSaveUnderProcPtr)(
WindowPtr /*pLayerWin*/,
WindowPtr /*firstChild*/);
typedef void (* PostChangeSaveUnderProcPtr)(
WindowPtr /*pLayerWin*/,
WindowPtr /*firstChild*/);
typedef void (* MoveWindowProcPtr)(
WindowPtr /*pWin*/,
int /*x*/,
int /*y*/,
WindowPtr /*pSib*/,
VTKind /*kind*/);
typedef void (* ResizeWindowProcPtr)(
WindowPtr /*pWin*/,
int /*x*/,
int /*y*/,
unsigned int /*w*/,
unsigned int /*h*/,
WindowPtr /*pSib*/
);
typedef WindowPtr (* GetLayerWindowProcPtr)(
WindowPtr /*pWin*/
);
typedef void (* HandleExposuresProcPtr)(
WindowPtr /*pWin*/);
typedef void (* ReparentWindowProcPtr)(
WindowPtr /*pWin*/,
WindowPtr /*pPriorParent*/);
#ifdef SHAPE
typedef void (* SetShapeProcPtr)(
WindowPtr /*pWin*/);
#endif /* SHAPE */
typedef void (* ChangeBorderWidthProcPtr)(
WindowPtr /*pWin*/,
unsigned int /*width*/);
typedef void (* MarkUnrealizedWindowProcPtr)(
WindowPtr /*pChild*/,
WindowPtr /*pWin*/,
Bool /*fromConfigure*/);
typedef void (*ConstrainCursorHarderProcPtr)(
ScreenPtr, /*pScreen*/
int, /*mode*/
int *, /*x*/
int * /*y*/);
typedef Bool (*ReplaceScanoutPixmapProcPtr)(
DrawablePtr, /*pDrawable*/
PixmapPtr, /*pPixmap*/
Bool /*enable*/);
typedef struct _Screen {
int myNum; /* index of this instance in Screens[] */
ATOM id;
short width, height;
short mmWidth, mmHeight;
short numDepths;
unsigned char rootDepth;
DepthPtr allowedDepths;
unsigned long rootVisual;
unsigned long defColormap;
short minInstalledCmaps, maxInstalledCmaps;
char backingStoreSupport, saveUnderSupport;
unsigned long whitePixel, blackPixel;
unsigned long rgf; /* array of flags; she's -- HUNGARIAN */
GCPtr GCperDepth[MAXFORMATS+1];
/* next field is a stipple to use as default in
a GC. we don't build default tiles of all depths
because they are likely to be of a color
different from the default fg pixel, so
we don't win anything by building
a standard one.
*/
PixmapPtr PixmapPerDepth[1];
void * devPrivate;
short numVisuals;
VisualPtr visuals;
WindowPtr root;
int WindowPrivateLen;
unsigned *WindowPrivateSizes;
unsigned totalWindowSize;
int GCPrivateLen;
unsigned *GCPrivateSizes;
unsigned totalGCSize;
/* Random screen procedures */
CloseScreenProcPtr CloseScreen;
QueryBestSizeProcPtr QueryBestSize;
SaveScreenProcPtr SaveScreen;
GetImageProcPtr GetImage;
GetSpansProcPtr GetSpans;
PointerNonInterestBoxProcPtr PointerNonInterestBox;
SourceValidateProcPtr SourceValidate;
/* Window Procedures */
CreateWindowProcPtr CreateWindow;
DestroyWindowProcPtr DestroyWindow;
PositionWindowProcPtr PositionWindow;
ChangeWindowAttributesProcPtr ChangeWindowAttributes;
RealizeWindowProcPtr RealizeWindow;
UnrealizeWindowProcPtr UnrealizeWindow;
ValidateTreeProcPtr ValidateTree;
PostValidateTreeProcPtr PostValidateTree;
WindowExposuresProcPtr WindowExposures;
PaintWindowBackgroundProcPtr PaintWindowBackground;
PaintWindowBorderProcPtr PaintWindowBorder;
CopyWindowProcPtr CopyWindow;
ClearToBackgroundProcPtr ClearToBackground;
ClipNotifyProcPtr ClipNotify;
RestackWindowProcPtr RestackWindow;
/* Pixmap procedures */
CreatePixmapProcPtr CreatePixmap;
DestroyPixmapProcPtr DestroyPixmap;
/* Backing store procedures */
SaveDoomedAreasProcPtr SaveDoomedAreas;
RestoreAreasProcPtr RestoreAreas;
ExposeCopyProcPtr ExposeCopy;
TranslateBackingStoreProcPtr TranslateBackingStore;
ClearBackingStoreProcPtr ClearBackingStore;
DrawGuaranteeProcPtr DrawGuarantee;
/*
* A read/write copy of the lower level backing store vector is needed now
* that the functions can be wrapped.
*/
BSFuncRec BackingStoreFuncs;
/* Font procedures */
RealizeFontProcPtr RealizeFont;
UnrealizeFontProcPtr UnrealizeFont;
/* Cursor Procedures */
ConstrainCursorProcPtr ConstrainCursor;
ConstrainCursorHarderProcPtr ConstrainCursorHarder;
CursorLimitsProcPtr CursorLimits;
DisplayCursorProcPtr DisplayCursor;
RealizeCursorProcPtr RealizeCursor;
UnrealizeCursorProcPtr UnrealizeCursor;
RecolorCursorProcPtr RecolorCursor;
SetCursorPositionProcPtr SetCursorPosition;
/* GC procedures */
CreateGCProcPtr CreateGC;
/* Colormap procedures */
CreateColormapProcPtr CreateColormap;
DestroyColormapProcPtr DestroyColormap;
InstallColormapProcPtr InstallColormap;
UninstallColormapProcPtr UninstallColormap;
ListInstalledColormapsProcPtr ListInstalledColormaps;
StoreColorsProcPtr StoreColors;
ResolveColorProcPtr ResolveColor;
/* Region procedures */
#ifdef NEED_SCREEN_REGIONS
RegionCreateProcPtr RegionCreate;
RegionInitProcPtr RegionInit;
RegionCopyProcPtr RegionCopy;
RegionDestroyProcPtr RegionDestroy;
RegionUninitProcPtr RegionUninit;
IntersectProcPtr Intersect;
UnionProcPtr Union;
SubtractProcPtr Subtract;
InverseProcPtr Inverse;
RegionResetProcPtr RegionReset;
TranslateRegionProcPtr TranslateRegion;
RectInProcPtr RectIn;
PointInRegionProcPtr PointInRegion;
RegionNotEmptyProcPtr RegionNotEmpty;
RegionEqualProcPtr RegionEqual;
RegionBrokenProcPtr RegionBroken;
RegionBreakProcPtr RegionBreak;
RegionEmptyProcPtr RegionEmpty;
RegionExtentsProcPtr RegionExtents;
RegionAppendProcPtr RegionAppend;
RegionValidateProcPtr RegionValidate;
#endif /* NEED_SCREEN_REGIONS */
BitmapToRegionProcPtr BitmapToRegion;
#ifdef NEED_SCREEN_REGIONS
RectsToRegionProcPtr RectsToRegion;
#endif /* NEED_SCREEN_REGIONS */
SendGraphicsExposeProcPtr SendGraphicsExpose;
/* os layer procedures */
ScreenBlockHandlerProcPtr BlockHandler;
ScreenWakeupHandlerProcPtr WakeupHandler;
void * blockData;
void * wakeupData;
/* anybody can get a piece of this array */
DevUnion *devPrivates;
CreateScreenResourcesProcPtr CreateScreenResources;
ModifyPixmapHeaderProcPtr ModifyPixmapHeader;
GetWindowPixmapProcPtr GetWindowPixmap;
SetWindowPixmapProcPtr SetWindowPixmap;
GetScreenPixmapProcPtr GetScreenPixmap;
SetScreenPixmapProcPtr SetScreenPixmap;
PixmapPtr pScratchPixmap; /* scratch pixmap "pool" */
#ifdef PIXPRIV
int PixmapPrivateLen;
unsigned int *PixmapPrivateSizes;
unsigned int totalPixmapSize;
#endif
MarkWindowProcPtr MarkWindow;
MarkOverlappedWindowsProcPtr MarkOverlappedWindows;
ChangeSaveUnderProcPtr ChangeSaveUnder;
PostChangeSaveUnderProcPtr PostChangeSaveUnder;
MoveWindowProcPtr MoveWindow;
ResizeWindowProcPtr ResizeWindow;
GetLayerWindowProcPtr GetLayerWindow;
HandleExposuresProcPtr HandleExposures;
ReparentWindowProcPtr ReparentWindow;
#ifdef SHAPE
SetShapeProcPtr SetShape;
#endif /* SHAPE */
ChangeBorderWidthProcPtr ChangeBorderWidth;
MarkUnrealizedWindowProcPtr MarkUnrealizedWindow;
ReplaceScanoutPixmapProcPtr ReplaceScanoutPixmap;
} ScreenRec;
static inline RegionPtr BitmapToRegion(ScreenPtr _pScreen, PixmapPtr pPix) {
return (*(_pScreen)->BitmapToRegion)(pPix); /* no mi version?! */
}
typedef struct _ScreenInfo {
int imageByteOrder;
int bitmapScanlineUnit;
int bitmapScanlinePad;
int bitmapBitOrder;
int numPixmapFormats;
PixmapFormatRec
formats[MAXFORMATS];
int arraySize;
int numScreens;
ScreenPtr screens[MAXSCREENS];
int unused;
} ScreenInfo;
extern ScreenInfo screenInfo;
extern void InitOutput(
ScreenInfo * /*pScreenInfo*/,
int /*argc*/,
char ** /*argv*/);
#endif /* SCREENINTSTRUCT_H */

View File

@@ -0,0 +1,68 @@
#ifndef SELECTION_H
#define SELECTION_H 1
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#include "dixstruct.h"
/*
*
* Selection data structures
*/
typedef struct _Selection {
Atom selection;
TimeStamp lastTimeChanged;
Window window;
WindowPtr pWin;
ClientPtr client;
} Selection;
#endif /* SELECTION_H */

View File

@@ -0,0 +1,128 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef SERVERMD_H
#define SERVERMD_H 1
#include <nx-X11/Xarch.h> /* for X_LITTLE_ENDIAN/X_BIG_ENDIAN */
#if X_BYTE_ORDER == X_LITTLE_ENDIAN
#define IMAGE_BYTE_ORDER LSBFirst
#define BITMAP_BIT_ORDER LSBFirst
#elif X_BYTE_ORDER == X_BIG_ENDIAN
#define IMAGE_BYTE_ORDER MSBFirst
#define BITMAP_BIT_ORDER MSBFirst
#else
#error "Too weird to live."
#endif
#ifndef GLYPHPADBYTES
#define GLYPHPADBYTES 4
#endif
/* size of buffer to use with GetImage, measured in bytes. There's obviously
* a trade-off between the amount of stack (or whatever ALLOCATE_LOCAL gives
* you) used and the number of times the ddx routine has to be called.
*/
#ifndef IMAGE_BUFSIZE
#define IMAGE_BUFSIZE (64*1024)
#endif
/* pad scanline to a longword */
#ifndef BITMAP_SCANLINE_UNIT
#define BITMAP_SCANLINE_UNIT 32
#endif
#ifndef BITMAP_SCANLINE_PAD
#define BITMAP_SCANLINE_PAD 32
#define LOG2_BITMAP_PAD 5
#define LOG2_BYTES_PER_SCANLINE_PAD 2
#endif
/*
* This returns the number of padding units, for depth d and width w.
* For bitmaps this can be calculated with the macros above.
* Other depths require either grovelling over the formats field of the
* screenInfo or hardwired constants.
*/
typedef struct _PaddingInfo {
int padRoundUp; /* pixels per pad unit - 1 */
int padPixelsLog2; /* log 2 (pixels per pad unit) */
int padBytesLog2; /* log 2 (bytes per pad unit) */
int notPower2; /* bitsPerPixel not a power of 2 */
int bytesPerPixel; /* only set when notPower2 is TRUE */
int bitsPerPixel; /* bits per pixel */
} PaddingInfo;
extern PaddingInfo PixmapWidthPaddingInfo[];
/* The only portable way to get the bpp from the depth is to look it up */
#define BitsPerPixel(d) (PixmapWidthPaddingInfo[d].bitsPerPixel)
#define PixmapWidthInPadUnits(w, d) \
(PixmapWidthPaddingInfo[d].notPower2 ? \
(((int)(w) * PixmapWidthPaddingInfo[d].bytesPerPixel + \
PixmapWidthPaddingInfo[d].bytesPerPixel) >> \
PixmapWidthPaddingInfo[d].padBytesLog2) : \
((int)((w) + PixmapWidthPaddingInfo[d].padRoundUp) >> \
PixmapWidthPaddingInfo[d].padPixelsLog2))
/*
* Return the number of bytes to which a scanline of the given
* depth and width will be padded.
*/
#define PixmapBytePad(w, d) \
(PixmapWidthInPadUnits(w, d) << PixmapWidthPaddingInfo[d].padBytesLog2)
#define BitmapBytePad(w) \
(((int)((w) + BITMAP_SCANLINE_PAD - 1) >> LOG2_BITMAP_PAD) << LOG2_BYTES_PER_SCANLINE_PAD)
#define PixmapWidthInPadUnitsProto(w, d) PixmapWidthInPadUnits(w, d)
#define PixmapBytePadProto(w, d) PixmapBytePad(w, d)
#define BitmapBytePadProto(w) BitmapBytePad(w)
#endif /* SERVERMD_H */

View File

@@ -0,0 +1,133 @@
/************************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
********************************************************/
#ifndef SITE_H
#define SITE_H
/*
* The vendor string identifies the vendor responsible for the
* server executable.
*/
#ifndef VENDOR_STRING
#define VENDOR_STRING "The X.Org Group"
#endif
/*
* The vendor release number identifies, for the purpose of submitting
* traceable bug reports, the release number of software produced
* by the vendor.
*/
#ifndef VENDOR_RELEASE
#define VENDOR_RELEASE 6600
#endif
/*
* The following constant is provided solely as a last line of defense. The
* normal build ALWAYS overrides it using a special rule given in
* server/dix/Imakefile. If you want to change this constant, you should set
* the DefaultFontPath configuration parameter.
* DO NOT CHANGE THESE VALUES OR THE DIX IMAKEFILE!
*/
#ifndef COMPILEDDEFAULTFONTPATH
#define COMPILEDDEFAULTFONTPATH "/usr/lib/X11/fonts/misc/"
#endif
/*
* The following constants contain default values for all of the variables
* that can be initialized on the server command line or in the environment.
*/
#define COMPILEDDEFAULTFONT "fixed"
#define COMPILEDCURSORFONT "cursor"
#ifndef COMPILEDDISPLAYCLASS
#define COMPILEDDISPLAYCLASS "MIT-unspecified"
#endif
#define DEFAULT_TIMEOUT 60 /* seconds */
#define DEFAULT_KEYBOARD_CLICK 0
#define DEFAULT_BELL 50
#define DEFAULT_BELL_PITCH 400
#define DEFAULT_BELL_DURATION 100
#ifdef XKB
#define DEFAULT_AUTOREPEAT TRUE
#else
#define DEFAULT_AUTOREPEAT FALSE
#endif
#define DEFAULT_AUTOREPEATS {\
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
#define DEFAULT_LEDS 0x0 /* all off */
#define DEFAULT_LEDS_MASK 0xffffffff /* 32 */
#define DEFAULT_INT_RESOLUTION 1000
#define DEFAULT_INT_MIN_VALUE 0
#define DEFAULT_INT_MAX_VALUE 100
#define DEFAULT_INT_DISPLAYED 0
#define DEFAULT_PTR_NUMERATOR 2
#define DEFAULT_PTR_DENOMINATOR 1
#define DEFAULT_PTR_THRESHOLD 4
#define DEFAULT_SCREEN_SAVER_TIME (10 * (60 * 1000))
#define DEFAULT_SCREEN_SAVER_INTERVAL (10 * (60 * 1000))
#define DEFAULT_SCREEN_SAVER_BLANKING PreferBlanking
#define DEFAULT_SCREEN_SAVER_EXPOSURES AllowExposures
#ifndef NOLOGOHACK
#define DEFAULT_LOGO_SCREEN_SAVER 1
#endif
#ifndef DEFAULT_ACCESS_CONTROL
#define DEFAULT_ACCESS_CONTROL TRUE
#endif
/* Default logging parameters. */
#ifndef DEFAULT_LOG_VERBOSITY
#define DEFAULT_LOG_VERBOSITY 0
#endif
#ifndef DEFAULT_LOG_FILE_VERBOSITY
#define DEFAULT_LOG_FILE_VERBOSITY 3
#endif
#endif /* SITE_H */

View File

@@ -0,0 +1,310 @@
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
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 notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of the above listed
copyright holder(s) not be used in advertising or publicity pertaining
to distribution of the software without specific, written prior
permission.
THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
********************************************************/
#ifndef SWAPREP_H
#define SWAPREP_H 1
extern void Swap32Write(
ClientPtr /* pClient */,
int /* size */,
CARD32 * /* pbuf */);
extern void CopySwap32Write(
ClientPtr /* pClient */,
int /* size */,
CARD32 * /* pbuf */);
extern void CopySwap16Write(
ClientPtr /* pClient */,
int /* size */,
short * /* pbuf */);
extern void SGenericReply(
ClientPtr /* pClient */,
int /* size */,
xGenericReply * /* pRep */);
extern void SGetWindowAttributesReply(
ClientPtr /* pClient */,
int /* size */,
xGetWindowAttributesReply * /* pRep */);
extern void SGetGeometryReply(
ClientPtr /* pClient */,
int /* size */,
xGetGeometryReply * /* pRep */);
extern void SQueryTreeReply(
ClientPtr /* pClient */,
int /* size */,
xQueryTreeReply * /* pRep */);
extern void SInternAtomReply(
ClientPtr /* pClient */,
int /* size */,
xInternAtomReply * /* pRep */);
extern void SGetAtomNameReply(
ClientPtr /* pClient */,
int /* size */,
xGetAtomNameReply * /* pRep */);
extern void SGetPropertyReply(
ClientPtr /* pClient */,
int /* size */,
xGetPropertyReply * /* pRep */);
extern void SListPropertiesReply(
ClientPtr /* pClient */,
int /* size */,
xListPropertiesReply * /* pRep */);
extern void SGetSelectionOwnerReply(
ClientPtr /* pClient */,
int /* size */,
xGetSelectionOwnerReply * /* pRep */);
extern void SQueryPointerReply(
ClientPtr /* pClient */,
int /* size */,
xQueryPointerReply * /* pRep */);
extern void SwapTimecoord(
xTimecoord * /* pCoord */);
extern void SwapTimeCoordWrite(
ClientPtr /* pClient */,
int /* size */,
xTimecoord * /* pRep */);
extern void SGetMotionEventsReply(
ClientPtr /* pClient */,
int /* size */,
xGetMotionEventsReply * /* pRep */);
extern void STranslateCoordsReply(
ClientPtr /* pClient */,
int /* size */,
xTranslateCoordsReply * /* pRep */);
extern void SGetInputFocusReply(
ClientPtr /* pClient */,
int /* size */,
xGetInputFocusReply * /* pRep */);
extern void SQueryKeymapReply(
ClientPtr /* pClient */,
int /* size */,
xQueryKeymapReply * /* pRep */);
extern void SQueryFontReply(
ClientPtr /* pClient */,
int /* size */,
xQueryFontReply * /* pRep */);
extern void SQueryTextExtentsReply(
ClientPtr /* pClient */,
int /* size */,
xQueryTextExtentsReply * /* pRep */);
extern void SListFontsReply(
ClientPtr /* pClient */,
int /* size */,
xListFontsReply * /* pRep */);
extern void SListFontsWithInfoReply(
ClientPtr /* pClient */,
int /* size */,
xListFontsWithInfoReply * /* pRep */);
extern void SGetFontPathReply(
ClientPtr /* pClient */,
int /* size */,
xGetFontPathReply * /* pRep */);
extern void SGetImageReply(
ClientPtr /* pClient */,
int /* size */,
xGetImageReply * /* pRep */);
extern void SListInstalledColormapsReply(
ClientPtr /* pClient */,
int /* size */,
xListInstalledColormapsReply * /* pRep */);
extern void SAllocColorReply(
ClientPtr /* pClient */,
int /* size */,
xAllocColorReply * /* pRep */);
extern void SAllocNamedColorReply(
ClientPtr /* pClient */,
int /* size */,
xAllocNamedColorReply * /* pRep */);
extern void SAllocColorCellsReply(
ClientPtr /* pClient */,
int /* size */,
xAllocColorCellsReply * /* pRep */);
extern void SAllocColorPlanesReply(
ClientPtr /* pClient */,
int /* size */,
xAllocColorPlanesReply * /* pRep */);
extern void SwapRGB(
xrgb * /* prgb */);
extern void SQColorsExtend(
ClientPtr /* pClient */,
int /* size */,
xrgb * /* prgb */);
extern void SQueryColorsReply(
ClientPtr /* pClient */,
int /* size */,
xQueryColorsReply * /* pRep */);
extern void SLookupColorReply(
ClientPtr /* pClient */,
int /* size */,
xLookupColorReply * /* pRep */);
extern void SQueryBestSizeReply(
ClientPtr /* pClient */,
int /* size */,
xQueryBestSizeReply * /* pRep */);
extern void SListExtensionsReply(
ClientPtr /* pClient */,
int /* size */,
xListExtensionsReply * /* pRep */);
extern void SGetKeyboardMappingReply(
ClientPtr /* pClient */,
int /* size */,
xGetKeyboardMappingReply * /* pRep */);
extern void SGetPointerMappingReply(
ClientPtr /* pClient */,
int /* size */,
xGetPointerMappingReply * /* pRep */);
extern void SGetModifierMappingReply(
ClientPtr /* pClient */,
int /* size */,
xGetModifierMappingReply * /* pRep */);
extern void SGetKeyboardControlReply(
ClientPtr /* pClient */,
int /* size */,
xGetKeyboardControlReply * /* pRep */);
extern void SGetPointerControlReply(
ClientPtr /* pClient */,
int /* size */,
xGetPointerControlReply * /* pRep */);
extern void SGetScreenSaverReply(
ClientPtr /* pClient */,
int /* size */,
xGetScreenSaverReply * /* pRep */);
extern void SLHostsExtend(
ClientPtr /* pClient */,
int /* size */,
char * /* buf */);
extern void SListHostsReply(
ClientPtr /* pClient */,
int /* size */,
xListHostsReply * /* pRep */);
extern void SErrorEvent(
xError * /* from */,
xError * /* to */);
extern void SwapConnSetupInfo(
char * /* pInfo */,
char * /* pInfoTBase */);
extern void WriteSConnectionInfo(
ClientPtr /* pClient */,
unsigned long /* size */,
char * /* pInfo */);
extern void SwapConnSetup(
xConnSetup * /* pConnSetup */,
xConnSetup * /* pConnSetupT */);
extern void SwapWinRoot(
xWindowRoot * /* pRoot */,
xWindowRoot * /* pRootT */);
extern void SwapVisual(
xVisualType * /* pVis */,
xVisualType * /* pVisT */);
extern void SwapConnSetupPrefix(
xConnSetupPrefix * /* pcspFrom */,
xConnSetupPrefix * /* pcspTo */);
extern void WriteSConnSetupPrefix(
ClientPtr /* pClient */,
xConnSetupPrefix * /* pcsp */);
#undef SWAPREP_PROC
#define SWAPREP_PROC(func) void func(xEvent * /* from */, xEvent * /* to */)
SWAPREP_PROC(SCirculateEvent);
SWAPREP_PROC(SClientMessageEvent);
SWAPREP_PROC(SColormapEvent);
SWAPREP_PROC(SConfigureNotifyEvent);
SWAPREP_PROC(SConfigureRequestEvent);
SWAPREP_PROC(SCreateNotifyEvent);
SWAPREP_PROC(SDestroyNotifyEvent);
SWAPREP_PROC(SEnterLeaveEvent);
SWAPREP_PROC(SExposeEvent);
SWAPREP_PROC(SFocusEvent);
SWAPREP_PROC(SGraphicsExposureEvent);
SWAPREP_PROC(SGravityEvent);
SWAPREP_PROC(SKeyButtonPtrEvent);
SWAPREP_PROC(SKeymapNotifyEvent);
SWAPREP_PROC(SMapNotifyEvent);
SWAPREP_PROC(SMapRequestEvent);
SWAPREP_PROC(SMappingEvent);
SWAPREP_PROC(SNoExposureEvent);
SWAPREP_PROC(SPropertyEvent);
SWAPREP_PROC(SReparentEvent);
SWAPREP_PROC(SResizeRequestEvent);
SWAPREP_PROC(SSelectionClearEvent);
SWAPREP_PROC(SSelectionNotifyEvent);
SWAPREP_PROC(SSelectionRequestEvent);
SWAPREP_PROC(SUnmapNotifyEvent);
SWAPREP_PROC(SVisibilityEvent);
#undef SWAPREP_PROC
#endif /* SWAPREP_H */

View File

@@ -0,0 +1,119 @@
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
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 notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of the above listed
copyright holder(s) not be used in advertising or publicity pertaining
to distribution of the software without specific, written prior
permission.
THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
********************************************************/
#ifndef SWAPREQ_H
#define SWAPREQ_H 1
/* The first two are in misc.h */
#if 0
extern void SwapLongs (
CARD32 * /* list */,
unsigned long /* count */);
extern void SwapShorts (
short * /* list */,
unsigned long /* count */);
#endif
extern void SwapColorItem(
xColorItem * /* pItem */);
extern void SwapConnClientPrefix(
xConnClientPrefix * /* pCCP */);
#undef SWAPREQ_PROC
#define SWAPREQ_PROC(func) int func(ClientPtr /* client */)
SWAPREQ_PROC(SProcAllocColor);
SWAPREQ_PROC(SProcAllocColorCells);
SWAPREQ_PROC(SProcAllocColorPlanes);
SWAPREQ_PROC(SProcAllocNamedColor);
SWAPREQ_PROC(SProcChangeActivePointerGrab);
SWAPREQ_PROC(SProcChangeGC);
SWAPREQ_PROC(SProcChangeHosts);
SWAPREQ_PROC(SProcChangeKeyboardControl);
SWAPREQ_PROC(SProcChangeKeyboardMapping);
SWAPREQ_PROC(SProcChangePointerControl);
SWAPREQ_PROC(SProcChangeProperty);
SWAPREQ_PROC(SProcChangeWindowAttributes);
SWAPREQ_PROC(SProcClearToBackground);
SWAPREQ_PROC(SProcConfigureWindow);
SWAPREQ_PROC(SProcConvertSelection);
SWAPREQ_PROC(SProcCopyArea);
SWAPREQ_PROC(SProcCopyColormapAndFree);
SWAPREQ_PROC(SProcCopyGC);
SWAPREQ_PROC(SProcCopyPlane);
SWAPREQ_PROC(SProcCreateColormap);
SWAPREQ_PROC(SProcCreateCursor);
SWAPREQ_PROC(SProcCreateGC);
SWAPREQ_PROC(SProcCreateGlyphCursor);
SWAPREQ_PROC(SProcCreatePixmap);
SWAPREQ_PROC(SProcCreateWindow);
SWAPREQ_PROC(SProcDeleteProperty);
SWAPREQ_PROC(SProcFillPoly);
SWAPREQ_PROC(SProcFreeColors);
SWAPREQ_PROC(SProcGetImage);
SWAPREQ_PROC(SProcGetMotionEvents);
SWAPREQ_PROC(SProcGetProperty);
SWAPREQ_PROC(SProcGrabButton);
SWAPREQ_PROC(SProcGrabKey);
SWAPREQ_PROC(SProcGrabKeyboard);
SWAPREQ_PROC(SProcGrabPointer);
SWAPREQ_PROC(SProcImageText);
SWAPREQ_PROC(SProcInternAtom);
SWAPREQ_PROC(SProcListFonts);
SWAPREQ_PROC(SProcListFontsWithInfo);
SWAPREQ_PROC(SProcLookupColor);
SWAPREQ_PROC(SProcNoOperation);
SWAPREQ_PROC(SProcOpenFont);
SWAPREQ_PROC(SProcPoly);
SWAPREQ_PROC(SProcPolyText);
SWAPREQ_PROC(SProcPutImage);
SWAPREQ_PROC(SProcQueryBestSize);
SWAPREQ_PROC(SProcQueryColors);
SWAPREQ_PROC(SProcQueryExtension);
SWAPREQ_PROC(SProcRecolorCursor);
SWAPREQ_PROC(SProcReparentWindow);
SWAPREQ_PROC(SProcResourceReq);
SWAPREQ_PROC(SProcRotateProperties);
SWAPREQ_PROC(SProcSendEvent);
SWAPREQ_PROC(SProcSetClipRectangles);
SWAPREQ_PROC(SProcSetDashes);
SWAPREQ_PROC(SProcSetFontPath);
SWAPREQ_PROC(SProcSetInputFocus);
SWAPREQ_PROC(SProcSetScreenSaver);
SWAPREQ_PROC(SProcSetSelectionOwner);
SWAPREQ_PROC(SProcSimpleReq);
SWAPREQ_PROC(SProcStoreColors);
SWAPREQ_PROC(SProcStoreNamedColor);
SWAPREQ_PROC(SProcTranslateCoords);
SWAPREQ_PROC(SProcUngrabButton);
SWAPREQ_PROC(SProcUngrabKey);
SWAPREQ_PROC(SProcWarpPointer);
#undef SWAPREQ_PROC
#endif /* SWAPREQ_H */

View File

@@ -0,0 +1,40 @@
/*
Copyright 1989, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
#ifndef VALIDATE_H
#define VALIDATE_H
#include "miscstruct.h"
#include "regionstr.h"
typedef enum { VTOther, VTStack, VTMove, VTUnmap, VTMap, VTBroken } VTKind;
/* union _Validate is now device dependent; see mivalidate.h for an example */
typedef union _Validate *ValidatePtr;
#define UnmapValData ((ValidatePtr)1)
#endif /* VALIDATE_H */

View File

@@ -0,0 +1,274 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef WINDOW_H
#define WINDOW_H
#include "misc.h"
#include "region.h"
#include "screenint.h"
#include <nx-X11/Xproto.h>
#define TOTALLY_OBSCURED 0
#define UNOBSCURED 1
#define OBSCURED 2
#define VisibilityNotViewable 3
/* return values for tree-walking callback procedures */
#define WT_STOPWALKING 0
#define WT_WALKCHILDREN 1
#define WT_DONTWALKCHILDREN 2
#define WT_NOMATCH 3
#define NullWindow ((WindowPtr) 0)
typedef struct _BackingStore *BackingStorePtr;
typedef struct _Window *WindowPtr;
typedef int (*VisitWindowProcPtr)(
WindowPtr /*pWin*/,
void * /*data*/);
extern int TraverseTree(
WindowPtr /*pWin*/,
VisitWindowProcPtr /*func*/,
void * /*data*/);
extern int WalkTree(
ScreenPtr /*pScreen*/,
VisitWindowProcPtr /*func*/,
void * /*data*/);
extern WindowPtr AllocateWindow(
ScreenPtr /*pScreen*/);
extern Bool CreateRootWindow(
ScreenPtr /*pScreen*/);
extern void InitRootWindow(
WindowPtr /*pWin*/);
extern void ClippedRegionFromBox(
WindowPtr /*pWin*/,
RegionPtr /*Rgn*/,
int /*x*/,
int /*y*/,
int /*w*/,
int /*h*/);
typedef WindowPtr (* RealChildHeadProc) (WindowPtr pWin);
void RegisterRealChildHeadProc (RealChildHeadProc proc);
extern WindowPtr RealChildHead(
WindowPtr /*pWin*/);
extern WindowPtr CreateWindow(
Window /*wid*/,
WindowPtr /*pParent*/,
int /*x*/,
int /*y*/,
unsigned int /*w*/,
unsigned int /*h*/,
unsigned int /*bw*/,
unsigned int /*class*/,
Mask /*vmask*/,
XID* /*vlist*/,
int /*depth*/,
ClientPtr /*client*/,
VisualID /*visual*/,
int* /*error*/);
extern int DeleteWindow(
void * /*pWin*/,
XID /*wid*/);
extern void DestroySubwindows(
WindowPtr /*pWin*/,
ClientPtr /*client*/);
/* Quartz support on Mac OS X uses the HIToolbox
framework whose ChangeWindowAttributes function conflicts here. */
#ifdef __DARWIN__
#define ChangeWindowAttributes Darwin_X_ChangeWindowAttributes
#endif
extern int ChangeWindowAttributes(
WindowPtr /*pWin*/,
Mask /*vmask*/,
XID* /*vlist*/,
ClientPtr /*client*/);
/* Quartz support on Mac OS X uses the HIToolbox
framework whose GetWindowAttributes function conflicts here. */
#ifdef __DARWIN__
#define GetWindowAttributes(w,c,x) Darwin_X_GetWindowAttributes(w,c,x)
extern void Darwin_X_GetWindowAttributes(
#else
extern void GetWindowAttributes(
#endif
WindowPtr /*pWin*/,
ClientPtr /*client*/,
xGetWindowAttributesReply* /* wa */);
extern RegionPtr CreateUnclippedWinSize(
WindowPtr /*pWin*/);
extern void GravityTranslate(
int /*x*/,
int /*y*/,
int /*oldx*/,
int /*oldy*/,
int /*dw*/,
int /*dh*/,
unsigned /*gravity*/,
int* /*destx*/,
int* /*desty*/);
extern int ConfigureWindow(
WindowPtr /*pWin*/,
Mask /*mask*/,
XID* /*vlist*/,
ClientPtr /*client*/);
extern int CirculateWindow(
WindowPtr /*pParent*/,
int /*direction*/,
ClientPtr /*client*/);
extern int ReparentWindow(
WindowPtr /*pWin*/,
WindowPtr /*pParent*/,
int /*x*/,
int /*y*/,
ClientPtr /*client*/);
extern int MapWindow(
WindowPtr /*pWin*/,
ClientPtr /*client*/);
extern void MapSubwindows(
WindowPtr /*pParent*/,
ClientPtr /*client*/);
extern int UnmapWindow(
WindowPtr /*pWin*/,
Bool /*fromConfigure*/);
extern void UnmapSubwindows(
WindowPtr /*pWin*/);
extern void HandleSaveSet(
ClientPtr /*client*/);
extern Bool VisibleBoundingBoxFromPoint(
WindowPtr /*pWin*/,
int /*x*/,
int /*y*/,
BoxPtr /*box*/);
extern Bool PointInWindowIsVisible(
WindowPtr /*pWin*/,
int /*x*/,
int /*y*/);
extern RegionPtr NotClippedByChildren(
WindowPtr /*pWin*/);
extern void SendVisibilityNotify(
WindowPtr /*pWin*/);
extern void SaveScreens(
int /*on*/,
int /*mode*/);
extern WindowPtr FindWindowWithOptional(
WindowPtr /*w*/);
extern void CheckWindowOptionalNeed(
WindowPtr /*w*/);
extern Bool MakeWindowOptional(
WindowPtr /*pWin*/);
extern void DisposeWindowOptional(
WindowPtr /*pWin*/);
extern WindowPtr MoveWindowInStack(
WindowPtr /*pWin*/,
WindowPtr /*pNextSib*/);
void SetWinSize(
WindowPtr /*pWin*/);
void SetBorderSize(
WindowPtr /*pWin*/);
void ResizeChildrenWinSize(
WindowPtr /*pWin*/,
int /*dx*/,
int /*dy*/,
int /*dw*/,
int /*dh*/);
extern void SendShapeNotify(
WindowPtr /* pWin */,
int /* which */ );
extern RegionPtr CreateBoundingShape(
WindowPtr /* pWin */ );
extern RegionPtr CreateClipShape(
WindowPtr /* pWin */ );
extern void DisableMapUnmapEvents(
WindowPtr /* pWin */ );
extern void EnableMapUnmapEvents(
WindowPtr /* pWin */ );
extern Bool MapUnmapEventsEnabled(
WindowPtr /* pWin */ );
#endif /* WINDOW_H */

View File

@@ -0,0 +1,255 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
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.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
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 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.
******************************************************************/
#ifndef WINDOWSTRUCT_H
#define WINDOWSTRUCT_H
#include "window.h"
#include "pixmapstr.h"
#include "regionstr.h"
#include "cursor.h"
#include "property.h"
#include "resource.h" /* for ROOT_WINDOW_ID_BASE */
#include "dix.h"
#include "miscstruct.h"
#include <nx-X11/Xprotostr.h>
#include "opaque.h"
#define GuaranteeNothing 0
#define GuaranteeVisBack 1
#define SameBackground(as, a, bs, b) \
((as) == (bs) && ((as) == None || \
(as) == ParentRelative || \
SamePixUnion(a,b,as == BackgroundPixel)))
#define SameBorder(as, a, bs, b) \
EqualPixUnion(as, a, bs, b)
typedef struct _WindowOpt {
VisualID visual; /* default: same as parent */
CursorPtr cursor; /* default: window.cursorNone */
Colormap colormap; /* default: same as parent */
Mask dontPropagateMask; /* default: window.dontPropagate */
Mask otherEventMasks; /* default: 0 */
struct _OtherClients *otherClients; /* default: NULL */
struct _GrabRec *passiveGrabs; /* default: NULL */
PropertyPtr userProps; /* default: NULL */
unsigned long backingBitPlanes; /* default: ~0L */
unsigned long backingPixel; /* default: 0 */
#ifdef SHAPE
RegionPtr boundingShape; /* default: NULL */
RegionPtr clipShape; /* default: NULL */
RegionPtr inputShape; /* default: NULL */
#endif
#ifdef XINPUT
struct _OtherInputMasks *inputMasks; /* default: NULL */
#endif
} WindowOptRec, *WindowOptPtr;
#define BackgroundPixel 2L
#define BackgroundPixmap 3L
/*
* The redirectDraw field can have one of three values:
*
* RedirectDrawNone
* A normal window; painted into the same pixmap as the parent
* and clipping parent and siblings to its geometry. These
* windows get a clip list equal to the intersection of their
* geometry with the parent geometry, minus the geometry
* of overlapping None and Clipped siblings.
* RedirectDrawAutomatic
* A redirected window which clips parent and sibling drawing.
* Contents for these windows are manage inside the server.
* These windows get an internal clip list equal to their
* geometry.
* RedirectDrawManual
* A redirected window which does not clip parent and sibling
* drawing; the window must be represented within the parent
* geometry by the client performing the redirection management.
* Contents for these windows are managed outside the server.
* These windows get an internal clip list equal to their
* geometry.
*/
#define RedirectDrawNone 0
#define RedirectDrawAutomatic 1
#define RedirectDrawManual 2
typedef struct _Window {
DrawableRec drawable;
WindowPtr parent; /* ancestor chain */
WindowPtr nextSib; /* next lower sibling */
WindowPtr prevSib; /* next higher sibling */
WindowPtr firstChild; /* top-most child */
WindowPtr lastChild; /* bottom-most child */
RegionRec clipList; /* clipping rectangle for output */
RegionRec borderClip; /* NotClippedByChildren + border */
union _Validate *valdata;
RegionRec winSize;
RegionRec borderSize;
DDXPointRec origin; /* position relative to parent */
unsigned short borderWidth;
unsigned short deliverableEvents;
Mask eventMask;
PixUnion background;
PixUnion border;
void * backStorage; /* null when BS disabled */
WindowOptPtr optional;
unsigned backgroundState:2; /* None, Relative, Pixel, Pixmap */
unsigned borderIsPixel:1;
unsigned cursorIsNone:1; /* else real cursor (might inherit) */
unsigned backingStore:2;
unsigned saveUnder:1;
unsigned DIXsaveUnder:1;
unsigned bitGravity:4;
unsigned winGravity:4;
unsigned overrideRedirect:1;
unsigned visibility:2;
unsigned mapped:1;
unsigned realized:1; /* ancestors are all mapped */
unsigned viewable:1; /* realized && InputOutput */
unsigned dontPropagate:3;/* index into DontPropagateMasks */
unsigned forcedBS:1; /* system-supplied backingStore */
#ifdef NEED_DBE_BUF_BITS
#define DBE_FRONT_BUFFER 1
#define DBE_BACK_BUFFER 0
unsigned dstBuffer:1; /* destination buffer for rendering */
unsigned srcBuffer:1; /* source buffer for rendering */
#endif
#ifdef COMPOSITE
unsigned redirectDraw:2; /* rendering is redirected from here */
#endif
DevUnion *devPrivates;
} WindowRec;
/*
* Ok, a bunch of macros for accessing the optional record
* fields (or filling the appropriate default value)
*/
extern Mask DontPropagateMasks[];
#define wTrackParent(w,field) ((w)->optional ? \
(w)->optional->field \
: FindWindowWithOptional(w)->optional->field)
#define wUseDefault(w,field,def) ((w)->optional ? \
(w)->optional->field \
: def)
#define wVisual(w) wTrackParent(w, visual)
#define wCursor(w) ((w)->cursorIsNone ? None : wTrackParent(w, cursor))
#define wColormap(w) ((w)->drawable.class == InputOnly ? None : wTrackParent(w, colormap))
#define wDontPropagateMask(w) wUseDefault(w, dontPropagateMask, DontPropagateMasks[(w)->dontPropagate])
#define wOtherEventMasks(w) wUseDefault(w, otherEventMasks, 0)
#define wOtherClients(w) wUseDefault(w, otherClients, NULL)
#ifdef XINPUT
#define wOtherInputMasks(w) wUseDefault(w, inputMasks, NULL)
#else
#define wOtherInputMasks(w) NULL
#endif
#define wPassiveGrabs(w) wUseDefault(w, passiveGrabs, NULL)
#define wUserProps(w) wUseDefault(w, userProps, NULL)
#define wBackingBitPlanes(w) wUseDefault(w, backingBitPlanes, ~0L)
#define wBackingPixel(w) wUseDefault(w, backingPixel, 0)
#ifdef SHAPE
#define wBoundingShape(w) wUseDefault(w, boundingShape, NULL)
#define wClipShape(w) wUseDefault(w, clipShape, NULL)
#define wInputShape(w) wUseDefault(w, inputShape, NULL)
#endif
#define wClient(w) (clients[CLIENT_ID((w)->drawable.id)])
#define wBorderWidth(w) ((int) (w)->borderWidth)
/* true when w needs a border drawn. */
#ifdef SHAPE
#define HasBorder(w) ((w)->borderWidth || wClipShape(w))
#else
#define HasBorder(w) ((w)->borderWidth)
#endif
typedef struct _ScreenSaverStuff {
WindowPtr pWindow;
XID wid;
char blanked;
Bool (*ExternalScreenSaver)(
ScreenPtr /*pScreen*/,
int /*xstate*/,
Bool /*force*/);
} ScreenSaverStuffRec, *ScreenSaverStuffPtr;
#define SCREEN_IS_BLANKED 0
#define SCREEN_ISNT_SAVED 1
#define SCREEN_IS_TILED 2
#define SCREEN_IS_BLACK 3
#define HasSaverWindow(i) (savedScreenInfo[i].pWindow != NullWindow)
extern int screenIsSaved;
extern ScreenSaverStuffRec savedScreenInfo[MAXSCREENS];
/*
* this is the configuration parameter "NO_BACK_SAVE"
* it means that any existant backing store should not
* be used to implement save unders.
*/
#ifndef NO_BACK_SAVE
#define DO_SAVE_UNDERS(pWin) ((pWin)->drawable.pScreen->saveUnderSupport ==\
USE_DIX_SAVE_UNDERS)
/*
* saveUnderSupport is set to this magic value when using DIXsaveUnders
*/
#define USE_DIX_SAVE_UNDERS 0x40
#endif
extern int numSaveUndersViewable;
extern int deltaSaveUndersViewable;
#endif /* WINDOWSTRUCT_H */

View File

@@ -0,0 +1,481 @@
#ifndef _XKBFILE_H_
#define _XKBFILE_H_ 1
/************************************************************
Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
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 Silicon Graphics not be
used in advertising or publicity pertaining to distribution
of the software without specific prior written permission.
Silicon Graphics makes no representation about the suitability
of this software for any purpose. It is provided "as is"
without any express or implied warranty.
SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
GRAPHICS 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.
********************************************************/
/***====================================================================***/
#define XkbXKMFile 0
#define XkbCFile 1
#define XkbXKBFile 2
#define XkbMessage 3
#define XkbMapDefined (1<<0)
#define XkbStateDefined (1<<1)
typedef struct _XkbFileInfo {
unsigned type;
unsigned defined;
XkbDescPtr xkb;
} XkbFileInfo,*XkbFileInfoPtr;
typedef void (*XkbFileAddOnFunc)(
FILE * /* file */,
XkbFileInfo * /* result */,
Bool /* topLevel */,
Bool /* showImplicit */,
int /* fileSection */,
void * /* priv */
);
/***====================================================================***/
#define _XkbSuccess 0
#define _XkbErrMissingNames 1
#define _XkbErrMissingTypes 2
#define _XkbErrMissingReqTypes 3
#define _XkbErrMissingSymbols 4
#define _XkbErrMissingVMods 5
#define _XkbErrMissingIndicators 6
#define _XkbErrMissingCompatMap 7
#define _XkbErrMissingSymInterps 8
#define _XkbErrMissingGeometry 9
#define _XkbErrIllegalDoodad 10
#define _XkbErrIllegalTOCType 11
#define _XkbErrIllegalContents 12
#define _XkbErrEmptyFile 13
#define _XkbErrFileNotFound 14
#define _XkbErrFileCannotOpen 15
#define _XkbErrBadValue 16
#define _XkbErrBadMatch 17
#define _XkbErrBadTypeName 18
#define _XkbErrBadTypeWidth 19
#define _XkbErrBadFileType 20
#define _XkbErrBadFileVersion 21
#define _XkbErrBadFileFormat 22
#define _XkbErrBadAlloc 23
#define _XkbErrBadLength 24
#define _XkbErrXReqFailure 25
#define _XkbErrBadImplementation 26
extern const char * _XkbErrMessages[];
extern unsigned _XkbErrCode;
extern const char * _XkbErrLocation;
extern unsigned _XkbErrData;
/***====================================================================***/
_XFUNCPROTOBEGIN
extern char * XkbIndentText(
unsigned /* size */
);
extern char * XkbAtomText(
Display * /* dpy */,
Atom /* atm */,
unsigned /* format */
);
extern char * XkbKeysymText(
KeySym /* sym */,
unsigned /* format */
);
extern char * XkbStringText(
char * /* str */,
unsigned /* format */
);
extern char * XkbKeyNameText(
char * /* name */,
unsigned /* format */
);
extern char *
XkbModIndexText(
unsigned /* ndx */,
unsigned /* format */
);
extern char *
XkbModMaskText(
unsigned /* mask */,
unsigned /* format */
);
extern char * XkbVModIndexText(
Display * /* dpy */,
XkbDescPtr /* xkb */,
unsigned /* ndx */,
unsigned /* format */
);
extern char * XkbVModMaskText(
Display * /* dpy */,
XkbDescPtr /* xkb */,
unsigned /* modMask */,
unsigned /* mask */,
unsigned /* format */
);
extern char * XkbConfigText(
unsigned /* config */,
unsigned /* format */
);
extern char * XkbSIMatchText(
unsigned /* type */,
unsigned /* format */
);
extern char * XkbIMWhichStateMaskText(
unsigned /* use_which */,
unsigned /* format */
);
extern char * XkbAccessXDetailText(
unsigned /* state */,
unsigned /* format */
);
extern char * XkbNKNDetailMaskText(
unsigned /* detail */,
unsigned /* format */
);
extern char * XkbControlsMaskText(
unsigned /* ctrls */,
unsigned /* format */
);
extern char * XkbGeomFPText(
int /* val */,
unsigned /* format */
);
extern char * XkbDoodadTypeText(
unsigned /* type */,
unsigned /* format */
);
extern char * XkbActionTypeText(
unsigned /* type */,
unsigned /* format */
);
extern char * XkbActionText(
Display * /* dpy */,
XkbDescPtr /* xkb */,
XkbAction * /* action */,
unsigned /* format */
);
extern char * XkbBehaviorText(
XkbDescPtr /* xkb */,
XkbBehavior * /* behavior */,
unsigned /* format */
);
/***====================================================================***/
#define _XkbKSLower (1<<0)
#define _XkbKSUpper (1<<1)
#define XkbKSIsLower(k) (_XkbKSCheckCase(k)&_XkbKSLower)
#define XkbKSIsUpper(k) (_XkbKSCheckCase(k)&_XkbKSUpper)
#define XkbKSIsKeypad(k) (((k)>=XK_KP_Space)&&((k)<=XK_KP_Equal))
#define XkbKSIsDeadKey(k) \
(((k)>=XK_dead_grave)&&((k)<=XK_dead_semivoiced_sound))
extern unsigned _XkbKSCheckCase(
KeySym /* sym */
);
extern int XkbFindKeycodeByName(
XkbDescPtr /* xkb */,
char * /* name */,
Bool /* use_aliases */
);
extern Bool XkbLookupGroupAndLevel(
XkbDescPtr /* xkb */,
int /* key */,
int * /* mods_inout */,
int * /* grp_inout */,
int * /* lvl_rtrn */
);
/***====================================================================***/
extern char * XkbAtomGetString(
Display * /* dpy */,
Atom /* atm */
);
extern Atom XkbInternAtom(
Display * /* dpy */,
char * /* name */,
Bool /* onlyIfExists */
);
extern Status XkbChangeKbdDisplay(
Display * /* newDpy */,
XkbFileInfo * /* result */
);
extern Atom XkbChangeAtomDisplay(
Display * /* oldDpy */,
Display * /* newDpy */,
Atom /* atm */
);
extern void XkbInitAtoms(
Display * /* dpy */
);
/***====================================================================***/
#ifdef _XKBGEOM_H_
#define XkbDW_Unknown 0
#define XkbDW_Doodad 1
#define XkbDW_Section 2
typedef struct _XkbDrawable {
int type;
int priority;
union {
XkbDoodadPtr doodad;
XkbSectionPtr section;
} u;
struct _XkbDrawable * next;
} XkbDrawableRec,*XkbDrawablePtr;
extern XkbDrawablePtr
XkbGetOrderedDrawables(
XkbGeometryPtr /* geom */,
XkbSectionPtr /* section */
);
extern void
XkbFreeOrderedDrawables(
XkbDrawablePtr /* draw */
);
#endif
/***====================================================================***/
extern unsigned XkbConvertGetByNameComponents(
Bool /* toXkm */,
unsigned /* orig */
);
extern unsigned XkbConvertXkbComponents(
Bool /* toXkm */,
unsigned /* orig */
);
extern Bool XkbDetermineFileType(
XkbFileInfo * /* xkb */,
int /* format */,
int * /* opts_missing */
);
extern Bool XkbNameMatchesPattern(
char * /* name */,
char * /* pattern */
);
/***====================================================================***/
extern Bool XkbWriteXKBKeycodes(
FILE * /* file */,
XkbFileInfo * /* result */,
Bool /* topLevel */,
Bool /* showImplicit */,
XkbFileAddOnFunc /* addOn */,
void * /* priv */
);
extern Bool XkbWriteXKBKeyTypes(
FILE * /* file */,
XkbFileInfo * /* result */,
Bool /* topLevel */,
Bool /* showImplicit */,
XkbFileAddOnFunc /* addOn */,
void * /* priv */
);
extern Bool XkbWriteXKBCompatMap(
FILE * /* file */,
XkbFileInfo * /* result */,
Bool /* topLevel */,
Bool /* showImplicit */,
XkbFileAddOnFunc /* addOn */,
void * /* priv */
);
extern Bool XkbWriteXKBSymbols(
FILE * /* file */,
XkbFileInfo * /* result */,
Bool /* topLevel */,
Bool /* showImplicit */,
XkbFileAddOnFunc /* addOn */,
void * /* priv */
);
extern Bool XkbWriteXKBGeometry(
FILE * /* file */,
XkbFileInfo * /* result */,
Bool /* topLevel */,
Bool /* showImplicit */,
XkbFileAddOnFunc /* addOn */,
void * /* priv */
);
extern Bool XkbWriteXKBSemantics(
FILE * /* file */,
XkbFileInfo * /* result */,
Bool /* topLevel */,
Bool /* showImplicit */,
XkbFileAddOnFunc /* addOn */,
void * /* priv */
);
extern Bool XkbWriteXKBLayout(
FILE * /* file */,
XkbFileInfo * /* result */,
Bool /* topLevel */,
Bool /* showImplicit */,
XkbFileAddOnFunc /* addOn */,
void * /* priv */
);
extern Bool XkbWriteXKBKeymap(
FILE * /* file */,
XkbFileInfo * /* result */,
Bool /* topLevel */,
Bool /* showImplicit */,
XkbFileAddOnFunc /* addOn */,
void * /* priv */
);
extern Bool XkbWriteXKBFile(
FILE * /* file */,
XkbFileInfo * /* result */,
Bool /* showImplicit */,
XkbFileAddOnFunc /* addOn */,
void * /* priv */
);
extern Bool XkbWriteCFile(
FILE * /* file */,
char * /* name */,
XkbFileInfo * /* info */
);
extern Bool XkbWriteXKMFile(
FILE * /* file */,
XkbFileInfo * /* result */
);
extern Bool XkbWriteToServer(
XkbFileInfo * /* result */
);
extern void XkbEnsureSafeMapName(
char * /* name */
);
extern Bool XkbWriteXKBKeymapForNames(
FILE * /* file */,
XkbComponentNamesPtr /* names */,
Display * /* dpy */,
XkbDescPtr /* xkb */,
unsigned /* want */,
unsigned /* need */
);
extern Status XkbMergeFile(
XkbDescPtr /* xkb */,
XkbFileInfo /* finfo */
);
/***====================================================================***/
extern Bool XkmProbe(
FILE * /* file */
);
extern unsigned XkbReadFromServer(
Display * /* dpy */,
unsigned /* need */,
unsigned /* want */,
XkbFileInfo * /* result */
);
extern unsigned XkmReadFile(
FILE * /* file */,
unsigned /* need */,
unsigned /* want */,
XkbFileInfo * /* result */
);
#ifdef _XKMFORMAT_H_
extern Bool XkmReadTOC(
FILE * /* file */,
xkmFileInfo * /* file_info */,
int /* max_toc */,
xkmSectionInfo * /* toc */
);
extern xkmSectionInfo *XkmFindTOCEntry(
xkmFileInfo * /* finfo */,
xkmSectionInfo * /* toc */,
unsigned /* type */
);
extern Bool XkmReadFileSection(
FILE * /* file */,
xkmSectionInfo * /* toc */,
XkbFileInfo * /* result */,
unsigned * /* loaded_rtrn */
);
extern char * XkmReadFileSectionName(
FILE * /* file */,
xkmSectionInfo * /* toc */
);
#endif /* _XKMFORMAT_H */
_XFUNCPROTOEND
#endif /* _XKBFILE_H_ */

View File

@@ -0,0 +1,184 @@
#ifndef _XKBRULES_H_
#define _XKBRULES_H_ 1
/************************************************************
Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
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 Silicon Graphics not be
used in advertising or publicity pertaining to distribution
of the software without specific prior written permission.
Silicon Graphics makes no representation about the suitability
of this software for any purpose. It is provided "as is"
without any express or implied warranty.
SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
GRAPHICS 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.
********************************************************/
/***====================================================================***/
typedef struct _XkbRF_VarDefs {
char * model;
char * layout;
char * variant;
char * options;
unsigned short sz_extra;
unsigned short num_extra;
char * extra_names;
char ** extra_values;
} XkbRF_VarDefsRec,*XkbRF_VarDefsPtr;
typedef struct _XkbRF_VarDesc {
char * name;
char * desc;
} XkbRF_VarDescRec, *XkbRF_VarDescPtr;
typedef struct _XkbRF_DescribeVars {
int sz_desc;
int num_desc;
XkbRF_VarDescPtr desc;
} XkbRF_DescribeVarsRec,*XkbRF_DescribeVarsPtr;
typedef struct _XkbRF_Rule {
int number;
int layout_num;
int variant_num;
char * model;
char * layout;
char * variant;
char * option;
/* yields */
char * keycodes;
char * symbols;
char * types;
char * compat;
char * geometry;
char * keymap;
unsigned flags;
} XkbRF_RuleRec,*XkbRF_RulePtr;
typedef struct _XkbRF_Group {
int number;
char * name;
char * words;
} XkbRF_GroupRec, *XkbRF_GroupPtr;
#define XkbRF_PendingMatch (1L<<1)
#define XkbRF_Option (1L<<2)
#define XkbRF_Append (1L<<3)
#define XkbRF_Normal (1L<<4)
#define XkbRF_Invalid (1L<<5)
typedef struct _XkbRF_Rules {
XkbRF_DescribeVarsRec models;
XkbRF_DescribeVarsRec layouts;
XkbRF_DescribeVarsRec variants;
XkbRF_DescribeVarsRec options;
unsigned short sz_extra;
unsigned short num_extra;
char ** extra_names;
XkbRF_DescribeVarsPtr extra;
unsigned short sz_rules;
unsigned short num_rules;
XkbRF_RulePtr rules;
unsigned short sz_groups;
unsigned short num_groups;
XkbRF_GroupPtr groups;
} XkbRF_RulesRec, *XkbRF_RulesPtr;
/***====================================================================***/
_XFUNCPROTOBEGIN
extern Bool XkbRF_GetComponents(
XkbRF_RulesPtr /* rules */,
XkbRF_VarDefsPtr /* var_defs */,
XkbComponentNamesPtr /* names */
);
extern XkbRF_RulePtr XkbRF_AddRule(
XkbRF_RulesPtr /* rules */
);
extern XkbRF_GroupPtr XkbRF_AddGroup(XkbRF_RulesPtr rules);
extern Bool XkbRF_LoadRules(
FILE * /* file */,
XkbRF_RulesPtr /* rules */
);
extern Bool XkbRF_LoadRulesByName(
char * /* base */,
char * /* locale */,
XkbRF_RulesPtr /* rules */
);
/***====================================================================***/
extern XkbRF_VarDescPtr XkbRF_AddVarDesc(
XkbRF_DescribeVarsPtr /* vars */
);
extern XkbRF_VarDescPtr XkbRF_AddVarDescCopy(
XkbRF_DescribeVarsPtr /* vars */,
XkbRF_VarDescPtr /* copy_from */
);
extern XkbRF_DescribeVarsPtr XkbRF_AddVarToDescribe(
XkbRF_RulesPtr /* rules */,
char * /* name */
);
extern Bool XkbRF_LoadDescriptions(
FILE * /* file */,
XkbRF_RulesPtr /* rules */
);
extern Bool XkbRF_LoadDescriptionsByName(
char * /* base */,
char * /* locale */,
XkbRF_RulesPtr /* rules */
);
extern XkbRF_RulesPtr XkbRF_Load(
char * /* base */,
char * /* locale */,
Bool /* wantDesc */,
Bool /* wantRules */
);
extern XkbRF_RulesPtr XkbRF_Create(
int /* sz_rules */,
int /* sz_extra */
);
/***====================================================================***/
extern void XkbRF_Free(
XkbRF_RulesPtr /* rules */,
Bool /* freeRules */
);
/***====================================================================***/
#define _XKB_RF_NAMES_PROP_ATOM "_XKB_RULES_NAMES"
#define _XKB_RF_NAMES_PROP_MAXLEN 1024
_XFUNCPROTOEND
#endif /* _XKBRULES_H_ */

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,608 @@
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
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 Silicon Graphics not be
used in advertising or publicity pertaining to distribution
of the software without specific prior written permission.
Silicon Graphics makes no representation about the suitability
of this software for any purpose. It is provided "as is"
without any express or implied warranty.
SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
GRAPHICS 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.
********************************************************/
#ifndef _XKBSTR_H_
#define _XKBSTR_H_
#include <nx-X11/extensions/XKB.h>
#define XkbCharToInt(v) ((v)&0x80?(int)((v)|(~0xff)):(int)((v)&0x7f))
#define XkbIntTo2Chars(i,h,l) (((h)=((i>>8)&0xff)),((l)=((i)&0xff)))
#define Xkb2CharsToInt(h,l) ((short)(((h)<<8)|(l)))
/*
* Common data structures and access macros
*/
typedef struct _XkbStateRec {
unsigned char group;
unsigned char locked_group;
unsigned short base_group;
unsigned short latched_group;
unsigned char mods;
unsigned char base_mods;
unsigned char latched_mods;
unsigned char locked_mods;
unsigned char compat_state;
unsigned char grab_mods;
unsigned char compat_grab_mods;
unsigned char lookup_mods;
unsigned char compat_lookup_mods;
unsigned short ptr_buttons;
} XkbStateRec,*XkbStatePtr;
#define XkbModLocks(s) ((s)->locked_mods)
#define XkbStateMods(s) ((s)->base_mods|(s)->latched_mods|XkbModLocks(s))
#define XkbGroupLock(s) ((s)->locked_group)
#define XkbStateGroup(s) ((s)->base_group+(s)->latched_group+XkbGroupLock(s))
#define XkbStateFieldFromRec(s) XkbBuildCoreState((s)->lookup_mods,(s)->group)
#define XkbGrabStateFromRec(s) XkbBuildCoreState((s)->grab_mods,(s)->group)
typedef struct _XkbMods {
unsigned char mask; /* effective mods */
unsigned char real_mods;
unsigned short vmods;
} XkbModsRec,*XkbModsPtr;
typedef struct _XkbKTMapEntry {
Bool active;
unsigned char level;
XkbModsRec mods;
} XkbKTMapEntryRec,*XkbKTMapEntryPtr;
typedef struct _XkbKeyType {
XkbModsRec mods;
unsigned char num_levels;
unsigned char map_count;
XkbKTMapEntryPtr map;
XkbModsPtr preserve;
Atom name;
Atom * level_names;
} XkbKeyTypeRec, *XkbKeyTypePtr;
#define XkbNumGroups(g) ((g)&0x0f)
#define XkbOutOfRangeGroupInfo(g) ((g)&0xf0)
#define XkbOutOfRangeGroupAction(g) ((g)&0xc0)
#define XkbOutOfRangeGroupNumber(g) (((g)&0x30)>>4)
#define XkbSetGroupInfo(g,w,n) (((w)&0xc0)|(((n)&3)<<4)|((g)&0x0f))
#define XkbSetNumGroups(g,n) (((g)&0xf0)|((n)&0x0f))
/*
* Structures and access macros used primarily by the server
*/
typedef struct _XkbBehavior {
unsigned char type;
unsigned char data;
} XkbBehavior;
#define XkbAnyActionDataSize 7
typedef struct _XkbAnyAction {
unsigned char type;
unsigned char data[XkbAnyActionDataSize];
} XkbAnyAction;
typedef struct _XkbModAction {
unsigned char type;
unsigned char flags;
unsigned char mask;
unsigned char real_mods;
unsigned char vmods1;
unsigned char vmods2;
} XkbModAction;
#define XkbModActionVMods(a) \
((short)(((a)->vmods1<<8)|((a)->vmods2)))
#define XkbSetModActionVMods(a,v) \
(((a)->vmods1=(((v)>>8)&0xff)),(a)->vmods2=((v)&0xff))
typedef struct _XkbGroupAction {
unsigned char type;
unsigned char flags;
char group_XXX;
} XkbGroupAction;
#define XkbSAGroup(a) (XkbCharToInt((a)->group_XXX))
#define XkbSASetGroup(a,g) ((a)->group_XXX=(g))
typedef struct _XkbISOAction {
unsigned char type;
unsigned char flags;
unsigned char mask;
unsigned char real_mods;
char group_XXX;
unsigned char affect;
unsigned char vmods1;
unsigned char vmods2;
} XkbISOAction;
typedef struct _XkbPtrAction {
unsigned char type;
unsigned char flags;
unsigned char high_XXX;
unsigned char low_XXX;
unsigned char high_YYY;
unsigned char low_YYY;
} XkbPtrAction;
#define XkbPtrActionX(a) (Xkb2CharsToInt((a)->high_XXX,(a)->low_XXX))
#define XkbPtrActionY(a) (Xkb2CharsToInt((a)->high_YYY,(a)->low_YYY))
#define XkbSetPtrActionX(a,x) (XkbIntTo2Chars(x,(a)->high_XXX,(a)->low_XXX))
#define XkbSetPtrActionY(a,y) (XkbIntTo2Chars(y,(a)->high_YYY,(a)->low_YYY))
typedef struct _XkbPtrBtnAction {
unsigned char type;
unsigned char flags;
unsigned char count;
unsigned char button;
} XkbPtrBtnAction;
typedef struct _XkbPtrDfltAction {
unsigned char type;
unsigned char flags;
unsigned char affect;
char valueXXX;
} XkbPtrDfltAction;
#define XkbSAPtrDfltValue(a) (XkbCharToInt((a)->valueXXX))
#define XkbSASetPtrDfltValue(a,c) ((a)->valueXXX= ((c)&0xff))
typedef struct _XkbSwitchScreenAction {
unsigned char type;
unsigned char flags;
char screenXXX;
} XkbSwitchScreenAction;
#define XkbSAScreen(a) (XkbCharToInt((a)->screenXXX))
#define XkbSASetScreen(a,s) ((a)->screenXXX= ((s)&0xff))
typedef struct _XkbCtrlsAction {
unsigned char type;
unsigned char flags;
unsigned char ctrls3;
unsigned char ctrls2;
unsigned char ctrls1;
unsigned char ctrls0;
} XkbCtrlsAction;
#define XkbActionSetCtrls(a,c) (((a)->ctrls3=(((c)>>24)&0xff)),\
((a)->ctrls2=(((c)>>16)&0xff)),\
((a)->ctrls1=(((c)>>8)&0xff)),\
((a)->ctrls0=((c)&0xff)))
#define XkbActionCtrls(a) ((((unsigned int)(a)->ctrls3)<<24)|\
(((unsigned int)(a)->ctrls2)<<16)|\
(((unsigned int)(a)->ctrls1)<<8)|\
((unsigned int)((a)->ctrls0)))
typedef struct _XkbMessageAction {
unsigned char type;
unsigned char flags;
unsigned char message[6];
} XkbMessageAction;
typedef struct _XkbRedirectKeyAction {
unsigned char type;
unsigned char new_key;
unsigned char mods_mask;
unsigned char mods;
unsigned char vmods_mask0;
unsigned char vmods_mask1;
unsigned char vmods0;
unsigned char vmods1;
} XkbRedirectKeyAction;
#define XkbSARedirectVMods(a) ((((unsigned int)(a)->vmods1)<<8)|\
((unsigned int)(a)->vmods0))
#define XkbSARedirectSetVMods(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),\
((a)->vmods_mask0=((m)&0xff)))
#define XkbSARedirectVModsMask(a) ((((unsigned int)(a)->vmods_mask1)<<8)|\
((unsigned int)(a)->vmods_mask0))
#define XkbSARedirectSetVModsMask(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),\
((a)->vmods_mask0=((m)&0xff)))
typedef struct _XkbDeviceBtnAction {
unsigned char type;
unsigned char flags;
unsigned char count;
unsigned char button;
unsigned char device;
} XkbDeviceBtnAction;
typedef struct _XkbDeviceValuatorAction {
unsigned char type;
unsigned char device;
unsigned char v1_what;
unsigned char v1_ndx;
unsigned char v1_value;
unsigned char v2_what;
unsigned char v2_ndx;
unsigned char v2_value;
} XkbDeviceValuatorAction;
typedef union _XkbAction {
XkbAnyAction any;
XkbModAction mods;
XkbGroupAction group;
XkbISOAction iso;
XkbPtrAction ptr;
XkbPtrBtnAction btn;
XkbPtrDfltAction dflt;
XkbSwitchScreenAction screen;
XkbCtrlsAction ctrls;
XkbMessageAction msg;
XkbRedirectKeyAction redirect;
XkbDeviceBtnAction devbtn;
XkbDeviceValuatorAction devval;
unsigned char type;
} XkbAction;
typedef struct _XkbControls {
unsigned char mk_dflt_btn;
unsigned char num_groups;
unsigned char groups_wrap;
XkbModsRec internal;
XkbModsRec ignore_lock;
unsigned int enabled_ctrls;
unsigned short repeat_delay;
unsigned short repeat_interval;
unsigned short slow_keys_delay;
unsigned short debounce_delay;
unsigned short mk_delay;
unsigned short mk_interval;
unsigned short mk_time_to_max;
unsigned short mk_max_speed;
short mk_curve;
unsigned short ax_options;
unsigned short ax_timeout;
unsigned short axt_opts_mask;
unsigned short axt_opts_values;
unsigned int axt_ctrls_mask;
unsigned int axt_ctrls_values;
unsigned char per_key_repeat[XkbPerKeyBitArraySize];
} XkbControlsRec, *XkbControlsPtr;
#define XkbAX_AnyFeedback(c) ((c)->enabled_ctrls&XkbAccessXFeedbackMask)
#define XkbAX_NeedOption(c,w) ((c)->ax_options&(w))
#define XkbAX_NeedFeedback(c,w) (XkbAX_AnyFeedback(c)&&XkbAX_NeedOption(c,w))
typedef struct _XkbServerMapRec {
unsigned short num_acts;
unsigned short size_acts;
XkbAction *acts;
XkbBehavior *behaviors;
unsigned short *key_acts;
#if defined(__cplusplus) || defined(c_plusplus)
/* explicit is a C++ reserved word */
unsigned char *c_explicit;
#else
unsigned char *explicit;
#endif
unsigned char vmods[XkbNumVirtualMods];
unsigned short *vmodmap;
} XkbServerMapRec, *XkbServerMapPtr;
#define XkbSMKeyActionsPtr(m,k) (&(m)->acts[(m)->key_acts[k]])
/*
* Structures and access macros used primarily by clients
*/
typedef struct _XkbSymMapRec {
unsigned char kt_index[XkbNumKbdGroups];
unsigned char group_info;
unsigned char width;
unsigned short offset;
} XkbSymMapRec, *XkbSymMapPtr;
typedef struct _XkbClientMapRec {
unsigned char size_types;
unsigned char num_types;
XkbKeyTypePtr types;
unsigned short size_syms;
unsigned short num_syms;
KeySym *syms;
XkbSymMapPtr key_sym_map;
unsigned char *modmap;
} XkbClientMapRec, *XkbClientMapPtr;
#define XkbCMKeyGroupInfo(m,k) ((m)->key_sym_map[k].group_info)
#define XkbCMKeyNumGroups(m,k) (XkbNumGroups((m)->key_sym_map[k].group_info))
#define XkbCMKeyGroupWidth(m,k,g) (XkbCMKeyType(m,k,g)->num_levels)
#define XkbCMKeyGroupsWidth(m,k) ((m)->key_sym_map[k].width)
#define XkbCMKeyTypeIndex(m,k,g) ((m)->key_sym_map[k].kt_index[g&0x3])
#define XkbCMKeyType(m,k,g) (&(m)->types[XkbCMKeyTypeIndex(m,k,g)])
#define XkbCMKeyNumSyms(m,k) (XkbCMKeyGroupsWidth(m,k)*XkbCMKeyNumGroups(m,k))
#define XkbCMKeySymsOffset(m,k) ((m)->key_sym_map[k].offset)
#define XkbCMKeySymsPtr(m,k) (&(m)->syms[XkbCMKeySymsOffset(m,k)])
/*
* Compatibility structures and access macros
*/
typedef struct _XkbSymInterpretRec {
KeySym sym;
unsigned char flags;
unsigned char match;
unsigned char mods;
unsigned char virtual_mod;
XkbAnyAction act;
} XkbSymInterpretRec,*XkbSymInterpretPtr;
typedef struct _XkbCompatMapRec {
XkbSymInterpretPtr sym_interpret;
XkbModsRec groups[XkbNumKbdGroups];
unsigned short num_si;
unsigned short size_si;
} XkbCompatMapRec, *XkbCompatMapPtr;
typedef struct _XkbIndicatorMapRec {
unsigned char flags;
unsigned char which_groups;
unsigned char groups;
unsigned char which_mods;
XkbModsRec mods;
unsigned int ctrls;
} XkbIndicatorMapRec, *XkbIndicatorMapPtr;
#define XkbIM_IsAuto(i) ((((i)->flags&XkbIM_NoAutomatic)==0)&&\
(((i)->which_groups&&(i)->groups)||\
((i)->which_mods&&(i)->mods.mask)||\
((i)->ctrls)))
#define XkbIM_InUse(i) (((i)->flags)||((i)->which_groups)||\
((i)->which_mods)||((i)->ctrls))
typedef struct _XkbIndicatorRec {
unsigned long phys_indicators;
XkbIndicatorMapRec maps[XkbNumIndicators];
} XkbIndicatorRec,*XkbIndicatorPtr;
typedef struct _XkbKeyNameRec {
char name[XkbKeyNameLength];
} XkbKeyNameRec,*XkbKeyNamePtr;
typedef struct _XkbKeyAliasRec {
char real[XkbKeyNameLength];
char alias[XkbKeyNameLength];
} XkbKeyAliasRec,*XkbKeyAliasPtr;
/*
* Names for everything
*/
typedef struct _XkbNamesRec {
Atom keycodes;
Atom geometry;
Atom symbols;
Atom types;
Atom compat;
Atom vmods[XkbNumVirtualMods];
Atom indicators[XkbNumIndicators];
Atom groups[XkbNumKbdGroups];
XkbKeyNamePtr keys;
XkbKeyAliasPtr key_aliases;
Atom *radio_groups;
Atom phys_symbols;
unsigned char num_keys;
unsigned char num_key_aliases;
unsigned short num_rg;
} XkbNamesRec,*XkbNamesPtr;
typedef struct _XkbGeometry *XkbGeometryPtr;
/*
* Tie it all together into one big keyboard description
*/
typedef struct _XkbDesc {
struct _XDisplay * dpy;
unsigned short flags;
unsigned short device_spec;
KeyCode min_key_code;
KeyCode max_key_code;
XkbControlsPtr ctrls;
XkbServerMapPtr server;
XkbClientMapPtr map;
XkbIndicatorPtr indicators;
XkbNamesPtr names;
XkbCompatMapPtr compat;
XkbGeometryPtr geom;
} XkbDescRec, *XkbDescPtr;
#define XkbKeyKeyTypeIndex(d,k,g) (XkbCMKeyTypeIndex((d)->map,k,g))
#define XkbKeyKeyType(d,k,g) (XkbCMKeyType((d)->map,k,g))
#define XkbKeyGroupWidth(d,k,g) (XkbCMKeyGroupWidth((d)->map,k,g))
#define XkbKeyGroupsWidth(d,k) (XkbCMKeyGroupsWidth((d)->map,k))
#define XkbKeyGroupInfo(d,k) (XkbCMKeyGroupInfo((d)->map,(k)))
#define XkbKeyNumGroups(d,k) (XkbCMKeyNumGroups((d)->map,(k)))
#define XkbKeyNumSyms(d,k) (XkbCMKeyNumSyms((d)->map,(k)))
#define XkbKeySymsPtr(d,k) (XkbCMKeySymsPtr((d)->map,(k)))
#define XkbKeySym(d,k,n) (XkbKeySymsPtr(d,k)[n])
#define XkbKeySymEntry(d,k,sl,g) \
(XkbKeySym(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))))
#define XkbKeyAction(d,k,n) \
(XkbKeyHasActions(d,k)?&XkbKeyActionsPtr(d,k)[n]:NULL)
#define XkbKeyActionEntry(d,k,sl,g) \
(XkbKeyHasActions(d,k)?\
XkbKeyAction(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))):NULL)
#define XkbKeyHasActions(d,k) ((d)->server->key_acts[k]!=0)
#define XkbKeyNumActions(d,k) (XkbKeyHasActions(d,k)?XkbKeyNumSyms(d,k):1)
#define XkbKeyActionsPtr(d,k) (XkbSMKeyActionsPtr((d)->server,k))
#define XkbKeycodeInRange(d,k) (((k)>=(d)->min_key_code)&&\
((k)<=(d)->max_key_code))
#define XkbNumKeys(d) ((d)->max_key_code-(d)->min_key_code+1)
/*
* The following structures can be used to track changes
* to a keyboard device
*/
typedef struct _XkbMapChanges {
unsigned short changed;
KeyCode min_key_code;
KeyCode max_key_code;
unsigned char first_type;
unsigned char num_types;
KeyCode first_key_sym;
unsigned char num_key_syms;
KeyCode first_key_act;
unsigned char num_key_acts;
KeyCode first_key_behavior;
unsigned char num_key_behaviors;
KeyCode first_key_explicit;
unsigned char num_key_explicit;
KeyCode first_modmap_key;
unsigned char num_modmap_keys;
KeyCode first_vmodmap_key;
unsigned char num_vmodmap_keys;
unsigned char pad;
unsigned short vmods;
} XkbMapChangesRec,*XkbMapChangesPtr;
typedef struct _XkbControlsChanges {
unsigned int changed_ctrls;
unsigned int enabled_ctrls_changes;
Bool num_groups_changed;
} XkbControlsChangesRec,*XkbControlsChangesPtr;
typedef struct _XkbIndicatorChanges {
unsigned int state_changes;
unsigned int map_changes;
} XkbIndicatorChangesRec,*XkbIndicatorChangesPtr;
typedef struct _XkbNameChanges {
unsigned int changed;
unsigned char first_type;
unsigned char num_types;
unsigned char first_lvl;
unsigned char num_lvls;
unsigned char num_aliases;
unsigned char num_rg;
unsigned char first_key;
unsigned char num_keys;
unsigned short changed_vmods;
unsigned long changed_indicators;
unsigned char changed_groups;
} XkbNameChangesRec,*XkbNameChangesPtr;
typedef struct _XkbCompatChanges {
unsigned char changed_groups;
unsigned short first_si;
unsigned short num_si;
} XkbCompatChangesRec,*XkbCompatChangesPtr;
typedef struct _XkbChanges {
unsigned short device_spec;
unsigned short state_changes;
XkbMapChangesRec map;
XkbControlsChangesRec ctrls;
XkbIndicatorChangesRec indicators;
XkbNameChangesRec names;
XkbCompatChangesRec compat;
} XkbChangesRec, *XkbChangesPtr;
/*
* These data structures are used to construct a keymap from
* a set of components or to list components in the server
* database.
*/
typedef struct _XkbComponentNames {
char * keymap;
char * keycodes;
char * types;
char * compat;
char * symbols;
char * geometry;
} XkbComponentNamesRec, *XkbComponentNamesPtr;
typedef struct _XkbComponentName {
unsigned short flags;
char * name;
} XkbComponentNameRec,*XkbComponentNamePtr;
typedef struct _XkbComponentList {
int num_keymaps;
int num_keycodes;
int num_types;
int num_compat;
int num_symbols;
int num_geometry;
XkbComponentNamePtr keymaps;
XkbComponentNamePtr keycodes;
XkbComponentNamePtr types;
XkbComponentNamePtr compat;
XkbComponentNamePtr symbols;
XkbComponentNamePtr geometry;
} XkbComponentListRec, *XkbComponentListPtr;
/*
* The following data structures describe and track changes to a
* non-keyboard extension device
*/
typedef struct _XkbDeviceLedInfo {
unsigned short led_class;
unsigned short led_id;
unsigned int phys_indicators;
unsigned int maps_present;
unsigned int names_present;
unsigned int state;
Atom names[XkbNumIndicators];
XkbIndicatorMapRec maps[XkbNumIndicators];
} XkbDeviceLedInfoRec,*XkbDeviceLedInfoPtr;
typedef struct _XkbDeviceInfo {
char * name;
Atom type;
unsigned short device_spec;
Bool has_own_state;
unsigned short supported;
unsigned short unsupported;
unsigned short num_btns;
XkbAction * btn_acts;
unsigned short sz_leds;
unsigned short num_leds;
unsigned short dflt_kbd_fb;
unsigned short dflt_led_fb;
XkbDeviceLedInfoPtr leds;
} XkbDeviceInfoRec,*XkbDeviceInfoPtr;
#define XkbXI_DevHasBtnActs(d) (((d)->num_btns>0)&&((d)->btn_acts!=NULL))
#define XkbXI_LegalDevBtn(d,b) (XkbXI_DevHasBtnActs(d)&&((b)<(d)->num_btns))
#define XkbXI_DevHasLeds(d) (((d)->num_leds>0)&&((d)->leds!=NULL))
typedef struct _XkbDeviceLedChanges {
unsigned short led_class;
unsigned short led_id;
unsigned int defined; /* names or maps changed */
struct _XkbDeviceLedChanges *next;
} XkbDeviceLedChangesRec,*XkbDeviceLedChangesPtr;
typedef struct _XkbDeviceChanges {
unsigned int changed;
unsigned short first_btn;
unsigned short num_btns;
XkbDeviceLedChangesRec leds;
} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
#endif /* _XKBSTR_H_ */