aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/Xdamage
diff options
context:
space:
mode:
authorReinhard Tartler <siretart@tauware.de>2011-10-10 17:43:39 +0200
committerReinhard Tartler <siretart@tauware.de>2011-10-10 17:43:39 +0200
commitf4092abdf94af6a99aff944d6264bc1284e8bdd4 (patch)
tree2ac1c9cc16ceb93edb2c4382c088dac5aeafdf0f /nx-X11/lib/Xdamage
parenta840692edc9c6d19cd7c057f68e39c7d95eb767d (diff)
downloadnx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.gz
nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.bz2
nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.zip
Imported nx-X11-3.1.0-1.tar.gznx-X11/3.1.0-1
Summary: Imported nx-X11-3.1.0-1.tar.gz Keywords: Imported nx-X11-3.1.0-1.tar.gz into Git repository
Diffstat (limited to 'nx-X11/lib/Xdamage')
-rw-r--r--nx-X11/lib/Xdamage/.cvsignore24
-rw-r--r--nx-X11/lib/Xdamage/AUTHORS2
-rw-r--r--nx-X11/lib/Xdamage/COPYING22
-rw-r--r--nx-X11/lib/Xdamage/ChangeLog13
-rw-r--r--nx-X11/lib/Xdamage/INSTALL8
-rw-r--r--nx-X11/lib/Xdamage/Imakefile68
-rw-r--r--nx-X11/lib/Xdamage/Makefile.am52
-rw-r--r--nx-X11/lib/Xdamage/NEWS0
-rw-r--r--nx-X11/lib/Xdamage/README10
-rw-r--r--nx-X11/lib/Xdamage/Xdamage.c365
-rw-r--r--nx-X11/lib/Xdamage/Xdamage.h68
-rwxr-xr-xnx-X11/lib/Xdamage/autogen.sh3
-rw-r--r--nx-X11/lib/Xdamage/configure.ac93
-rw-r--r--nx-X11/lib/Xdamage/xdamage.pc.in10
-rw-r--r--nx-X11/lib/Xdamage/xdamageint.h66
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_ */