[PATCH] Allow old servers to build with new headers

Peter Hutterer peter.hutterer at who-t.net
Tue Nov 3 19:42:07 PST 2009


On Tue, Nov 03, 2009 at 02:42:17PM -0800, Keith Packard wrote:
> This provides header compatibility back to X server version 1.6 at
> least (that's all I tested).
> 
> Signed-off-by: Keith Packard <keithp at keithp.com>
> ---
>  Makefile.am |   10 +++
>  shapestr.h  |    8 +++
>  shmstr.h    |   66 +++++++++++++++++++++
>  syncstr.h   |  184 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  4 files changed, 268 insertions(+), 0 deletions(-)
>  create mode 100644 shapestr.h
>  create mode 100644 shmstr.h
>  create mode 100644 syncstr.h
> 
> diff --git a/Makefile.am b/Makefile.am
> index 8cdd0ac..029c971 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -31,6 +31,16 @@ xext_HEADERS = \
>  	xtestconst.h \
>  	xtestproto.h
>  
> +#
> +# These headers allow old servers to be built with
> +# new headers
> +#
> +compatdir = $(xextdir)
> +compat_HEADERS = \
> +	shapestr.h \
> +	shmstr.h \
> +	syncstr.h
> +
>  pkgconfigdir = $(libdir)/pkgconfig
>  pkgconfig_DATA = xextproto.pc
>  
> diff --git a/shapestr.h b/shapestr.h
> new file mode 100644
> index 0000000..20fde1d
> --- /dev/null
> +++ b/shapestr.h
> @@ -0,0 +1,8 @@
> +#ifndef _SHAPESTR_H_
> +#define _SHAPESTR_H_
> +
> +#warning "shapestr.h is obsolete and may be removed in the future."
> +#warning "include <X11/extensions/shapeproto.h> for the protocol defines."
> +#include <X11/extensions/shapeproto.h>
> +
> +#endif /* _SHAPESTR_H_ */
> diff --git a/shmstr.h b/shmstr.h
> new file mode 100644
> index 0000000..6358860
> --- /dev/null
> +++ b/shmstr.h
> @@ -0,0 +1,66 @@
> +/* $XFree86: xc/include/extensions/shmstr.h,v 3.3 2001/12/14 19:53:29 dawes Exp $ */
> +/************************************************************
> +
> +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.
> +
> +********************************************************/
> +
> +/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
> +
> +#ifndef _SHMSTR_H_
> +#define _SHMSTR_H_
> +
> +/* $Xorg: shmstr.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $ */
> +
> +#include <X11/extensions/shmproto.h>
> +
> +#ifdef _XSHM_SERVER_
> +#define XSHM_PUT_IMAGE_ARGS \
> +    DrawablePtr		/* dst */, \
> +    GCPtr		/* pGC */, \
> +    int			/* depth */, \
> +    unsigned int	/* format */, \
> +    int			/* w */, \
> +    int			/* h */, \
> +    int			/* sx */, \
> +    int			/* sy */, \
> +    int			/* sw */, \
> +    int			/* sh */, \
> +    int			/* dx */, \
> +    int			/* dy */, \
> +    char *		/* data */
> +
> +#define XSHM_CREATE_PIXMAP_ARGS \
> +    ScreenPtr	/* pScreen */, \
> +    int		/* width */, \
> +    int		/* height */, \
> +    int		/* depth */, \
> +    char *	/* addr */
> +
> +typedef struct _ShmFuncs {
> +    PixmapPtr	(* CreatePixmap)(XSHM_CREATE_PIXMAP_ARGS);
> +    void	(* PutImage)(XSHM_PUT_IMAGE_ARGS);
> +} ShmFuncs, *ShmFuncsPtr;
> +#endif
> +
> +#endif /* _SHMSTR_H_ */
> diff --git a/syncstr.h b/syncstr.h
> new file mode 100644
> index 0000000..87697a2
> --- /dev/null
> +++ b/syncstr.h
> @@ -0,0 +1,184 @@
> +/* $Xorg: syncstr.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $ */
> +/*
> +
> +Copyright 1991, 1993, 1994, 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 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
> +and Olivetti Research Limited, Cambridge, England.
> +
> +                        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 names of Digital or Olivetti
> +not be used in advertising or publicity pertaining to distribution of the
> +software without specific, written prior permission.  
> +
> +DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
> +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
> +FITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
> +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
> +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
> +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
> +PERFORMANCE OF THIS SOFTWARE.
> +
> +******************************************************************/
> +/* $XFree86: xc/include/extensions/syncstr.h,v 1.3 2003/07/16 01:38:24 dawes Exp $ */
> +
> +#ifndef _SYNCSTR_H_
> +#define _SYNCSTR_H_
> +
> +#include <X11/extensions/syncproto.h>
> +
> +#ifdef _SYNC_SERVER
> +
> +#define CARD64 XSyncValue /* XXX temporary! need real 64 bit values for Alpha */
> +
> +typedef struct _SyncCounter {
> +    ClientPtr		client;	/* Owning client. 0 for system counters */
> +    XSyncCounter	id;		/* resource ID */
> +    CARD64		value;		/* counter value */
> +    struct _SyncTriggerList *pTriglist;	/* list of triggers */
> +    Bool		beingDestroyed; /* in process of going away */
> +    struct _SysCounterInfo *pSysCounterInfo; /* NULL if not a system counter */
> +} SyncCounter;
> +
> +/*
> + * The System Counter interface
> + */
> +
> +typedef enum {
> +    XSyncCounterNeverChanges,
> +    XSyncCounterNeverIncreases,
> +    XSyncCounterNeverDecreases,
> +    XSyncCounterUnrestricted
> +} SyncCounterType;
> +
> +typedef struct _SysCounterInfo {
> +    char	*name;
> +    CARD64	resolution;
> +    CARD64	bracket_greater;
> +    CARD64	bracket_less;
> +    SyncCounterType counterType;  /* how can this counter change */
> +    void        (*QueryValue)(
> +			      pointer /*pCounter*/,
> +			      CARD64 * /*freshvalue*/
> +);
> +    void	(*BracketValues)(
> +				 pointer /*pCounter*/,
> +				 CARD64 * /*lessthan*/,
> +				 CARD64 * /*greaterthan*/
> +);
> +} SysCounterInfo;
> +
> +
> +
> +typedef struct _SyncTrigger {
> +    SyncCounter *pCounter;
> +    CARD64	wait_value;	/* wait value */
> +    unsigned int value_type;     /* Absolute or Relative */
> +    unsigned int test_type;	/* transition or Comparision type */
> +    CARD64	test_value;	/* trigger event threshold value */
> +    Bool	(*CheckTrigger)(
> +				struct _SyncTrigger * /*pTrigger*/,
> +				CARD64 /*newval*/
> +				);
> +    void	(*TriggerFired)(
> +				struct _SyncTrigger * /*pTrigger*/
> +				);
> +    void	(*CounterDestroyed)(
> +				struct _SyncTrigger * /*pTrigger*/
> +				    );
> +} SyncTrigger;
> +
> +typedef struct _SyncTriggerList {
> +    SyncTrigger *pTrigger;
> +    struct _SyncTriggerList *next;
> +} SyncTriggerList;
> +
> +typedef struct _SyncAlarmClientList {
> +    ClientPtr	client;
> +    XID		delete_id;
> +    struct _SyncAlarmClientList *next;
> +} SyncAlarmClientList;
> +
> +typedef struct _SyncAlarm {
> +    SyncTrigger trigger;
> +    ClientPtr	client;
> +    XSyncAlarm 	alarm_id;
> +    CARD64	delta;
> +    int		events;
> +    int		state;
> +    SyncAlarmClientList *pEventClients;
> +} SyncAlarm;
> +
> +typedef struct {
> +    ClientPtr	client;
> +    CARD32 	delete_id;
> +    int		num_waitconditions;
> +} SyncAwaitHeader;
> +
> +typedef struct {
> +    SyncTrigger trigger;
> +    CARD64	event_threshold;
> +    SyncAwaitHeader *pHeader;
> +} SyncAwait;
> +
> +typedef union {
> +    SyncAwaitHeader header;
> +    SyncAwait	    await;
> +} SyncAwaitUnion;
> +
> +
> +extern pointer SyncCreateSystemCounter(
> +    char *	/* name */,
> +    CARD64  	/* inital_value */,
> +    CARD64  	/* resolution */,
> +    SyncCounterType /* change characterization */,
> +    void        (* /*QueryValue*/ ) (
> +        pointer /* pCounter */,
> +        CARD64 * /* pValue_return */), /* XXX prototype */
> +    void        (* /*BracketValues*/) (
> +        pointer /* pCounter */, 
> +        CARD64 * /* pbracket_less */,
> +        CARD64 * /* pbracket_greater */)
> +);
> +
> +extern void SyncChangeCounter(
> +    SyncCounter *	/* pCounter*/,
> +    CARD64  		/* new_value */
> +);
> +
> +extern void SyncDestroySystemCounter(
> +    pointer pCounter
> +);
> +extern void InitServertime(void);
> +
> +#endif /* _SYNC_SERVER */
> +
> +#endif /* _SYNCSTR_H_ */
> -- 
> 1.6.5


Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

Cheers,
  Peter


More information about the xorg-devel mailing list