diff options
Diffstat (limited to 'nx-X11/lib/Xdamage')
-rw-r--r-- | nx-X11/lib/Xdamage/.cvsignore | 24 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/AUTHORS | 2 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/COPYING | 22 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/ChangeLog | 13 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/INSTALL | 8 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/Imakefile | 68 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/Makefile.am | 52 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/NEWS | 0 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/README | 10 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/Xdamage.c | 365 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/Xdamage.h | 68 | ||||
-rwxr-xr-x | nx-X11/lib/Xdamage/autogen.sh | 3 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/configure.ac | 93 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/xdamage.pc.in | 10 | ||||
-rw-r--r-- | nx-X11/lib/Xdamage/xdamageint.h | 66 |
15 files changed, 804 insertions, 0 deletions
diff --git a/nx-X11/lib/Xdamage/.cvsignore b/nx-X11/lib/Xdamage/.cvsignore new file mode 100644 index 000000000..b44ca97f0 --- /dev/null +++ b/nx-X11/lib/Xdamage/.cvsignore @@ -0,0 +1,24 @@ +.deps +.libs +Makefile +Makefile.in +aclocal.m4 +autom4te.cache +config.guess +config.h +config.h.in +config.log +config.status +config.sub +configure +depcomp +install-sh +libtool +ltmain.sh +missing +mkinstalldirs +stamp-h1 +xdamage.pc +*.lo +*.la +confdefs.h diff --git a/nx-X11/lib/Xdamage/AUTHORS b/nx-X11/lib/Xdamage/AUTHORS new file mode 100644 index 000000000..57c4efd4e --- /dev/null +++ b/nx-X11/lib/Xdamage/AUTHORS @@ -0,0 +1,2 @@ +Keith Packard, HP + diff --git a/nx-X11/lib/Xdamage/COPYING b/nx-X11/lib/Xdamage/COPYING new file mode 100644 index 000000000..e85d981e7 --- /dev/null +++ b/nx-X11/lib/Xdamage/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/Xdamage/ChangeLog b/nx-X11/lib/Xdamage/ChangeLog new file mode 100644 index 000000000..427091447 --- /dev/null +++ b/nx-X11/lib/Xdamage/ChangeLog @@ -0,0 +1,13 @@ +Tue May 17 12:59:47 2005 Søren Sandmann <sandmann@redhat.com> + + * Xdamage.c: Conditionally include config.h + +2004-02-03 Jim Gettys <jg@freedesktop.org> + + * AUTHORS: Add authors. + +2004-01-15 Daniel Stone <daniel@fooishbar.org> + * Tag release 1.0.1 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/Xdamage/INSTALL b/nx-X11/lib/Xdamage/INSTALL new file mode 100644 index 000000000..b94098a95 --- /dev/null +++ b/nx-X11/lib/Xdamage/INSTALL @@ -0,0 +1,8 @@ +Render 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/Xdamage/Imakefile b/nx-X11/lib/Xdamage/Imakefile new file mode 100644 index 000000000..260dfeb56 --- /dev/null +++ b/nx-X11/lib/Xdamage/Imakefile @@ -0,0 +1,68 @@ +XCOMM $XdotOrg: xc/lib/Xdamage/Imakefile,v 1.1 2004/07/31 05:50:39 anholt Exp $ + +#ifndef NormalLibXdamage +#define NormalLibXdamage YES +SOXDAMAGEREV=1.0.1 +#endif + +#ifndef SharedLibXdamage +#define SharedLibXdamage YES +#endif + +#define DoNormalLib NormalLibXdamage +#define DoSharedLib SharedLibXdamage +#define DoDebugLib DebugLibXdamage +#define DoProfileLib ProfileLibXdamage + +#define LibName Xdamage +#define SoRev SOXDAMAGEREV +#define IncSubdir X11 +#define IncSubSubdir extensions + +#include <Threads.tmpl> + +#ifdef SharedXdamageReqs +REQUIREDLIBS = SharedXdamageReqs +#endif + +XDAMAGE_VERSION=1.0.1 + +X_LIBS=-L$(SHLIBDIR) $(XONLYLIB) +X_CFLAGS=-I$(INCROOT) $(THREADS_DEFINES) +XDAMAGE_LIBS = $(XFIXESLIB) +XDAMAGE_CFLAGS = + +RPATH_CFLAG = HardCodeLibdirFlag + +SRCS = Xdamage.c + +OBJS = Xdamage.o + +HEADERS = Xdamage.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)" \ + XDAMAGE_LIBS="$(XDAMAGE_LIBS)" \ + XDAMAGE_CFLAGS="$(XDAMAGE_CFLAGS)" \ + VERSION="$(XDAMAGE_VERSION)" + +#include <Library.tmpl> + +DependTarget() + +all:: xdamage.pc + +xdamage.pc: xdamage.pc.in + RemoveFile($@) + sh ../Xcursor/config-subst $(SUBSTVARS) < xdamage.pc.in > $@ + +InstallNonExecFile(xdamage.pc,$(USRLIBDIR)/pkgconfig) + +clean:: + RemoveFile(xdamage.pc) + diff --git a/nx-X11/lib/Xdamage/Makefile.am b/nx-X11/lib/Xdamage/Makefile.am new file mode 100644 index 000000000..cdcd23b49 --- /dev/null +++ b/nx-X11/lib/Xdamage/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 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. + +AM_CFLAGS = $(XDAMAGE_CFLAGS) $(X_CFLAGS) + +lib_LTLIBRARIES = libXdamage.la + +libXdamage_la_SOURCES = \ + xdamageint.h \ + Xdamage.c + +libXdamage_la_LIBADD = $(XDAMAGE_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 +XDAMAGE_CURRENT=1 +# bump for non-ABI changes, reset to zero when CURRENT changes +XDAMAGE_REVISION=0 +# bump when the ABI changes in backward-compatible fashion +XDAMAGE_AGE=1 +libXdamage_la_LDFLAGS = -version-info ${XDAMAGE_CURRENT}:${XDAMAGE_REVISION}:${XDAMAGE_AGE} -no-undefined + +libXdamageincludedir = $(includedir)/X11/extensions +libXdamageinclude_HEADERS = Xdamage.h + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = xdamage.pc + +EXTRA_DIST = xdamage.pc.in autogen.sh diff --git a/nx-X11/lib/Xdamage/NEWS b/nx-X11/lib/Xdamage/NEWS new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/nx-X11/lib/Xdamage/NEWS diff --git a/nx-X11/lib/Xdamage/README b/nx-X11/lib/Xdamage/README new file mode 100644 index 000000000..9968c6bdf --- /dev/null +++ b/nx-X11/lib/Xdamage/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/Xdamage/Xdamage.c b/nx-X11/lib/Xdamage/Xdamage.c new file mode 100644 index 000000000..48ffa68a9 --- /dev/null +++ b/nx-X11/lib/Xdamage/Xdamage.c @@ -0,0 +1,365 @@ +/* + * $Id: Xdamage.c,v 1.3 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. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif +#include "xdamageint.h" + +XDamageExtInfo XDamageExtensionInfo; + +const char XDamageExtensionName[] = DAMAGE_NAME; + +static int +XDamageCloseDisplay (Display *dpy, XExtCodes *codes); + +static Bool +XDamageWireToEvent(Display *dpy, XEvent *event, xEvent *wire); + +static Status +XDamageEventToWire(Display *dpy, XEvent *event, xEvent *wire); + +/* + * XDamageExtAddDisplay - add a display to this extension. (Replaces + * XextAddDisplay) + */ +static XDamageExtDisplayInfo * +XDamageExtAddDisplay (XDamageExtInfo *extinfo, + Display *dpy, + const char *ext_name) +{ + XDamageExtDisplayInfo *info; + int ev; + + info = (XDamageExtDisplayInfo *) Xmalloc (sizeof (XDamageExtDisplayInfo)); + 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) { + xDamageQueryVersionReply rep; + xDamageQueryVersionReq *req; + XESetCloseDisplay (dpy, info->codes->extension, + XDamageCloseDisplay); + for (ev = info->codes->first_event; + ev < info->codes->first_event + XDamageNumberEvents; + ev++) + { + XESetWireToEvent (dpy, ev, XDamageWireToEvent); + XESetEventToWire (dpy, ev, XDamageEventToWire); + } + /* + * Get the version info + */ + LockDisplay (dpy); + GetReq (DamageQueryVersion, req); + req->reqType = info->codes->major_opcode; + req->damageReqType = X_DamageQueryVersion; + req->majorVersion = DAMAGE_MAJOR; + req->minorVersion = DAMAGE_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, XDamageCloseDisplay); + } + + /* + * 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; +} + + +/* + * XDamageExtRemoveDisplay - remove the indicated display from the + * extension object. (Replaces XextRemoveDisplay.) + */ +static int +XDamageExtRemoveDisplay (XDamageExtInfo *extinfo, Display *dpy) +{ + XDamageExtDisplayInfo *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; +} + +/* + * XDamageExtFindDisplay - look for a display in this extension; keeps a + * cache of the most-recently used for efficiency. (Replaces + * XextFindDisplay.) + */ +static XDamageExtDisplayInfo * +XDamageExtFindDisplay (XDamageExtInfo *extinfo, + Display *dpy) +{ + XDamageExtDisplayInfo *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; +} + +XDamageExtDisplayInfo * +XDamageFindDisplay (Display *dpy) +{ + XDamageExtDisplayInfo *info; + + info = XDamageExtFindDisplay (&XDamageExtensionInfo, dpy); + if (!info) + info = XDamageExtAddDisplay (&XDamageExtensionInfo, dpy, + XDamageExtensionName); + return info; +} + +static int +XDamageCloseDisplay (Display *dpy, XExtCodes *codes) +{ + return XDamageExtRemoveDisplay (&XDamageExtensionInfo, dpy); +} + +static Bool +XDamageWireToEvent(Display *dpy, XEvent *event, xEvent *wire) +{ + XDamageExtDisplayInfo *info = XDamageFindDisplay(dpy); + + XDamageCheckExtension(dpy, info, False); + + switch ((wire->u.u.type & 0x7F) - info->codes->first_event) + { + case XDamageNotify: { + XDamageNotifyEvent *aevent = (XDamageNotifyEvent *) event; + xDamageNotifyEvent *awire = (xDamageNotifyEvent *) wire; + + aevent->type = awire->type & 0x7F; + aevent->serial = _XSetLastRequestRead(dpy, + (xGenericReply *) wire); + aevent->send_event = (awire->type & 0x80) != 0; + aevent->display = dpy; + aevent->drawable = awire->drawable; + aevent->damage = awire->damage; + aevent->level = awire->level; + aevent->timestamp = awire->timestamp; + aevent->area.x = awire->area.x; + aevent->area.y = awire->area.y; + aevent->area.width = awire->area.width; + aevent->area.height = awire->area.height; + aevent->geometry.x = awire->geometry.x; + aevent->geometry.y = awire->geometry.y; + aevent->geometry.width = awire->geometry.width; + aevent->geometry.height = awire->geometry.height; + return True; + } + } + return False; +} + +static Status +XDamageEventToWire(Display *dpy, XEvent *event, xEvent *wire) +{ + XDamageExtDisplayInfo *info = XDamageFindDisplay(dpy); + + XDamageCheckExtension(dpy, info, False); + + switch ((event->type & 0x7F) - info->codes->first_event) + { + case XDamageNotify: { + XDamageNotifyEvent *aevent; + xDamageNotifyEvent *awire; + awire = (xDamageNotifyEvent *) wire; + aevent = (XDamageNotifyEvent *) event; + awire->type = aevent->type | (aevent->send_event ? 0x80 : 0); + awire->drawable = aevent->drawable; + awire->damage = aevent->damage; + awire->level = aevent->level; + awire->timestamp = aevent->timestamp; + awire->area.x = aevent->area.x; + awire->area.y = aevent->area.y; + awire->area.width = aevent->area.width; + awire->area.height = aevent->area.height; + awire->geometry.x = aevent->geometry.x; + awire->geometry.y = aevent->geometry.y; + awire->geometry.width = aevent->geometry.width; + awire->geometry.height = aevent->geometry.height; + return True; + } + } + return False; +} + +Bool +XDamageQueryExtension (Display *dpy, int *event_basep, int *error_basep) +{ + XDamageExtDisplayInfo *info = XDamageFindDisplay (dpy); + + if (XDamageHasExtension(info)) + { + *event_basep = info->codes->first_event; + *error_basep = info->codes->first_error; + return True; + } + else + return False; +} + +Status +XDamageQueryVersion (Display *dpy, + int *major_versionp, + int *minor_versionp) +{ + XDamageExtDisplayInfo *info = XDamageFindDisplay (dpy); + + XDamageCheckExtension (dpy, info, 0); + + *major_versionp = info->major_version; + *minor_versionp = info->minor_version; + UnlockDisplay (dpy); + SyncHandle (); + return 1; +} + +Damage +XDamageCreate (Display *dpy, Drawable drawable, int level) +{ + XDamageExtDisplayInfo *info = XDamageFindDisplay (dpy); + xDamageCreateReq *req; + Damage damage; + + XDamageCheckExtension (dpy, info, 0); + LockDisplay (dpy); + GetReq (DamageCreate, req); + req->reqType = info->codes->major_opcode; + req->damageReqType = X_DamageCreate; + req->damage = damage = XAllocID (dpy); + req->drawable = drawable; + req->level = level; + UnlockDisplay (dpy); + SyncHandle (); + return damage; +} + +void +XDamageDestroy (Display *dpy, Damage damage) +{ + XDamageExtDisplayInfo *info = XDamageFindDisplay (dpy); + xDamageDestroyReq *req; + + XDamageSimpleCheckExtension (dpy, info); + LockDisplay (dpy); + GetReq (DamageDestroy, req); + req->reqType = info->codes->major_opcode; + req->damageReqType = X_DamageDestroy; + req->damage = damage; + UnlockDisplay (dpy); + SyncHandle (); +} + +void +XDamageSubtract (Display *dpy, Damage damage, + XserverRegion repair, XserverRegion parts) +{ + XDamageExtDisplayInfo *info = XDamageFindDisplay (dpy); + xDamageSubtractReq *req; + + XDamageSimpleCheckExtension (dpy, info); + LockDisplay (dpy); + GetReq (DamageSubtract, req); + req->reqType = info->codes->major_opcode; + req->damageReqType = X_DamageSubtract; + req->damage = damage; + req->repair = repair; + req->parts = parts; + UnlockDisplay (dpy); + SyncHandle (); +} diff --git a/nx-X11/lib/Xdamage/Xdamage.h b/nx-X11/lib/Xdamage/Xdamage.h new file mode 100644 index 000000000..3da0606cb --- /dev/null +++ b/nx-X11/lib/Xdamage/Xdamage.h @@ -0,0 +1,68 @@ +/* + * $Id: Xdamage.h,v 1.3 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. + */ + +#ifndef _XDAMAGE_H_ +#define _XDAMAGE_H_ + +#include <X11/extensions/damagewire.h> +#include <X11/extensions/Xfixes.h> +#include <X11/Xfuncproto.h> + +typedef XID Damage; + +typedef struct { + int type; /* event base */ + unsigned long serial; + Bool send_event; + Display *display; + Drawable drawable; + Damage damage; + int level; + Bool more; /* more events will be delivered immediately */ + Time timestamp; + XRectangle area; + XRectangle geometry; +} XDamageNotifyEvent; + +_XFUNCPROTOBEGIN + +Bool XDamageQueryExtension (Display *dpy, int *event_basep, int *error_basep); + +Status XDamageQueryVersion (Display *dpy, + int *major_versionp, + int *minor_versionp); + +Damage +XDamageCreate (Display *dpy, Drawable drawable, int level); + +void +XDamageDestroy (Display *dpy, Damage damage); + +void +XDamageSubtract (Display *dpy, Damage damage, + XserverRegion repair, XserverRegion parts); + +_XFUNCPROTOEND + +#endif /* _XDAMAGE_H_ */ diff --git a/nx-X11/lib/Xdamage/autogen.sh b/nx-X11/lib/Xdamage/autogen.sh new file mode 100755 index 000000000..b1376df5a --- /dev/null +++ b/nx-X11/lib/Xdamage/autogen.sh @@ -0,0 +1,3 @@ +#! /bin/sh +autoreconf -v --install || exit 1 +./configure --enable-maintainer-mode "$@" diff --git a/nx-X11/lib/Xdamage/configure.ac b/nx-X11/lib/Xdamage/configure.ac new file mode 100644 index 000000000..c2ab2ce26 --- /dev/null +++ b/nx-X11/lib/Xdamage/configure.ac @@ -0,0 +1,93 @@ +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 XFixes version. XFixesQueryVersion +dnl returns the version from xfixeswire.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 Xfixes version l.n.m corresponds to protocol version l.n +dnl +AC_INIT(libXdamage, 1.0.1, [keithp@keithp.com], libXdamage) +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]) + +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 damageext configuration, strip extra digits from package version to +# find the required protocol version + +DAMAGEEXT_VERSION=[`echo $VERSION | sed 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`] +PKG_CHECK_MODULES(XDAMAGE, [damageext >= $DAMAGEEXT_VERSION] xfixes) + +AC_OUTPUT([Makefile + xdamage.pc]) + diff --git a/nx-X11/lib/Xdamage/xdamage.pc.in b/nx-X11/lib/Xdamage/xdamage.pc.in new file mode 100644 index 000000000..dbf77ac57 --- /dev/null +++ b/nx-X11/lib/Xdamage/xdamage.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: Xdamage +Description: X Damage Library +Version: @VERSION@ +Cflags: -I${includedir} @XDAMAGE_CFLAGS@ @X_CFLAGS@ +Libs: -L${libdir} -lXdamage @XDAMAGE_LIBS@ @X_LIBS@ diff --git a/nx-X11/lib/Xdamage/xdamageint.h b/nx-X11/lib/Xdamage/xdamageint.h new file mode 100644 index 000000000..145d6610f --- /dev/null +++ b/nx-X11/lib/Xdamage/xdamageint.h @@ -0,0 +1,66 @@ +/* + * $Id: xdamageint.h,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. + */ + +#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/damageproto.h> +#include "Xdamage.h" + +typedef struct _XDamageExtDisplayInfo { + struct _XDamageExtDisplayInfo *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 */ +} XDamageExtDisplayInfo; + +/* replaces XExtensionInfo */ +typedef struct _XDamageExtInfo { + XDamageExtDisplayInfo *head; /* start of the list */ + XDamageExtDisplayInfo *cur; /* most recently used */ + int ndisplays; /* number of displays */ +} XDamageExtInfo; + +extern XDamageExtInfo XDamageExtensionInfo; +extern const char XDamageExtensionName[]; + +XDamageExtDisplayInfo * +XDamageFindDisplay (Display *dpy); + +#define XDamageHasExtension(i) ((i) && ((i)->codes)) + +#define XDamageCheckExtension(dpy,i,val) \ + if (!XDamageHasExtension(i)) { return val; } + +#define XDamageSimpleCheckExtension(dpy,i) \ + if (!XDamageHasExtension(i)) { return; } + +#endif /* _XDAMAGEINT_H_ */ |