diff options
Diffstat (limited to 'nx-X11/lib/Xcomposite')
-rw-r--r-- | nx-X11/lib/Xcomposite/.cvsignore | 24 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/AUTHORS | 1 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/COPYING | 22 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/ChangeLog | 19 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/INSTALL | 8 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/Imakefile | 68 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/Makefile.am | 52 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/NEWS | 0 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/README | 10 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/Xcomposite.c | 333 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/Xcomposite.h | 71 | ||||
-rwxr-xr-x | nx-X11/lib/Xcomposite/autogen.sh | 3 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/configure.ac | 102 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/xcomposite.pc.in | 10 | ||||
-rw-r--r-- | nx-X11/lib/Xcomposite/xcompositeint.h | 66 |
15 files changed, 789 insertions, 0 deletions
diff --git a/nx-X11/lib/Xcomposite/.cvsignore b/nx-X11/lib/Xcomposite/.cvsignore new file mode 100644 index 000000000..d3b5c438e --- /dev/null +++ b/nx-X11/lib/Xcomposite/.cvsignore @@ -0,0 +1,24 @@ +.deps +.libs +Makefile +Makefile.in +Xcomposite.lo +aclocal.m4 +autom4te.cache +config.guess +config.h +config.h.in +config.log +config.status +config.sub +configure +depcomp +install-sh +libXcomposite.la +libtool +ltmain.sh +missing +mkinstalldirs +stamp-h1 +xcomposite.pc + diff --git a/nx-X11/lib/Xcomposite/AUTHORS b/nx-X11/lib/Xcomposite/AUTHORS new file mode 100644 index 000000000..8e18f9b42 --- /dev/null +++ b/nx-X11/lib/Xcomposite/AUTHORS @@ -0,0 +1 @@ +Keith Packard, HP diff --git a/nx-X11/lib/Xcomposite/COPYING b/nx-X11/lib/Xcomposite/COPYING new file mode 100644 index 000000000..e85d981e7 --- /dev/null +++ b/nx-X11/lib/Xcomposite/COPYING @@ -0,0 +1,22 @@ +$Id: COPYING,v 1.1 2004/07/31 05:50:39 anholt Exp $ + +Copyright © 2001,2003 Keith Packard + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Keith Packard not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Keith Packard makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL KEITH PACKARD 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. + diff --git a/nx-X11/lib/Xcomposite/ChangeLog b/nx-X11/lib/Xcomposite/ChangeLog new file mode 100644 index 000000000..f70ce6605 --- /dev/null +++ b/nx-X11/lib/Xcomposite/ChangeLog @@ -0,0 +1,19 @@ +2004-07-08 Keith Packard <keithp@keithp.com> + + * Makefile.am: + * Xcomposite.c: (XCompositeVersion), (XCompositeNameWindowPixmap): + * Xcomposite.h: + * configure.ac: + Add library API for Composite 0.2 changes + Add XCompositeVersion to get the run-time library version number + Fix package version number in configure.ac and Xcomposite.h + +2004-02-03 Jim Gettys <jg@handhelds.org> + + * AUTHORS: Add authors to AUTHORS file + +2004-01-15 Daniel Stone <daniel@fooishbar.org> + * Tag release 1.0 for first freedesktop.org clientside lib release. + +2004-01-15 Harold L Hunt II <huntharo@msu.edu> + * Makefile.am: Pass -no-undefined to libtool via LDFLAGS. diff --git a/nx-X11/lib/Xcomposite/INSTALL b/nx-X11/lib/Xcomposite/INSTALL new file mode 100644 index 000000000..25a014e2e --- /dev/null +++ b/nx-X11/lib/Xcomposite/INSTALL @@ -0,0 +1,8 @@ +Xcomposite is built with the traditional configure script: + + $ ./configure --prefix=/usr/X11R6 + +This should generate valid Makefiles, then: + + $ make + $ make install diff --git a/nx-X11/lib/Xcomposite/Imakefile b/nx-X11/lib/Xcomposite/Imakefile new file mode 100644 index 000000000..053df3d70 --- /dev/null +++ b/nx-X11/lib/Xcomposite/Imakefile @@ -0,0 +1,68 @@ +XCOMM $XdotOrg: xc/lib/Xcomposite/Imakefile,v 1.1 2004/07/31 05:50:39 anholt Exp $ + +#ifndef NormalLibXcomposite +#define NormalLibXcomposite YES +SOXCOMPOSITEREV=1.0.0 +#endif + +#ifndef SharedLibXcomposite +#define SharedLibXcomposite YES +#endif + +#define DoNormalLib NormalLibXcomposite +#define DoSharedLib SharedLibXcomposite +#define DoDebugLib DebugLibXcomposite +#define DoProfileLib ProfileLibXcomposite + +#define LibName Xcomposite +#define SoRev SOXCOMPOSITEREV +#define IncSubdir X11 +#define IncSubSubdir extensions + +#include <Threads.tmpl> + +#ifdef SharedXcompositeReqs +REQUIREDLIBS = SharedXcompositeReqs +#endif + +XCOMPOSITE_VERSION=1.0.0 + +X_LIBS=-L$(SHLIBDIR) $(XONLYLIB) +X_CFLAGS=-I$(INCROOT) $(THREADS_DEFINES) +XCOMPOSITE_LIBS = $(XFIXESLIB) $(XDAMAGELIB) +XCOMPOSITE_CFLAGS = + +RPATH_CFLAG = HardCodeLibdirFlag + +SRCS = Xcomposite.c + +OBJS = Xcomposite.o + +HEADERS = Xcomposite.h + +SUBSTVARS=prefix="$(PROJECTROOT)" \ + exec_prefix="$(BINDIR)" \ + libdir="$(USRLIBDIR)" \ + hardcode_libdir_flag_spec="$(RPATH_CFLAG)" \ + includedir="$(INCROOT)" \ + X_LIBS="$(X_LIBS)" \ + X_CFLAGS="$(X_CFLAGS)" \ + XCOMPOSITE_LIBS="$(XCOMPOSITE_LIBS)" \ + XCOMPOSITE_CFLAGS="$(XCOMPOSITE_CFLAGS)" \ + VERSION="$(XCOMPOSITE_VERSION)" + +#include <Library.tmpl> + +DependTarget() + +all:: xcomposite.pc + +xcomposite.pc: xcomposite.pc.in + RemoveFile($@) + sh ../Xcursor/config-subst $(SUBSTVARS) < xcomposite.pc.in > $@ + +InstallNonExecFile(xcomposite.pc,$(USRLIBDIR)/pkgconfig) + +clean:: + RemoveFile(xcomposite.pc) + diff --git a/nx-X11/lib/Xcomposite/Makefile.am b/nx-X11/lib/Xcomposite/Makefile.am new file mode 100644 index 000000000..da962e802 --- /dev/null +++ b/nx-X11/lib/Xcomposite/Makefile.am @@ -0,0 +1,52 @@ +# +# $Id: Makefile.am,v 1.1 2004/07/31 05:50:39 anholt Exp $ +# +# Copyright © 2003 Keith Packard, Noah Levitt +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of Keith Packard not be used in +# advertising or publicity pertaining to distribution of the software without +# specific, written prior permission. Keith Packard makes no +# representations about the suitability of this software for any purpose. It +# is provided "as is" without express or implied warranty. +# +# KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +# EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +# CONSEQUENTIAL COMPOSITES OR ANY COMPOSITES 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. + +AM_CFLAGS = $(XCOMPOSITE_CFLAGS) $(X_CFLAGS) + +lib_LTLIBRARIES = libXcomposite.la + +libXcomposite_la_SOURCES = \ + xcompositeint.h \ + Xcomposite.c + +libXcomposite_la_LIBADD = $(XCOMPOSITE_LIBS) $(X_LIBS) + +# +# Library version info. Check the libtool docs for +# instructions on when and how to change this value +# +# bump when the ABI changes +XCOMPOSITE_CURRENT=2 +# bump for non-ABI changes, reset to zero when CURRENT changes +XCOMPOSITE_REVISION=0 +# bump when the ABI changes in backward-compatible fashion +XCOMPOSITE_AGE=1 +libXcomposite_la_LDFLAGS = -version-info ${XCOMPOSITE_CURRENT}:${XCOMPOSITE_REVISION}:${XCOMPOSITE_AGE} -no-undefined + +libXcompositeincludedir = $(includedir)/X11/extensions +libXcompositeinclude_HEADERS = Xcomposite.h + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = xcomposite.pc + +EXTRA_DIST = xcomposite.pc.in autogen.sh diff --git a/nx-X11/lib/Xcomposite/NEWS b/nx-X11/lib/Xcomposite/NEWS new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/nx-X11/lib/Xcomposite/NEWS diff --git a/nx-X11/lib/Xcomposite/README b/nx-X11/lib/Xcomposite/README new file mode 100644 index 000000000..9968c6bdf --- /dev/null +++ b/nx-X11/lib/Xcomposite/README @@ -0,0 +1,10 @@ + RandR + X RandR Extension + Version 1.0 + 2002-10-4 + +This package contains header files and documentation for the X RandR +extension. Library and server implementations are separate. + +Keith Packard +keithp@keithp.com diff --git a/nx-X11/lib/Xcomposite/Xcomposite.c b/nx-X11/lib/Xcomposite/Xcomposite.c new file mode 100644 index 000000000..cd10f8ed6 --- /dev/null +++ b/nx-X11/lib/Xcomposite/Xcomposite.c @@ -0,0 +1,333 @@ +/* + * $Id: Xcomposite.c,v 1.2 2005/07/03 07:00:56 daniels Exp $ + * + * Copyright © 2003 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD 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 "xcompositeint.h" + +XCompositeExtInfo XCompositeExtensionInfo; + +const char XCompositeExtensionName[] = COMPOSITE_NAME; + +/* + * XCompositeExtRemoveDisplay - remove the indicated display from the + * extension object. (Replaces XextRemoveDisplay.) + */ +static int +XCompositeExtRemoveDisplay (XCompositeExtInfo *extinfo, Display *dpy) +{ + XCompositeExtDisplayInfo *info, *prev; + + /* + * locate this display and its back link so that it can be removed + */ + _XLockMutex(_Xglobal_lock); + prev = NULL; + for (info = extinfo->head; info; info = info->next) { + if (info->display == dpy) break; + prev = info; + } + if (!info) { + _XUnlockMutex(_Xglobal_lock); + return 0; /* hmm, actually an error */ + } + + /* + * remove the display from the list; handles going to zero + */ + if (prev) + prev->next = info->next; + else + extinfo->head = info->next; + + extinfo->ndisplays--; + if (info == extinfo->cur) extinfo->cur = NULL; /* flush cache */ + _XUnlockMutex(_Xglobal_lock); + + Xfree ((char *) info); + return 1; +} + +static int +XCompositeCloseDisplay (Display *dpy, XExtCodes *codes) +{ + return XCompositeExtRemoveDisplay (&XCompositeExtensionInfo, dpy); +} + +/* + * XCompositeExtAddDisplay - add a display to this extension. (Replaces + * XextAddDisplay) + */ +static XCompositeExtDisplayInfo * +XCompositeExtAddDisplay (XCompositeExtInfo *extinfo, + Display *dpy, + const char *ext_name) +{ + XCompositeExtDisplayInfo *info; + int ev; + + info = (XCompositeExtDisplayInfo *) Xmalloc (sizeof (XCompositeExtDisplayInfo)); + if (!info) return NULL; + info->display = dpy; + + info->codes = XInitExtension (dpy, ext_name); + + /* + * if the server has the extension, then we can initialize the + * appropriate function vectors + */ + if (info->codes) { + xCompositeQueryVersionReply rep; + xCompositeQueryVersionReq *req; + XESetCloseDisplay (dpy, info->codes->extension, + XCompositeCloseDisplay); + /* + * Get the version info + */ + LockDisplay (dpy); + GetReq (CompositeQueryVersion, req); + req->reqType = info->codes->major_opcode; + req->compositeReqType = X_CompositeQueryVersion; + req->majorVersion = COMPOSITE_MAJOR; + req->minorVersion = COMPOSITE_MINOR; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) + { + UnlockDisplay (dpy); + SyncHandle (); + return 0; + } + info->major_version = rep.majorVersion; + info->minor_version = rep.minorVersion; + UnlockDisplay (dpy); + } else { + /* The server doesn't have this extension. + * Use a private Xlib-internal extension to hang the close_display + * hook on so that the "cache" (extinfo->cur) is properly cleaned. + * (XBUG 7955) + */ + XExtCodes *codes = XAddExtension(dpy); + if (!codes) { + XFree(info); + return NULL; + } + XESetCloseDisplay (dpy, codes->extension, XCompositeCloseDisplay); + } + + /* + * now, chain it onto the list + */ + _XLockMutex(_Xglobal_lock); + info->next = extinfo->head; + extinfo->head = info; + extinfo->cur = info; + extinfo->ndisplays++; + _XUnlockMutex(_Xglobal_lock); + return info; +} + +/* + * XCompositeExtFindDisplay - look for a display in this extension; keeps a + * cache of the most-recently used for efficiency. (Replaces + * XextFindDisplay.) + */ +static XCompositeExtDisplayInfo * +XCompositeExtFindDisplay (XCompositeExtInfo *extinfo, + Display *dpy) +{ + XCompositeExtDisplayInfo *info; + + /* + * see if this was the most recently accessed display + */ + if ((info = extinfo->cur) && info->display == dpy) + return info; + + /* + * look for display in list + */ + _XLockMutex(_Xglobal_lock); + for (info = extinfo->head; info; info = info->next) { + if (info->display == dpy) { + extinfo->cur = info; /* cache most recently used */ + _XUnlockMutex(_Xglobal_lock); + return info; + } + } + _XUnlockMutex(_Xglobal_lock); + + return NULL; +} + +XCompositeExtDisplayInfo * +XCompositeFindDisplay (Display *dpy) +{ + XCompositeExtDisplayInfo *info; + + info = XCompositeExtFindDisplay (&XCompositeExtensionInfo, dpy); + if (!info) + info = XCompositeExtAddDisplay (&XCompositeExtensionInfo, dpy, + XCompositeExtensionName); + return info; +} + + +Bool +XCompositeQueryExtension (Display *dpy, int *event_basep, int *error_basep) +{ + XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); + + if (XCompositeHasExtension(info)) + { + *event_basep = info->codes->first_event; + *error_basep = info->codes->first_error; + return True; + } + else + return False; +} + +Status +XCompositeQueryVersion (Display *dpy, + int *major_versionp, + int *minor_versionp) +{ + XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); + + XCompositeCheckExtension (dpy, info, 0); + *major_versionp = info->major_version; + *minor_versionp = info->minor_version; + UnlockDisplay (dpy); + SyncHandle (); + return 1; +} + +int +XCompositeVersion (void) +{ + return XCOMPOSITE_VERSION; +} + +void +XCompositeRedirectWindow (Display *dpy, Window window, int update) +{ + XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); + xCompositeRedirectWindowReq *req; + + XCompositeSimpleCheckExtension (dpy, info); + LockDisplay (dpy); + GetReq (CompositeRedirectWindow, req); + req->reqType = info->codes->major_opcode; + req->compositeReqType = X_CompositeRedirectWindow; + req->window = window; + req->update = update; + UnlockDisplay (dpy); + SyncHandle (); +} + +void +XCompositeRedirectSubwindows (Display *dpy, Window window, int update) +{ + XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); + xCompositeRedirectSubwindowsReq *req; + + XCompositeSimpleCheckExtension (dpy, info); + LockDisplay (dpy); + GetReq (CompositeRedirectSubwindows, req); + req->reqType = info->codes->major_opcode; + req->compositeReqType = X_CompositeRedirectSubwindows; + req->window = window; + req->update = update; + UnlockDisplay (dpy); + SyncHandle (); +} + +void +XCompositeUnredirectWindow (Display *dpy, Window window, int update) +{ + XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); + xCompositeUnredirectWindowReq *req; + + XCompositeSimpleCheckExtension (dpy, info); + LockDisplay (dpy); + GetReq (CompositeUnredirectWindow, req); + req->reqType = info->codes->major_opcode; + req->compositeReqType = X_CompositeUnredirectWindow; + req->window = window; + req->update = update; + UnlockDisplay (dpy); + SyncHandle (); +} + +void +XCompositeUnredirectSubwindows (Display *dpy, Window window, int update) +{ + XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); + xCompositeUnredirectSubwindowsReq *req; + + XCompositeSimpleCheckExtension (dpy, info); + LockDisplay (dpy); + GetReq (CompositeUnredirectSubwindows, req); + req->reqType = info->codes->major_opcode; + req->compositeReqType = X_CompositeUnredirectSubwindows; + req->window = window; + req->update = update; + UnlockDisplay (dpy); + SyncHandle (); +} + +XserverRegion +XCompositeCreateRegionFromBorderClip (Display *dpy, Window window) +{ + XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); + xCompositeCreateRegionFromBorderClipReq *req; + XserverRegion region; + + XCompositeCheckExtension (dpy, info, 0); + LockDisplay (dpy); + GetReq (CompositeCreateRegionFromBorderClip, req); + req->reqType = info->codes->major_opcode; + req->compositeReqType = X_CompositeCreateRegionFromBorderClip; + req->window = window; + region = req->region = XAllocID (dpy); + UnlockDisplay (dpy); + SyncHandle (); + return region; +} + +Pixmap +XCompositeNameWindowPixmap (Display *dpy, Window window) +{ + XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); + xCompositeNameWindowPixmapReq *req; + Pixmap pixmap; + + XCompositeCheckExtension (dpy, info, 0); + LockDisplay (dpy); + GetReq (CompositeNameWindowPixmap, req); + req->reqType = info->codes->major_opcode; + req->compositeReqType = X_CompositeNameWindowPixmap; + req->window = window; + pixmap = req->pixmap = XAllocID (dpy); + UnlockDisplay (dpy); + SyncHandle (); + return pixmap; +} diff --git a/nx-X11/lib/Xcomposite/Xcomposite.h b/nx-X11/lib/Xcomposite/Xcomposite.h new file mode 100644 index 000000000..3604141bb --- /dev/null +++ b/nx-X11/lib/Xcomposite/Xcomposite.h @@ -0,0 +1,71 @@ +/* + * $Id: Xcomposite.h,v 1.5 2005/11/09 21:31:19 kem Exp $ + * + * Copyright © 2003 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD 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 _XCOMPOSITE_H_ +#define _XCOMPOSITE_H_ + +#include <X11/extensions/composite.h> +#include <X11/extensions/Xfixes.h> +#include <X11/Xfuncproto.h> + +/* + * This revision number also appears in configure.ac, they have + * to be manually synchronized + */ +#define XCOMPOSITE_MAJOR COMPOSITE_MAJOR +#define XCOMPOSITE_MINOR COMPOSITE_MINOR +#define XCOMPOSITE_REVISION 2 +#define XCOMPOSITE_VERSION ((XCOMPOSITE_MAJOR * 10000) + (XCOMPOSITE_MINOR * 100) + (XCOMPOSITE_REVISION)) + +_XFUNCPROTOBEGIN + +Bool XCompositeQueryExtension (Display *dpy, int *event_basep, int *error_basep); + +Status XCompositeQueryVersion (Display *dpy, + int *major_versionp, + int *minor_versionp); + +int XCompositeVersion (void); + +void +XCompositeRedirectWindow (Display *dpy, Window window, int update); + +void +XCompositeRedirectSubwindows (Display *dpy, Window window, int update); + +void +XCompositeUnredirectWindow (Display *dpy, Window window, int update); + +void +XCompositeUnredirectSubwindows (Display *dpy, Window window, int update); + +XserverRegion +XCompositeCreateRegionFromBorderClip (Display *dpy, Window window); + +Pixmap +XCompositeNameWindowPixmap (Display *dpy, Window window); + +_XFUNCPROTOEND + +#endif /* _XCOMPOSITE_H_ */ diff --git a/nx-X11/lib/Xcomposite/autogen.sh b/nx-X11/lib/Xcomposite/autogen.sh new file mode 100755 index 000000000..b1376df5a --- /dev/null +++ b/nx-X11/lib/Xcomposite/autogen.sh @@ -0,0 +1,3 @@ +#! /bin/sh +autoreconf -v --install || exit 1 +./configure --enable-maintainer-mode "$@" diff --git a/nx-X11/lib/Xcomposite/configure.ac b/nx-X11/lib/Xcomposite/configure.ac new file mode 100644 index 000000000..8e8848194 --- /dev/null +++ b/nx-X11/lib/Xcomposite/configure.ac @@ -0,0 +1,102 @@ +dnl +dnl $Id: configure.ac,v 1.1 2004/07/31 05:50:39 anholt Exp $ +dnl +dnl Copyright © 2003 Keith Packard, Noah Levitt +dnl +dnl Permission to use, copy, modify, distribute, and sell this software and its +dnl documentation for any purpose is hereby granted without fee, provided that +dnl the above copyright notice appear in all copies and that both that +dnl copyright notice and this permission notice appear in supporting +dnl documentation, and that the name of Keith Packard not be used in +dnl advertising or publicity pertaining to distribution of the software without +dnl specific, written prior permission. Keith Packard makes no +dnl representations about the suitability of this software for any purpose. It +dnl is provided "as is" without express or implied warranty. +dnl +dnl KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +dnl EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +dnl PERFORMANCE OF THIS SOFTWARE. +dnl +dnl Process this file with autoconf to create configure. + +AC_PREREQ([2.57]) + +dnl +dnl Version should match the current XComposite version. XCompositeQueryVersion +dnl returns the version from xcompositewire.h, NOT the version we set here. But we +dnl try to keep these the same. Note that the library has an extra +dnl digit in the version number to track changes which don't affect the +dnl protocol, so Xcomposite version l.n.m corresponds to protocol version l.n +dnl that 'revision' number appears in Xcomposite.h and has to be manually +dnl synchronized. +dnl +AC_INIT(libXcomposite, 0.2.0, [keithp@keithp.com], libXcomposite) +AM_INIT_AUTOMAKE([dist-bzip2]) +AM_MAINTAINER_MODE + +AM_CONFIG_HEADER(config.h) +AC_CONFIG_AUX_DIR(.) + +# Check for progs +AC_PROG_CC +AC_PROG_LIBTOOL + +# Check for X +PKG_CHECK_MODULES(X, x11, + [x_found_with_pkgconfig=yes], + [x_found_with_pkgconfig=no]) +AC_SUBST(X_CFLAGS) +AC_SUBST(X_LIBS) + +if test "$x_found_with_pkgconfig" = "no" +then + AC_PATH_XTRA + X_LIBS="$X_LIBS -lX11" + + if test "x$no_x" = "xyes" + then + AC_MSG_ERROR([X is required, but it was either disabled or not found.]) + fi + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $X_CFLAGS" + LIBS="$LIBS $X_LIBS" + + AC_MSG_CHECKING([for XTHREADS in Xlib]) + AC_RUN_IFELSE( + [AC_LANG_PROGRAM([[#include <X11/Xlib.h>]], + [[return XInitThreads() == 0 ? 0 : 1;]])], + [xthreads=no], + [xthreads=yes], + [xthreads=yes]) + + AC_MSG_RESULT($xthreads) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + if test "x$xthreads" = "xyes" + then + X_CFLAGS="$X_CFLAGS -DXTHREADS" + fi +fi + +# Check compositeext configuration, strip extra digits from package version to +# find the required protocol version + +if test "$VERSION" = "" ; then + VERSION=$PACKAGE_VERSION; +fi +COMPOSITEEXT_VERSION=[`echo $VERSION | sed 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`] +PKG_CHECK_MODULES(XCOMPOSITE, [compositeext >= $COMPOSITEEXT_VERSION] xfixes) +AC_SUBST(XCOMPOSITE_CFLAGS) +AC_SUBST(XCOMPOSITE_LIBS) + +AC_OUTPUT([Makefile + xcomposite.pc]) + diff --git a/nx-X11/lib/Xcomposite/xcomposite.pc.in b/nx-X11/lib/Xcomposite/xcomposite.pc.in new file mode 100644 index 000000000..770adf515 --- /dev/null +++ b/nx-X11/lib/Xcomposite/xcomposite.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: Xcomposite +Description: X Composite Library +Version: @VERSION@ +Cflags: -I${includedir} @XCOMPOSITE_CFLAGS@ @X_CFLAGS@ +Libs: -L${libdir} -lXcomposite @XCOMPOSITE_LIBS@ @X_LIBS@ diff --git a/nx-X11/lib/Xcomposite/xcompositeint.h b/nx-X11/lib/Xcomposite/xcompositeint.h new file mode 100644 index 000000000..af5f57500 --- /dev/null +++ b/nx-X11/lib/Xcomposite/xcompositeint.h @@ -0,0 +1,66 @@ +/* + * $Id: xcompositeint.h,v 1.3 2005/07/12 03:10:35 keithp Exp $ + * + * Copyright © 2003 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD 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 _XDAMAGEINT_H_ +#define _XDAMAGEINT_H_ + +#define NEED_EVENTS +#define NEED_REPLIES +#include <stdio.h> +#include <X11/Xlib.h> +#include <X11/Xlibint.h> +#include <X11/Xutil.h> +#include <X11/extensions/compositeproto.h> +#include <X11/extensions/Xcomposite.h> + +typedef struct _XCompositeExtDisplayInfo { + struct _XCompositeExtDisplayInfo *next; /* keep a linked list */ + Display *display; /* which display this is */ + XExtCodes *codes; /* the extension protocol codes */ + int major_version; /* -1 means we don't know */ + int minor_version; /* -1 means we don't know */ +} XCompositeExtDisplayInfo; + +/* replaces XExtensionInfo */ +typedef struct _XCompositeExtInfo { + XCompositeExtDisplayInfo *head; /* start of the list */ + XCompositeExtDisplayInfo *cur; /* most recently used */ + int ndisplays; /* number of displays */ +} XCompositeExtInfo; + +extern XCompositeExtInfo XCompositeExtensionInfo; +extern const char XCompositeExtensionName[]; + +XCompositeExtDisplayInfo * +XCompositeFindDisplay (Display *dpy); + +#define XCompositeHasExtension(i) ((i) && ((i)->codes)) + +#define XCompositeCheckExtension(dpy,i,val) \ + if (!XCompositeHasExtension(i)) { return val; } + +#define XCompositeSimpleCheckExtension(dpy,i) \ + if (!XCompositeHasExtension(i)) { return; } + +#endif /* _XDAMAGEINT_H_ */ |