Remove xcl and CVSROOT.
authorJosh Triplett <josh@freedesktop.org>
Sun, 19 Feb 2006 00:49:41 +0000 (16:49 -0800)
committerJosh Triplett <josh@josh-mobile.localdomain>
Sun, 19 Feb 2006 00:49:41 +0000 (16:49 -0800)
40 files changed:
.cvsignore [new file with mode: 0644]
COPYING [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
TODO [new file with mode: 0644]
autogen.sh [new file with mode: 0755]
configure.ac [new file with mode: 0644]
debian/.cvsignore [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright.debian [new file with mode: 0644]
debian/docs [new file with mode: 0644]
debian/rules [new file with mode: 0755]
doc/xml-xcb.txt [new file with mode: 0644]
src/.cvsignore [new file with mode: 0644]
src/Makefile.am [new file with mode: 0644]
src/extensions/bigreq.xml [new file with mode: 0644]
src/extensions/composite.xml [new file with mode: 0644]
src/extensions/damage.xml [new file with mode: 0644]
src/extensions/dpms.xml [new file with mode: 0644]
src/extensions/glx.xml [new file with mode: 0644]
src/extensions/randr.xml [new file with mode: 0644]
src/extensions/record.xml [new file with mode: 0644]
src/extensions/render.xml [new file with mode: 0644]
src/extensions/res.xml [new file with mode: 0644]
src/extensions/screensaver.xml [new file with mode: 0644]
src/extensions/shape.xml [new file with mode: 0644]
src/extensions/shm.xml [new file with mode: 0644]
src/extensions/sync.xml [new file with mode: 0644]
src/extensions/xc_misc.xml [new file with mode: 0644]
src/extensions/xevie.xml [new file with mode: 0644]
src/extensions/xf86dri.xml [new file with mode: 0644]
src/extensions/xfixes.xml [new file with mode: 0644]
src/extensions/xprint.xml [new file with mode: 0644]
src/extensions/xv.xml [new file with mode: 0644]
src/extensions/xvmc.xml [new file with mode: 0644]
src/xcb.xsd [new file with mode: 0644]
src/xcb_types.xml [new file with mode: 0644]
src/xproto.xml [new file with mode: 0644]
xcb-proto.pc.in [new file with mode: 0644]

diff --git a/.cvsignore b/.cvsignore
new file mode 100644 (file)
index 0000000..3d5e104
--- /dev/null
@@ -0,0 +1,17 @@
+Makefile
+Makefile.in
+aclocal.m4
+autom4te.cache
+compile
+config.guess
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
+mkinstalldirs
+*.pc
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..8c328d3
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,30 @@
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall
+be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+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 names of the authors
+or their institutions 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
+authors.
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..54caf7c
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,229 @@
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
+Foundation, Inc.
+
+   This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory.  After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..c7d872c
--- /dev/null
@@ -0,0 +1,6 @@
+SUBDIRS=src
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = xcb-proto.pc
+
+EXTRA_DIST=xcb-proto.pc.in
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..4527166
--- /dev/null
+++ b/TODO
@@ -0,0 +1,39 @@
+Last Updated: 01/15/06
+
+Extension Status:
+
+X - Present, tested, works.
+U - Present, untested.
+I - Incomplete.
+
+X BIG-REQESTS
+X COMPOSITE
+X DAMAGE
+  DOUBLE-BUFFER
+X DPMS
+X GLX
+  LBX
+X MIT-SCREEN-SAVER
+X MIT-SHM
+  MIT-SUNDRY-NONSTANDARD
+  Multi-Buffering
+X RANDR
+X RECORD
+X RENDER
+X SHAPE
+X SYNC
+X X-Resource
+  AC-APPGROUP
+X XC-MISC
+X XEVIE
+X XFIXES
+  XFree86-DGA
+U XFree86-DRI
+  XFree86-VidModeExtension
+  XINERAMA
+I XpExtension (XPRINT)
+  XTEST
+X XVideo
+U XVideo-MotionCompensation
+
+
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..d68a142
--- /dev/null
@@ -0,0 +1,3 @@
+#! /bin/sh
+autoreconf -v --install || exit 1
+./configure "$@"
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..2baaab4
--- /dev/null
@@ -0,0 +1,14 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ(2.57)
+AC_INIT([XCBProto],
+        0.9,
+        [xcb@lists.freedesktop.org])
+AC_CONFIG_SRCDIR([xcb-proto.pc.in])
+AM_INIT_AUTOMAKE([foreign dist-bzip2])
+
+xcbincludedir='${includedir}/X11/XCB'
+AC_SUBST(xcbincludedir)
+
+AC_OUTPUT([Makefile src/Makefile xcb-proto.pc])
diff --git a/debian/.cvsignore b/debian/.cvsignore
new file mode 100644 (file)
index 0000000..98316da
--- /dev/null
@@ -0,0 +1,5 @@
+compat
+fd.o-*
+stamp-*
+tmp
+files
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..2a816f5
--- /dev/null
@@ -0,0 +1,28 @@
+xcb-proto (0.9-1pre2v2) unstable; urgency=low
+
+  * Change Architecture from any to all; these protocol descriptions are
+    architecture-independent.
+  * Remove fd.o prefix from package name.
+  * Change Maintainer to xcb@lists.freedesktop.org, move myself to
+    Uploaders, and add Jamey Sharp to Uploaders.  Update copyright.debian
+    accordingly.
+  * Add Bugs field pointing to xcb@lists.freedesktop.org.
+  * Update homepage URL in description and copyright.debian to
+    http://xcb.freedesktop.org, and put it in a Homepage: field in the
+    description.
+
+ -- Josh Triplett <josh@freedesktop.org>  Wed, 23 Mar 2005 13:03:45 -0800
+
+fd.o-xcb-proto (0.9-1) unstable; urgency=low
+
+  * New version with XML protocol descriptions.
+  * Updated Debian packaging.
+
+ -- Josh Triplett <josh@freedesktop.org>  Fri, 29 Oct 2004 15:11:09 -0700
+
+fd.o-xcb-proto (0.8-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Jamey Sharp <sharpone@debian.org>  Thu, 18 Mar 2004 00:09:03 -0800
+
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..8cb1bec
--- /dev/null
@@ -0,0 +1,26 @@
+Source: xcb-proto
+Section: libdevel
+Priority: optional
+Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Uploaders: Jamey Sharp <sharpone@debian.org>, Josh Triplett <josh@freedesktop.org>
+Build-Depends: cdbs, debhelper (>= 4.0.0), autoconf, automake1.9 | automaken
+Build-Conflicts: automake1.4, automake1.5, automake1.6
+Standards-Version: 3.6.1
+Bugs: mailto:xcb@lists.freedesktop.org
+
+Package: xcb-proto
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: X C Binding - protocol descriptions
+ Xlib has been the standard C binding for the X Window System protocol
+ for many years now. It is an excellent piece of work, but there are
+ applications for which it is not ideal. XCB builds on nearly two
+ decades of experience with X specifically and software engineering in
+ general in an effort to replace the aging Xlib code base.
+ .
+ xcb-proto contains descriptions of the X core protocol and selected
+ extensions in an XML-based data format. XCB uses these descriptions to
+ generate much of its code. You only need this package if you want to compile
+ XCB or otherwise make use of these protocol descriptions.
+ .
+ Homepage: http://xcb.freedesktop.org
diff --git a/debian/copyright.debian b/debian/copyright.debian
new file mode 100644 (file)
index 0000000..7cd330a
--- /dev/null
@@ -0,0 +1,12 @@
+This package was debianized by Jamey Sharp <sharpone@debian.org> on
+Thu, 18 Mar 2004 00:48:42 -0800, and later updated by Josh Triplett
+<josh@freedesktop.org>.  The package is co-maintained by the XCB developers
+via the XCB mailing list <xcb@lists.freedesktop.org>.
+
+It was downloaded from http://xcb.freedesktop.org.
+
+Upstream Authors: Jamey Sharp <sharpone@debian.org>
+                  Josh Triplett <josh@freedesktop.org>
+
+Copyright:
+
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..b580384
--- /dev/null
@@ -0,0 +1 @@
+doc/xml-xcb.txt
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..e997421
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/class/autotools.mk
+
+DEB_CONFIGURE_INCLUDEDIR = "\$${prefix}/X11R6/include"
+
+debian/stamp-autotools-files:
+       autoreconf -v --install
+       touch debian/stamp-autotools-files
+
+debian/copyright: debian/copyright.debian COPYING
+       cat $+ > $@
+
+clean::
+       -rm -f debian/copyright
+
+common-install-prehook-arch common-install-prehook-indep:: debian/copyright
diff --git a/doc/xml-xcb.txt b/doc/xml-xcb.txt
new file mode 100644 (file)
index 0000000..fecee31
--- /dev/null
@@ -0,0 +1,275 @@
+                                   XML-XCB
+
+Description
+===========
+
+XML-XCB generates C bindings to the X Window System protocol based on XML
+descriptions of the protocol.  It is designed for use with XCB, the X C
+binding <http://xcb.freedesktop.org>.  XML-XCB consists of:
+
+xcb.xsd      An XML Schema defining the data format for describing the X
+             protocol.  Included in xcb-proto.
+
+c-client.xsl An XSLT code generator that transforms the protocol descriptions
+             into C bindings.  Included in xcb.
+
+*.xml        XML descriptions of the core X protocol and many extensions.
+             Included in xcb-proto.
+
+
+Dependencies
+============
+
+c-client.xsl requires an XSLT processor that supports XSLT 1.0
+<http://www.w3.org/TR/1999/REC-xslt-19991116> and the EXSLT node-set extension
+<http://www.exslt.org/exsl/functions/node-set/index.html>.  The XCB build
+system currently uses xsltproc.  You can get xsltproc through your
+distribution's packaging system, or from <http://xmlsoft.org/XSLT/>.
+
+
+Generating C bindings
+=====================
+
+The C bindings for the core protocol and all the currently supported
+extensions are built as part of the xcb build system.  However, for the
+purposes of creating and debugging new protocol descriptions, it can be useful
+to generate the bindings directly by invoking c-client.xsl to the XML protocol
+description.
+
+You must provide several parameters to c-client.xsl:
+
+mode: header or source; specifies which part of the C bindings to generate.
+base-path: path to the core X protocol descriptions.
+extension-path: path to the extension descriptions.
+
+For example, using xsltproc, you can generate the header for a protocol
+description "protocol.xml" with the command:
+
+xsltproc --stringparam base-path /path/to/xcb-proto/src \
+         --stringparam extension-path /path/to/xcb-proto/src/extensions \
+         --stringparam mode header /path/to/xcb/src/c-client.xsl protocol.xml
+
+
+Protocol Description Format
+===========================
+
+Root element
+------------
+
+<xcb header="string" extension-name="string" extension-xname="string">
+  top-level elements
+</xcb>
+
+  This is the root element of a protocol description.  The attributes are all
+  various forms of the extension name.  header is the basename of the XML
+  protocol description file, which will be used as the basename for generated
+  bindings as well.  extension-name is the name of the extension in InterCaps,
+  which will be used in the names of functions.  extension-xname is the name
+  of the extension as passed to QueryExtension.
+
+  As an example, the XML-XCB description for the GO-FASTER extension would use
+  the root element <xcb header="gofaster" extension-name="GoFaster"
+  extension-xname="GO-FASTER">; as a result, C bindings will be put in
+  gofaster.h and gofaster.c, extension functions will be named
+  XCBGoFasterFunctionName, and the extension initialization will call
+  QueryExtension with the name "GO-FASTER".
+
+  This element can contain any number of the elements listed in the section
+  "Top-Level Elements" below.
+
+
+Top-Level Elements
+------------------
+
+<import>header_name</import>
+
+  The import element allows the protocol description to reference types
+  declared in another extension.  The content is be the basename of the
+  extension XML file, which is also the header attribute of the extension's
+  root node.  Note that types from xcb_types and xproto are automatically
+  available, without explicitly importing them.
+
+<struct name="identifier">structure contents</struct>
+
+  This element represents a data structure.  The name attribute gives the name
+  of the structure.  The content represents the fields of the structure, and
+  consists of one or more of the field, pad, and list elements described in
+  the section "Structure Contents" below.
+
+<union name="identifier">structure contents</union>
+
+  This element represents a union of data types, which can hold one value of
+  any of those types.  The name attribute gives the name of the union.  The
+  content represents the fields of the union, and consists of one or more of
+  the field and pad elements described in the section "Structure Contents
+  below".
+
+<xidtype name="identifier" />
+
+  This element represents an identifier for a particular type of resource.
+  The name attribute gives the name of the new type.
+
+<enum name="identifier">
+  <item name="identifier">[optional expression]</item>
+  ...
+</enum>
+
+  The enum element represents an enumeration type, which can take on any of
+  the values given by the contained item elements.  The name attribute on the
+  enum gives the name of the enumerated type.
+
+  The item element represents one possible value of an enumerated type.  The
+  name attribute on the item gives the name of that value, and the optional
+  content is an expression giving the numeric value.  If the expression is
+  omitted, the value will be one more than that of the previous item, or 0 for
+  the first item.
+
+<typedef oldname="identifier" newname="identifier" />
+
+  The typedef element declares the type given by the newname attribute to be
+  an alias for the type given by the oldname attribute.
+
+<request name="identifier" opcode="integer" [combine-adjacent="true"]>
+  structure contents
+  [<reply>structure contents</reply>]
+</request>
+
+  The request element represents an X protocol request.  The name attribute
+  gives the name of the request, and the opcode attribute gives the numeric
+  request code.  The content of the request element represents the fields in
+  the request, and consists of one or more of any of the elements listed in
+  the "Structure Contents" section below.  Note that for requests in the core
+  protocol, the first field in the request goes into the one-byte gap between
+  the major opcode and the length; if the request does not have any data in
+  that gap, put a one byte pad as the first element.  Extension requests
+  always have this gap filled with the minor opcode.
+
+  The optional reply element is present if the request has a reply.  The
+  content of the reply element represents the fields in the reply, and
+  consists of zero or more of the field, pad, and list elements listed in the
+  "Structure Contents" section below.  Note that the first field in the reply
+  always goes into the one-byte gap between the response type and the sequence
+  number; if the reply does not have any data in that gap, put a one byte pad
+  as the first element.
+
+  If the optional combine-adjacent attribute is true, multiple adjacent
+  requests of the same type may be combined into a single request without
+  affecting the semantics of the requests.
+
+<event name="identifier" number="integer" [no-sequence-number="true"]>
+  structure contents
+</event>
+
+  This element represents an X protocol event.  The name attribute gives the
+  name of the event, and the number attribute gives the event number.  The
+  content of the event element represents the fields in the event, and
+  consists of zero or more of the field, pad, and list elements listed in the
+  "Structure Contents" section below.
+
+  If the optional no-sequence-number attribute is true, the event does not
+  include a sequence number.  This is a special-case for the KeymapNotify
+  event in the core protocol, and should not be used in any other event.
+
+<error name="identifier" number="integer">
+  structure contents
+</error>
+
+  This element represents an X protocol error.  The name attribute gives the
+  name of the error, and the number attribute gives the error number.  The
+  content of the error element represents the fields in the error, and
+  consists of zero or more of the field, pad, and list elements listed in the
+  "Structure Contents" section below.
+
+<eventcopy name="identifier" number="identifier" ref="identifier" />
+
+  This element creates an alias for the event named in the ref attribute, with
+  the new name given in the name attribute, and the new event number given in
+  the number attribute.
+
+<eventcopy name="identifier" number="identifier" ref="identifier" />
+
+  This element creates an alias for the error named in the ref attribute, with
+  the new name given in the name attribute, and the new error number given in
+  the number attribute.
+
+
+Structure Contents
+------------------
+
+Note: "type" attributes below refer to types defined by previous elements,
+either in the current extension, xproto, xcb_types, or one of the imported
+extensions.  The type name must refer to only one possible type; if more than
+one type matches, an error occurs.  To avoid this, the type may be explicitly
+prefixed with a namespace, which should be the value of the header attribute
+on the protocol description containing the desired type.  The namespace and
+type are separated by a single colon.  For example, to refer to the PIXMAP
+type defined in glx rather than the one defined in xcb_types, use
+type="glx:PIXMAP" rather than type="PIXMAP".
+
+<pad bytes="integer" />
+
+  This element declares some padding in a data structure.  The bytes
+  attribute declares the number of bytes of padding.
+
+<field type="identifier" name="identifier" />
+
+  This element represents a field in a data structure.  The type attribute
+  declares the data type of the field, and the name attribute gives the name
+  of the field.
+
+<list type="identifier" name="identifier">expression</list>
+
+  This element represents an array or list of fields in a data structure.  The
+  type attribute declares the data type of the field, and the name attribute
+  gives the name of the field.  The content is an expression giving the length
+  of the list in terms of other fields in the structure.  See the section
+  "Expressions" for details on the expression representation.
+
+<localfield type="identifier" name="identifier" />
+
+  This element represents a parameter in a request that is not sent over the
+  wire.  The field can be referenced in the length expressions of lists or in
+  an exprfield.  The type attribute declares the data type of the field, and
+  the name attribute gives the name of the field.
+
+<exprfield type="identifier" name="identifier">expression</exprfield>
+
+  This element represents a field in a request that is calculated rather than
+  supplied by the caller.  The type attribute declares the data type of the
+  field, and the name attribute gives the name of the field.  The content is
+  the expression giving the value of the field.  See the section "Expressions"
+  for details on the expression representation.
+
+<valueparam value-mask-type="identifier" value-mask-name="identifier"
+            value-list-name="identifier" />
+
+  This element represents a BITMASK/LISTofVALUE parameter pair: a bitmask
+  defining the set of values included, and a list containing these values.
+  value-mask-type gives the type of the bitmask; this must be CARD16 or
+  CARD32.  value-mask-name gives the field name of the bitmask, and
+  value-list-name gives the field name of the list of values.
+
+
+Expressions
+-----------
+
+  Expressions consist of a tree of <op> elements with leaves consisting of
+  <fieldref> or <value> elements.
+
+<op op="operator">expression expression</op>
+
+  The op element represents an operator, with the op attribute specifying
+  which operator.  The supported operations are *, /, &amp;, and &lt;&lt;, and
+  their semantics are identical to the corresponding operators in C.  The two
+  operand expressions may be fieldref, value, or op elements.
+
+<fieldref>identifier</fieldref>
+
+  The fieldref element represents a reference to the value of another field in
+  the structure containing this expression.  The identifier is the value of
+  the "name" attribute on the referenced field.
+
+<value>integer</value>
+
+  The value element represents a literal integer value in an expression.  The
+  integer may be expressed in decimal or hexadecimal.
diff --git a/src/.cvsignore b/src/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644 (file)
index 0000000..e2d519e
--- /dev/null
@@ -0,0 +1,22 @@
+nobase_xcbinclude_HEADERS = xcb.xsd                  \
+                            xcb_types.xml            \
+                            xproto.xml               \
+                            extensions/bigreq.xml    \
+                            extensions/composite.xml \
+                            extensions/damage.xml    \
+                            extensions/dpms.xml      \
+                            extensions/glx.xml       \
+                            extensions/randr.xml     \
+                            extensions/record.xml    \
+                            extensions/render.xml    \
+                           extensions/res.xml       \
+                            extensions/shape.xml     \
+                            extensions/shm.xml       \
+                            extensions/sync.xml      \
+                            extensions/xc_misc.xml   \
+                            extensions/xevie.xml     \
+                           extensions/xf86dri.xml   \
+                            extensions/xfixes.xml    \
+                           extensions/xprint.xml    \
+                           extensions/xv.xml        \
+                           extensions/xvmc.xml
diff --git a/src/extensions/bigreq.xml b/src/extensions/bigreq.xml
new file mode 100644 (file)
index 0000000..9e99d2e
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="bigreq" extension-xname="BIG-REQUESTS"
+                     extension-name="BigRequests">
+  <request name="Enable" opcode="0">
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="maximum_request_length" />
+    </reply>
+  </request>
+</xcb>
diff --git a/src/extensions/composite.xml b/src/extensions/composite.xml
new file mode 100644 (file)
index 0000000..20c4976
--- /dev/null
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett.  All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<!-- This file describes version 0.2 of COMPOSITE. -->
+<xcb header="composite" extension-xname="Composite" extension-name="Composite">
+  <import>xfixes</import>
+
+  <enum name="Redirect">
+    <item name="Automatic" />
+    <item name="Manual" />
+  </enum>
+
+  <request name="QueryVersion" opcode="0">
+    <field type="CARD32" name="client_major_version" />
+    <field type="CARD32" name="client_minor_version" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="major_version" />
+      <field type="CARD32" name="minor_version" />
+      <pad bytes="16" />
+    </reply>
+  </request>
+
+  <request name="RedirectWindow" opcode="1">
+    <field type="WINDOW" name="window" />
+    <field type="CARD8" name="update" />
+    <pad bytes="3" />
+  </request>
+
+  <request name="RedirectSubwindows" opcode="2">
+    <field type="WINDOW" name="window" />
+    <field type="CARD8" name="update" />
+    <pad bytes="3" />
+  </request>
+
+  <request name="UnredirectWindow" opcode="3">
+    <field type="WINDOW" name="window" />
+    <field type="CARD8" name="update" />
+    <pad bytes="3" />
+  </request>
+
+  <request name="UnredirectSubwindows" opcode="4">
+    <field type="WINDOW" name="window" />
+    <field type="CARD8" name="update" />
+    <pad bytes="3" />
+  </request>
+
+  <request name="CreateRegionFromBorderClip" opcode="5">
+    <field type="REGION" name="region" />
+    <field type="WINDOW" name="window" />
+  </request>
+
+  <request name="NameWindowPixmap" opcode="6">
+    <field type="WINDOW" name="window" />
+    <field type="PIXMAP" name="pixmap" />
+  </request>
+</xcb>
diff --git a/src/extensions/damage.xml b/src/extensions/damage.xml
new file mode 100644 (file)
index 0000000..cd79302
--- /dev/null
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett.  All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<!-- This file describes version 1 of DAMAGE. -->
+<xcb header="damage" extension-xname="DAMAGE" extension-name="Damage">
+  <import>xfixes</import>
+
+  <xidtype name="DAMAGE" />
+
+  <enum name="ReportLevel">
+    <item name="RawRectangles" />
+    <item name="DeltaRectangles" />
+    <item name="BoundingBox" />
+    <item name="NonEmpty" />
+  </enum>
+
+  <error name="BadDamage" number="0" />
+
+  <request name="QueryVersion" opcode="0">
+    <field type="CARD32" name="client_major_version" />
+    <field type="CARD32" name="client_minor_version" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="major_version" />
+      <field type="CARD32" name="minor_version" />
+      <pad bytes="16" />
+    </reply>
+  </request>
+
+  <request name="Create" opcode="1">
+    <field type="DAMAGE"   name="damage" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="CARD8"    name="level" /> <!-- ReportLevel -->
+    <pad bytes="3" />
+  </request>
+
+  <request name="Destroy" opcode="2">
+    <field type="DAMAGE" name="damage" />
+  </request>
+
+  <request name="Subtract" opcode="3">
+    <field type="DAMAGE" name="damage" />
+    <field type="REGION" name="repair" />
+    <field type="REGION" name="parts" />
+  </request>
+
+  <event name="Notify" number="0">
+    <field type="CARD8"     name="level" /> <!-- ReportLevel -->
+    <field type="DRAWABLE"  name="drawable" />
+    <field type="DAMAGE"    name="damage" />
+    <field type="TIMESTAMP" name="timestamp" />
+    <field type="RECTANGLE" name="area" />
+    <field type="RECTANGLE" name="geometry" />
+  </event>
+</xcb>
diff --git a/src/extensions/dpms.xml b/src/extensions/dpms.xml
new file mode 100644 (file)
index 0000000..27ba98a
--- /dev/null
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="dpms" extension-xname="DPMS" extension-name="DPMS">
+  <request name="GetVersion" opcode="0">
+    <field type="CARD16" name="client_major_version" />
+    <field type="CARD16" name="client_minor_version" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="server_major_version" />
+      <field type="CARD16" name="server_minor_version" />
+    </reply>
+  </request>
+
+  <request name="Capable" opcode="1">
+    <reply>
+      <pad bytes="1" />
+      <field type="BOOL" name="capable" />
+    </reply>
+  </request>
+
+  <request name="GetTimeouts" opcode="2">
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="standby_timeout" />
+      <field type="CARD16" name="suspend_timeout" />
+      <field type="CARD16" name="off_timeout" />
+    </reply>
+  </request>
+
+  <request name="SetTimeouts" opcode="3">
+    <field type="CARD16" name="standby_timeout" />
+    <field type="CARD16" name="suspend_timeout" />
+    <field type="CARD16" name="off_timeout" />
+  </request>
+
+  <request name="Enable" opcode="4" />
+
+  <request name="Disable" opcode="5" />
+
+  <request name="ForceLevel" opcode="6">
+    <field type="CARD16" name="power_level" />
+  </request>
+
+  <request name="Info" opcode="7">
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="power_level" />
+      <field type="BOOL" name="state" />
+    </reply>
+  </request>
+</xcb>
diff --git a/src/extensions/glx.xml b/src/extensions/glx.xml
new file mode 100644 (file)
index 0000000..40310ad
--- /dev/null
@@ -0,0 +1,1455 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2005 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<!--
+Note that on X.org servers before 6.9 (and probably others as well) the length
+field in the reply is computed incorrectly for GetFBConfigs and
+VendorPrivateWithReply vendor_code 0x10004 (GetFBConfigsSGIX). For these
+requests the reply structure begins:
+       <pad bytes="1" />
+       <field type="CARD32" name="numVisuals" />
+       <field type="CARD32" name="numProps" />
+The correct value for the length field is
+       numVisuals * numProps * 2
+but on broken servers the "* 2" was missing. A workaround that is correct for
+all implementations is to rewrite the length field on receipt on the client
+side, using the expression above.
+
+The patch that fixed this server bug in X.org CVS is here:
+       http://cvs.freedesktop.org/xorg/xserver/xorg/GL/glx/glxcmds.c?r1=1.6&r2=1.7
+-->
+
+<xcb header="glx" extension-xname="GLX" extension-name="Glx">
+       <!-- target support: 1.3 -->
+
+       <xidtype name="PIXMAP" />
+       <xidtype name="CONTEXT" />
+       <xidtype name="PBUFFER" />
+       <xidtype name="WINDOW" />
+       <xidtype name="FBCONFIG" />
+       <xidtype name="DRAWABLE" />
+
+       <typedef oldname="float" newname="FLOAT32" />
+       <typedef oldname="double" newname="FLOAT64" />
+       <typedef oldname="CARD32" newname="BOOL32" />
+           
+       <!-- Errors -->
+       <error name="Generic">
+               <field type="CARD32" name="bad_value" />
+               <field type="CARD16" name="minor_opcode" />
+               <field type="CARD8" name="major_opcode" />
+               <pad bytes="21" />
+       </error>
+
+       <errorcopy name="BadContext" number="0" ref="Generic" />
+       <errorcopy name="BadContextState" number="1" ref="Generic" />
+       <errorcopy name="BadDrawable" number="2" ref="Generic" />
+       <errorcopy name="BadPixmap" number="3" ref="Generic" />
+       <errorcopy name="BadContextTag" number="4" ref="Generic" />
+       <errorcopy name="BadCurrentWindow" number="5" ref="Generic" />
+       <errorcopy name="BadRenderRequest" number="6" ref="Generic" />
+       <errorcopy name="BadLargeRequest" number="7" ref="Generic" />
+       <errorcopy name="UnsupportedPrivateRequest" number="8" ref="Generic" />
+       <errorcopy name="BadFBConfig" number="9" ref="Generic" />
+       <errorcopy name="BadPbuffer" number="10" ref="Generic" />
+       <errorcopy name="BadCurrentDrawable" number="11" ref="Generic" />
+       <errorcopy name="BadWindow" number="12" ref="Generic" />
+
+       <!-- Events -->
+       <event name="PbufferClobber" number="0">
+               <field type="CARD16" name="event_type" />
+               <field type="CARD16" name="draw_type" />
+               <field type="glx:DRAWABLE" name="drawable" />
+               <field type="CARD32" name="b_mask" />
+               <field type="CARD16" name="aux_buffer" />
+               <field type="CARD16" name="x" />
+               <field type="CARD16" name="y" />
+               <field type="CARD16" name="width" />
+               <field type="CARD16" name="height" />
+               <field type="CARD16" name="count" />
+               <pad bytes="4" />
+       </event>
+
+       <!-- enums for PbufferClobber event/draw type -->
+       <enum name="PBCET">
+               <item name="Damaged">
+                       <value>0x8017</value>
+               </item>
+               <item name="Saved">
+                       <value>0x8018</value>
+               </item>
+       </enum>
+
+       <enum name="PBCDT">
+               <item name="Window">
+                       <value>0x8019</value>
+               </item>
+               <item name="Pbuffer">
+                       <value>0x801A</value>
+               </item>
+       </enum>
+
+       <!-- Requests -->
+       <request name="Render" opcode="1" combine-adjacent="true">
+               <field type="CARD32" name="context_tag" />
+               <list type="BYTE" name="data" />
+       </request>
+
+       <request name="RenderLarge" opcode="2">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD16" name="request_num" />
+               <field type="CARD16" name="request_total" />
+               <field type="CARD32" name="data_len" />
+               <list type="BYTE" name="data">
+                   <fieldref>data_len</fieldref>
+               </list>
+       </request>
+
+       <request name="CreateContext" opcode="3">
+               <field type="glx:CONTEXT" name="context" />
+               <field type="VISUALID" name="visual" />
+               <field type="CARD32" name="screen" />
+               <field type="CARD32" name="share_list" />
+               <field type="BOOL" name="is_direct" />
+               <pad bytes="3" />
+       </request>
+
+       <request name="DestroyContext" opcode="4">
+               <field type="glx:CONTEXT" name="context" />
+       </request>
+
+       <request name="MakeCurrent" opcode="5">
+               <field type="glx:DRAWABLE" name="drawable" />
+               <field type="glx:CONTEXT" name="context" />
+               <field type="CARD32" name="old_context_tag" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="CARD32" name="context_tag" />
+                       <pad bytes="20" />
+               </reply>
+       </request>
+
+       <request name="IsDirect" opcode="6">
+               <field type="glx:CONTEXT" name="context" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="BOOL" name="is_direct" />
+                       <pad bytes="23" />
+               </reply>
+       </request>
+
+       <request name="QueryVersion" opcode="7">
+               <field type="CARD32" name="major_version" />
+               <field type="CARD32" name="minor_version" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="CARD32" name="major_version" />
+                       <field type="CARD32" name="minor_version" />
+                       <pad bytes="16" />
+               </reply>
+       </request>
+
+       <request name="WaitGL" opcode="8">
+               <field type="CARD32" name="context_tag" />
+       </request>
+
+       <request name="WaitX" opcode="9">
+               <field type="CARD32" name="context_tag" />
+       </request>
+
+       <request name="CopyContext" opcode="10">
+               <field type="glx:CONTEXT" name="src" />
+               <field type="glx:CONTEXT" name="dest" />
+               <field type="CARD32" name="mask" />
+               <field type="CARD32" name="src_context_tag" />
+       </request>
+
+       <!-- Enum for CopyContext: mask -->
+       <enum name="GC">
+               <item name="_GL_CURRENT_BIT"><value>0x00000001</value></item>
+               <item name="_GL_POINT_BIT"><value>0x00000002</value></item>
+               <item name="_GL_LINE_BIT"><value>0x00000004</value></item>
+               <item name="_GL_POLYGON_BIT"><value>0x00000008</value></item>
+               <item name="_GL_POLYGON_STIPPLE_BIT"><value>0x00000010</value></item>
+               <item name="_GL_PIXEL_MODE_BIT"><value>0x00000020</value></item>
+               <item name="_GL_LIGHTING_BIT"><value>0x00000040</value></item>
+               <item name="_GL_FOG_BIT"><value>0x00000080</value></item>
+               <item name="_GL_DEPTH_BUFFER_BIT"><value>0x00000100</value></item>
+               <item name="_GL_ACCUM_BUFFER_BIT"><value>0x00000200</value></item>
+               <item name="_GL_STENCIL_BUFFER_BIT"><value>0x00000400</value></item>
+               <item name="_GL_VIEWPORT_BIT"><value>0x00000800</value></item>
+               <item name="_GL_TRANSFORM_BIT"><value>0x00001000</value></item>
+               <item name="_GL_ENABLE_BIT"><value>0x00002000</value></item>
+               <item name="_GL_COLOR_BUFFER_BIT"><value>0x00004000</value></item>
+               <item name="_GL_HINT_BIT"><value>0x00008000</value></item>
+               <item name="_GL_EVAL_BIT"><value>0x00010000</value></item>
+               <item name="_GL_LIST_BIT"><value>0x00020000</value></item>
+               <item name="_GL_TEXTURE_BIT"><value>0x00040000</value></item>
+               <item name="_GL_SCISSOR_BIT"><value>0x00080000</value></item>
+               <item name="_GL_ALL_ATTRIB_BITS"><value>0x000ffffff</value></item>
+       </enum>
+
+       <request name="SwapBuffers" opcode="11">
+               <field type="CARD32" name="context_tag" />
+               <field type="glx:DRAWABLE" name="drawable" />
+       </request>
+
+       <request name="UseXFont" opcode="12">
+               <field type="CARD32" name="context_tag" />
+               <field type="FONT" name="font" />
+               <field type="CARD32" name="first" />
+               <field type="CARD32" name="count" />
+               <field type="CARD32" name="list_base" />
+       </request>
+
+       <request name="CreateGLXPixmap" opcode="13">
+               <field type="CARD32" name="screen" />
+               <field type="VISUALID" name="visual" />
+               <field type="xcb_types:PIXMAP" name="pixmap" />
+               <field type="glx:PIXMAP" name="glxpixmap" />
+       </request>
+
+       <request name="GetVisualConfigs" opcode="14">
+               <field type="CARD32" name="screen" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="CARD32" name="num_visuals" />
+                       <field type="CARD32" name="num_props" />
+                       <pad bytes="16" />
+                       <valueparam value-mask-type="CARD32"
+                               value-mask-name="value_mask"
+                               value-list-name="value_list" />
+               </reply>
+       </request>
+
+       <request name="DestroyGLXPixmap" opcode="15">
+               <field type="glx:PIXMAP" name="glxpixmap" />
+       </request>
+
+       <!--
+       Context tag is not in the proto, should be part of the list of bytes
+       but every VendorPrivate and VendorPrivateWithReply request uses them
+       so it is safe to put them in.  That's how Mesa does it.
+       -->
+       <request name="VendorPrivate" opcode="16">
+               <field type="CARD32" name="vendor_code" />
+               <field type="CARD32" name="context_tag" />
+               <list type="BYTE" name="data" />
+       </request>
+
+       <request name="VendorPrivateWithReply" opcode="17">
+               <field type="CARD32" name="vendor_code" />
+               <field type="CARD32" name="context_tag" />
+               <list type="BYTE" name="data" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="CARD32" name="retval" />
+                       <list type="BYTE" name="data1">
+                               <value>24</value>
+                       </list>
+                       <list type="BYTE" name="data2" />
+               </reply>
+       </request>
+
+       <request name="QueryExtensionsString" opcode="18">
+               <field type="CARD32" name="screen" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <pad byes="16" />
+               </reply>
+       </request>
+
+       <request name="QueryServerString" opcode="19">
+               <field type="CARD32" name="screen" />
+               <field type="CARD32" name="name" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="str_len" />
+                       <pad bytes="16" />
+                       <list type="CARD8" name="string">
+                               <fieldref>str_len</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="ClientInfo" opcode="20">
+               <field type="CARD32" name="major_version" />
+               <field type="CARD32" name="minor_version" />
+               <field type="CARD32" name="str_len" />
+               <list type="CARD8" name="string">
+                       <fieldref>str_len</fieldref>
+               </list>
+       </request>
+
+       <!-- Start of GLX 1.3 Requests -->
+
+       <request name="GetFBConfigs" opcode="21">
+               <field type="CARD32" name="screen" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="CARD32" name="num_FB_configs" />
+                       <field type="CARD32" name="num_properties" />
+                       <pad bytes="16" />
+                       <valueparam value-mask-type="CARD32"
+                               value-mask-name="value_mask"
+                               value-list-name="value_list" />
+               </reply>
+       </request>
+
+       <request name="CreatePixmap" opcode="22">
+               <field type="CARD32" name="screen" />
+               <field type="CARD32" name="fbconfig" />
+               <field type="xcb_types:PIXMAP" name="pixmap" />
+               <field type="glx:PIXMAP" name="glxpixmap" />
+               <field type="CARD32" name="num_attribs" />  
+       </request>
+
+       <request name="DestroyPixmap" opcode="23">
+               <field type="glx:PIXMAP" name="glxpixmap" />
+       </request>
+
+       <request name="CreateNewContext" opcode="24">
+               <field type="glx:CONTEXT" name="context" />
+               <field type="CARD32" name="fbconfig" />
+               <field type="SCREEN" name="screen" />
+               <field type="CARD32" name="render_type" />
+               <field type="CARD32" name="share_list" />
+               <field type="BOOL" name="is_direct" />
+               <field type="CARD8" name="reserved1" />
+               <field type="CARD16" name="reserved2" />
+       </request>
+
+       <request name="QueryContext" opcode="25">
+               <field type="glx:CONTEXT" name="context" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="CARD32" name="num_attributes"/>
+                       <pad bytes="20" />
+                       <valueparam value-mask-type="CARD32"
+                               value-mask-name="value_mask"
+                               value-list-name="value_list" />
+               </reply>
+       </request>
+
+       <request name="MakeContextCurrent" opcode="26">
+               <field type="CARD32" name="old_context_tag" />
+               <field type="glx:DRAWABLE" name="drawable" />
+               <field type="glx:DRAWABLE" name="read_drawable" />
+               <field type="glx:CONTEXT" name="context" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="CARD32" name="context_tag" />
+                       <pad byes="20" />
+               </reply>
+       </request>
+
+       <request name="CreatePbuffer" opcode="27">
+               <field type="SCREEN" name="screen" />
+               <field type="FBCONFIG" name="fbconfig" />
+               <field type="PBUFFER" name="pbuffer" />
+               <field type="CARD32" name="num_attribs" />
+               <valueparam value-mask-type="CARD32"
+                       value-mask-name="value_mask"
+                       value-list-name="value_list" />
+       </request>
+
+       <request name="DestroyPbuffer" opcode="28">
+               <field type="PBUFFER" name="pbuffer" />
+       </request>
+
+       <request name="GetDrawableAttributes" opcode="29">
+               <field type="glx:DRAWABLE" name="drawable" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="CARD32" name="num_attribs" />
+                       <pad bytes="20" />
+                       <valueparam value-mask-type="CARD32"
+                               value-mask-name="value_mask"
+                               value-list-name="value_list" />
+               </reply>
+       </request>
+
+       <request name="ChangeDrawableAttributes" opcode="30">
+               <field type="glx:DRAWABLE" name="drawable" />
+               <field type="CARD32" name="num_attribs" />
+               <valueparam value-mask-type="CARD32"
+                       value-mask-name="value_mask"
+                       value-list-name="value_list" />
+       </request>
+
+       <request name="CreateWindow" opcode="31">
+               <field type="SCREEN" name="screen" />
+               <field type="FBCONFIG" name="fbconfig" />
+               <field type="xcb_types:WINDOW" name="window" />
+               <field type="glx:WINDOW" name="glx_window" />
+               <field type="CARD32" name="num_attribs" />
+               <valueparam value-mask-type="CARD32"
+                       value-mask-name="value_mask"
+                       value-list-name="value_list" />
+       </request>
+
+       <request name="DeleteWindow" opcode="32">
+               <field type="glx:WINDOW" name="glxwindow" />
+       </request>
+
+       <!-- Requests for GL Non-rendering Commands (single ops) -->
+
+       <request name="NewList" opcode="101">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="list" />
+               <field type="CARD32" name="mode" />
+       </request>
+
+       <request name="EndList" opcode="102">
+               <field type="CARD32" name="context_tag" />
+       </request>
+
+       <request name="DeleteLists" opcode="103">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="list" />
+               <field type="INT32" name="range" />
+       </request>
+
+       <request name="GenLists" opcode="104">
+               <field type="CARD32" name="context_tag" />
+               <field type="INT32" name="range" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="CARD32" name="ret_val" />
+               </reply>
+       </request>
+
+       <request name="FeedbackBuffer" opcode="105">
+               <field type="CARD32" name="context_tag" />
+               <field type="INT32" name="size" />
+               <field type="INT32" name="type" />
+       </request>
+
+       <request name="SelectBuffer" opcode="106">
+               <field type="CARD32" name="context_tag" />
+               <field type="INT32" name="size" />
+               <!-- the reply is actually returned in the data
+               of the next RenderMode request -->
+       </request>
+
+
+       <request name="RenderMode" opcode="107">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="mode" />
+               <!--
+               This reply is only if RM was previously feedback/selection.
+               If it was in feedback mode then data is FLOAT32.
+               If previously in render mode there is no reply.
+               -->
+               <reply>
+                       <pad bytes="1" />
+                       <field type="CARD32" name="ret_val" />
+                       <field type="CARD32" name="n" />
+                       <field type="CARD32" name="new_mode" />
+                       <pad bytes="12" />
+                       <list type="CARD32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <enum name="RM">
+               <item name="_GL_RENDER"><value>0x1C00</value></item>
+               <item name="_GL_FEEDBACK"><value>0x1C01</value></item>
+               <item name="_GL_SELECT"><value>0x1C02</value></item>
+       </enum>
+
+       <request name="Finish" opcode="108">
+               <field type="CARD32" name="context_tag" />
+               <reply>
+                       <pad bytes="1" />
+               </reply>
+       </request>
+
+       <request name="PixelStoref" opcode="109">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="pname" />
+               <field type="FLOAT32" name="datum" />
+       </request>
+
+       <request name="PixelStorei" opcode="110">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="pname" />
+               <field type="INT32" name="datum" />
+       </request>
+
+       <request name="ReadPixels" opcode="111">
+               <field type="CARD32" name="context_tag" />
+               <field type="INT32" name="x" />
+               <field type="INT32" name="y" />
+               <field type="INT32" name="width" />
+               <field type="INT32" name="height" />
+               <field type="CARD32" name="format" />
+               <field type="CARD32" name="type" />
+               <field type="BOOL" name="swap_bytes" />
+               <field type="BOOL" name="lsb_first" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="24" />
+                       <list type="BYTE" name="data" />
+               </reply>
+       </request>
+               
+       <!-- FIXME:
+       All the Get* functions can return different stuff for replies.
+       Hopefully xcb will support multiple reply structures at some point
+       but for now... grrrr
+       Starts on page 58/180
+       -->
+       <request name="GetBooleanv" opcode="112">
+               <field type="CARD32" name="context_tag" />
+               <field type="INT32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="BOOL" name="datum" />
+                       <pad bytes="15" />
+                       <list type="BOOL" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetClipPlane" opcode="113">
+               <field type="CARD32" name="context_tag" />
+               <field type="INT32" name="plane" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="24" />
+                       <list type="FLOAT64" name="data" />
+               </reply>
+       </request>
+
+       <request name="GetDoublev" opcode="114">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT64" name="datum" />
+                       <pad bytes="8" />
+                       <list type="FLOAT64" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetError" opcode="115">
+               <field type="CARD32" name="context_tag" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="INT32" name="error" />
+               </reply>
+       </request>
+
+       <request name="GetFloatv" opcode="116">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetIntegerv" opcode="117">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetLightfv" opcode="118">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="light" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetLightiv" opcode="119">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="light" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetMapdv" opcode="120">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="query" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT64" name="datum" />
+                       <pad bytes="8" />
+                       <list type="FLOAT64" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetMapfv" opcode="121">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="query" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetMapiv" opcode="122">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="query" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetMaterialfv" opcode="123">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="face" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetMaterialiv" opcode="124">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="face" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetPixelMapfv" opcode="125">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="map" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetPixelMapuiv" opcode="126">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="map" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="CARD32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="CARD32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetPixelMapusv" opcode="127">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="map" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="CARD16" name="datum" />
+                       <pad bytes="16" />
+                       <list type="CARD16" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetPolygonStipple" opcode="128">
+               <field type="CARD32" name="context_tag" />
+               <field type="BOOL" name="lsb_first" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="24" />
+                       <list type="BYTE" name="data" />
+               </reply>
+       </request>
+
+
+       <request name="GetString" opcode="129">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="name" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <pad bytes="16" />
+                       <list type="CARD8" name="string">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetTexEnvfv" opcode="130">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetTexEnviv" opcode="131">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetTexGendv" opcode="132">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="coord" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT64" name="datum" />
+                       <pad bytes="8" />
+                       <list type="FLOAT64" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetTexGenfv" opcode="133">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="coord" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetTexGeniv" opcode="134">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="coord" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetTexImage" opcode="135">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="INT32" name="level" />
+               <field type="CARD32" name="format" />
+               <field type="CARD32" name="type" />
+               <field type="BOOL" name="swap_bytes" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="8" />
+                       <field type="INT32" name="width" />
+                       <field type="INT32" name="height" />
+                       <field type="INT32" name="depth" />
+                       <pad bytes="4" />
+                       <list type="BYTE" name="data" />
+               </reply>
+       </request>
+           
+
+       <request name="GetTexParameterfv" opcode="136">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetTexParameteriv" opcode="137">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetTexLevelParameterfv" opcode="138">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="INT32" name="level" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetTexLevelParameteriv" opcode="139">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="INT32" name="level" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="IsList" opcode="141" >
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="list" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="BOOL32" name="ret_val" />
+               </reply>
+       </request>
+
+       <request name="Flush" opcode="142">
+               <field type="CARD32" name="context_tag" />
+       </request>
+
+       <request name="AreTexturesResident" opcode="143">
+               <field type="CARD32" name="context_tag" />
+               <field type="INT32" name="n" />
+               <list type="CARD32" name="textures">
+                   <fieldref>n</fieldref>
+               </list>
+               <reply>
+                       <pad bytes="1" />
+                       <field type="BOOL32" name="ret_val" />
+                       <pad bytes="20" />
+                       <list type="BOOL" name="data" />
+               </reply>
+       </request>
+
+       <request name="DeleteTextures" opcode="144">
+               <field type="CARD32" name="context_tag" />
+               <field type="INT32" name="n" />
+               <list type="CARD32" name="textures">
+                       <fieldref>n</fieldref>
+               </list>
+       </request>
+
+       <request name="GenTextures" opcode="145">
+               <field type="CARD32" name="context_tag" />
+               <field type="INT32" name="n" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="24" />
+                       <list type="CARD32" name="data" />
+               </reply>
+       </request>
+
+       <request name="IsTexture" opcode="146">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="texture" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="BOOL32" name="ret_val" />
+               </reply>
+       </request>
+
+       <request name="GetColorTable" opcode="147">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="format" />
+               <field type="CARD32" name="type" />
+               <field type="BOOL" name="swap_bytes" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="8" />
+                       <field type="INT32" name="width" />
+                       <pad bytes="12" />
+                       <list type="BYTE" name="data" />
+               </reply>
+       </request>
+       
+       <request name="GetColorTableParameterfv" opcode="148">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetColorTableParameteriv" opcode="149">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetConvolutionFilter" opcode="150">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="format" />
+               <field type="CARD32" name="type" />
+               <field type="BOOL" name="swap_bytes" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="8" />
+                       <field type="INT32" name="width" />
+                       <field type="INT32" name="height" />
+                       <pad bytes="8" />
+                       <list type="BYTE" name="data" />
+               </reply>
+       </request>
+
+
+       <request name="GetConvolutionParameterfv" opcode="151">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetConvolutionParameteriv" opcode="152">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetSeparableFilter" opcode="153">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="format" />
+               <field type="CARD32" name="type" />
+               <field type="BOOL" name="swap_bytes" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="8" />
+                       <field type="INT32" name="row_w" />
+                       <field type="INT32" name="col_h" />
+                       <pad bytes="8" />
+                       <list type="BYTE" name="rows_and_cols" />
+               </reply>
+       </request>
+
+       <request name="GetHistogram" opcode="154">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="format" />
+               <field type="CARD32" name="type" />
+               <field type="BOOL" name="swap_bytes" />
+               <field type="BOOL" name="reset" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="8" />
+                       <field type="INT32" name="width" />
+                       <pad bytes="12" />
+                       <list type="BYTE" name="data" />
+               </reply>
+       </request>
+
+
+       <request name="GetHistogramParameterfv" opcode="155">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetHistogramParameteriv" opcode="156">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetMinmax" opcode="157">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="format" />
+               <field type="CARD32" name="type" />
+               <field type="BOOL" name="swap_bytes" />
+               <field type="BOOL" name="reset" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="24" />
+                       <list type="BYTE" name="data" />
+               </reply>
+       </request>
+
+       <request name="GetMinmaxParameterfv" opcode="158">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="FLOAT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="FLOAT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetMinmaxParameteriv" opcode="159">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <!--
+       GLX Extensions
+       
+       * XXX: So far only define non-rendering commands.
+       * Only those extensions that affect the GLX wire protocol are listed.
+       -->
+
+       <!--
+       GL_ARB_texture_compression
+       http://oss.sgi.com/projects/ogl-sample/registry/ARB/texture_compression.txt
+       -->
+       <request name="GetCompressedTexImageARB" opcode="160">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="INT32" name="level" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="8" />
+                       <field type="INT32" name="size" />
+                       <pad bytes="12" />
+                       <list type="BYTE" name="data" />
+               </reply>
+       </request>
+
+       
+       <!--
+       GL_ARB_occlusion_query
+       http://oss.sgi.com/projects/ogl-sample/registry/ARB/occlusion_query.txt
+       -->
+
+       <request name="DeleteQueriesARB" opcode="161">
+               <field type="CARD32" name="context_tag" />
+               <field type="INT32" name="n" />
+               <list type="CARD32" name="ids">
+                       <fieldref>n</fieldref>
+               </list>
+       </request>
+
+       <request name="GenQueriesARB" opcode="162">
+               <field type="CARD32" name="context_tag" />
+               <field type="INT32" name="n" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="24" />
+                       <list type="CARD32" name="data" />
+               </reply>
+       </request>
+       
+       <request name="IsQueryARB" opcode="163">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="id" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="BOOL32" name="ret_val" />
+               </reply>
+       </request>
+       
+       <request name="GetQueryivARB" opcode="164">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="target" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+       
+       <request name="GetQueryObjectivARB" opcode="165">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="id" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="INT32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="INT32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+       
+       <request name="GetQueryObjectuivARB" opcode="166">
+               <field type="CARD32" name="context_tag" />
+               <field type="CARD32" name="id" />
+               <field type="CARD32" name="pname" />
+               <reply>
+                       <pad bytes="1" />
+                       <pad bytes="4" />
+                       <field type="CARD32" name="n" />
+                       <field type="CARD32" name="datum" />
+                       <pad bytes="12" />
+                       <list type="CARD32" name="data">
+                               <fieldref>n</fieldref>
+                       </list>
+               </reply>
+       </request>
+       
+       <!--
+       GL_ARB_vertex_program
+       http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_program.txt
+       XXX: Need to write up vops
+       --> 
+
+       <!--
+       GL_ARB_fragment_program
+       http://oss.sgi.com/projects/ogl-sample/registry/ARB/fragment_program.txt
+       XXX: Need to write up vops
+       -->
+       
+       <!--
+       GL_SGIS_texture_filter4
+       http://oss.sgi.com/projects/ogl-sample/registry/SGIS/texture_filter4.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_EXT_histogram
+       http://oss.sgi.com/projects/ogl-sample/registry/EXT/histogram.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_EXT_convolution
+       http://oss.sgi.com/projects/ogl-sample/registry/EXT/convolution.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_SGI_color_table
+       http://oss.sgi.com/projects/ogl-sample/registry/SGI/color_table.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_EXT_texture_object
+       http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_object.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_SGIS_detail_texture
+       http://oss.sgi.com/projects/ogl-sample/registry/SGIS/detail_texture.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_SGIS_sharpen_texture
+       http://oss.sgi.com/projects/ogl-sample/registry/SGIS/sharpen_texture.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_SGI_make_current_read
+       http://oss.sgi.com/projects/ogl-sample/registry/SGI/make_current_read.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_EXT_import_context
+       http://oss.sgi.com/projects/ogl-sample/registry/EXT/import_context.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_SGIX_fbconfig
+       http://oss.sgi.com/projects/ogl-sample/registry/SGIX/fbconfig.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_SGIX_pbuffer
+       http://oss.sgi.com/projects/ogl-sample/registry/SGIX/pbuffer.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_EXT_pixel_transform
+       http://oss.sgi.com/projects/ogl-sample/registry/EXT/pixel_transform.txt
+       XXX: Need to write up vops
+       -->
+       
+       <!--
+       GL_NV_register_combiners
+       http://oss.sgi.com/projects/ogl-sample/registry/NV/register_combiners.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_NV_fence
+       http://oss.sgi.com/projects/ogl-sample/registry/NV/fence.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_NV_register_combiners2
+       http://oss.sgi.com/projects/ogl-sample/registry/NV/register_combiners2.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_NV_vertex_program
+       http://oss.sgi.com/projects/ogl-sample/registry/NV/vertex_program.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_NV_vertex_program
+       http://oss.sgi.com/projects/ogl-sample/registry/NV/vertex_program.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_NV_occlusion_query
+       http://oss.sgi.com/projects/ogl-sample/registry/NV/occlusion_query.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_NV_fragment_program
+       http://oss.sgi.com/projects/ogl-sample/registry/NV/fragment_program.txt
+       XXX: Need to write up vops
+       -->
+
+       <!--
+       GL_OES_single_precision
+       http://oss.sgi.com/projects/ogl-sample/registry/OES/single_precision.txt
+       XXX: Need to write up vops
+       -->
+       
+</xcb>
diff --git a/src/extensions/randr.xml b/src/extensions/randr.xml
new file mode 100644 (file)
index 0000000..a85b69c
--- /dev/null
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2005 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<xcb header="randr" extension-xname="RANDR" extension-name="RandR">
+       <!-- Implements version 1.1 of RANDR -->        
+       
+       <enum name="Rotation">
+               <item name="Rotate_0"><value>1</value></item>
+               <item name="Rotate_90"><value>2</value></item>
+               <item name="Rotate_180"><value>4</value></item>
+               <item name="Rotate_270"><value>8</value></item>
+               <item name="Reflect_X"><value>16</value></item>
+               <item name="Reflect_Y"><value>32</value></item>
+       </enum>
+
+       <struct name="ScreenSize">
+               <field type="INT16" name="width" />
+               <field type="INT16" name="height" />
+               <field type="INT16" name="mwidth" />
+               <field type="INT16" name="mheight" />
+       </struct>
+       
+       <struct name="RefreshRates">
+               <field type="CARD16" name="nRates" />
+               <list type="CARD16" name="rates">
+                       <fieldref>nRates</fieldref>
+               </list>
+       </struct>
+
+       <request name="QueryVersion" opcode="0">
+               <field type="CARD32" name="major_version" />
+               <field type="CARD32" name="minor_version" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="CARD32" name="major_version" />
+                       <field type="CARD32" name="minor_version" />i
+                       <pad bytes="16" />
+               </reply>
+       </request>
+
+       <!-- This is for the 1.1 version request.  I don't believe we need to specify a 1.0 request
+       as few things used randr 1.0.  The only difference is the removal of refresh and padding I think.
+       BEWARE: the docs lie!
+       -->
+       <request name="SetScreenConfig" opcode="2">
+               <field type="WINDOW" name="drawable" />
+               <field type="CARD32" name="timestamp" />
+               <field type="CARD32" name="config_timestamp" />
+               <field type="CARD16" name="sizeID" />
+               <field type="INT16" name="rotation" />
+               <field type="CARD16" name="refresh" />
+               <pad bytes="2" />
+               <reply>
+                       <field type="CARD8" name="status" />
+                       <field type="CARD32" name="timestamp" />
+                       <field type="CARD32" name="config_timestamp" />
+                       <field type="WINDOW" name="root" />
+                       <field type="CARD16" name="subpixel_order" />
+                       <pad bytes="10" />
+               </reply>
+       </request>
+
+       <enum name="SetConfig">
+               <item name="Success"><value>0</value></item>
+               <item name="InvalidConfigTime"><value>1</value></item>
+               <item name="InvalidTime"><value>2</value></item>
+               <item name="Failed"><value>3</value></item>
+       </enum>
+
+       <request name="SelectInput" opcode="4"> 
+               <field type="WINDOW" name="window" />
+               <field type="CARD16" name="enable" />
+               <pad bytes="2" />
+       </request>
+
+       <!--
+       I think this is correct.  It works. though I believe nInfo is a bit high...
+       -->
+       <request name="GetScreenInfo" opcode="5">
+               <field type="WINDOW" name="window" />
+               <reply>
+                       <field type="CARD8" name="rotations" />
+                       <field type="WINDOW" name="root" />
+                       <field type="CARD32" name="timestamp" />
+                       <field type="CARD32" name="config_timestamp" />
+                       <field type="CARD16" name="nSizes" />
+                       <field type="CARD16" name="sizeID" />
+                       <field type="INT16" name="rotation" />
+                       <field type="CARD16" name="rate" />
+                       <field type="CARD16" name="nInfo" />
+                       <pad bytes="2" />
+                       <list type="ScreenSize" name="sizes">
+                           <fieldref>nSizes</fieldref>
+                       </list>
+                       <list type="RefreshRates" name="rates">
+                               <op op="-">
+                                       <fieldref>nInfo</fieldref>
+                                       <fieldref>nSizes</fieldref>
+                               </op>
+                       </list>
+               </reply>
+       </request>
+
+       <enum name="SM" >
+               <item name="ScreenChangeNotify"><value>1</value></item>
+       </enum>
+       
+       <event name="ScreenChangeNotify" number="0">
+               <field type="CARD8" name="rotation" />
+               <field type="CARD32" name="timestamp" />
+               <field type="CARD32" name="config_timestamp" />
+               <field type="WINDOW" name="root" />
+               <field type="WINDOW" name="request_window" />
+               <field type="CARD16" name="sizeID" />
+               <field type="CARD16" name="subpixel_order" />
+               <field type="CARD16" name="width" />
+               <field type="CARD16" name="height" />
+               <field type="CARD16" name="mwidth" />
+               <field type="CARD16" name="mheight" />
+       </event>
+               
+</xcb>
diff --git a/src/extensions/record.xml b/src/extensions/record.xml
new file mode 100644 (file)
index 0000000..09729ad
--- /dev/null
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2005 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<xcb header="record" extension-xname="RECORD" extension-name="Record">
+
+    <!-- Types -->
+    <xidtype name="CONTEXT" />
+    
+    <struct name="Range8">
+       <field type="CARD8" name="first" />
+       <field type="CARD8" name="last" />
+    </struct>
+
+    <struct name="Range16">
+       <field type="CARD16" name="first" />
+       <field type="CARD16" name="last" />
+    </struct>
+
+    <struct name="ExtRange">
+       <field type="Range8" name="major" />
+       <field type="Range16" name="minor" />
+    </struct>
+
+    <struct name="Range">
+       <field type="Range8" name="core_requests" />
+       <field type="Range8" name="core_replies" />
+       <field type="ExtRange" name="ext_requests" />
+       <field type="ExtRange" name="ext_replies" />
+       <field type="Range8" name="delivered_events" />
+       <field type="Range8" name="device_events" />
+       <field type="Range8" name="errors" />
+       <field type="BOOL" name="client_started" />
+       <field type="BOOL" name="client_died" />
+    </struct>
+
+    <typedef oldname="CARD8" newname="ElementHeader" />
+    <enum name="HType">
+       <item name="FromServerTime"><value>0x01</value></item>
+       <item name="FromClientTime"><value>0x02</value></item>
+       <item name="FromClientSequence"><value>0x04</value></item>
+    </enum>
+
+    <typedef oldname="CARD32" newname="ClientSpec" />
+    <enum name="CS">
+       <item name="CurrentClients"><value>1</value></item>
+       <item name="FutureClients"><value>2</value></item>
+       <item name="AllClients"><value>3</value></item>
+    </enum>
+
+    <struct name="ClientInfo">
+       <field type="ClientSpec" name="client_resource" />
+       <field type="CARD32" name="num_ranges" />
+       <list type="Range" name="ranges">
+           <fieldref>num_ranges</fieldref>
+       </list>
+    </struct>
+
+    <!-- Errors -->
+    <error name="BadContext" number="0">
+       <field type="CARD32" name="invalid_record" />
+    </error>
+       
+    <!-- Requests -->
+    <request name="QueryVersion" opcode="0">
+       <field type="CARD16" name="major_version" />
+       <field type="CARD16" name="minor_version" />
+       <reply>
+           <pad bytes="1"/>
+           <field type="CARD16" name="major_version" />
+           <field type="CARD16" name="minor_version" />
+       </reply>
+    </request>
+
+    <request name="CreateContext" opcode="1">
+       <field type="record:CONTEXT" name="context" />
+       <field type="ElementHeader" name="element_header" />
+       <pad bytes="3" />
+       <field type="CARD32" name="num_client_specs" />
+       <field type="CARD32" name="num_ranges" />
+       <list type="ClientSpec" name="client_specs">
+           <fieldref>num_client_specs</fieldref>
+       </list>
+       <list type="Range" name="ranges">
+           <fieldref>num_ranges</fieldref>
+       </list>
+    </request>
+
+    <request name="RegisterClients" opcode="2">
+       <field type="record:CONTEXT" name="context" />
+       <field type="ElementHeader" name="element_header" />
+       <pad bytes="3" />
+       <field type="CARD32" name="num_client_specs" />
+       <field type="CARD32" name="num_ranges" />
+       <list type="ClientSpec" name="client_specs">
+           <fieldref>num_client_specs</fieldref>
+       </list>
+       <list type="Range" name="ranges">
+           <fieldref>num_ranges</fieldref>
+       </list>
+    </request>
+
+    <request name="UnregisterClients" opcode="3">
+       <field type="record:CONTEXT" name="context" />
+       <field type="CARD32" name="num_client_specs" />
+       <list type="ClientSpec" name="client_specs">
+           <fieldref>num_client_specs</fieldref>
+       </list>
+    </request>
+
+    <request name="GetContext" opcode="4">
+       <field type="record:CONTEXT" name="context" />
+       <reply>
+           <field type="BOOL" name="enabled" />
+           <field type="ElementHeader" name="element_header" />
+           <pad bytes="3" />
+           <field type="CARD32" name="num_intercepted_clients" />
+           <pad bytes="16" />
+           <list type="ClientInfo" name="intercepted_clients">
+               <fieldref>num_intercepted_clients</fieldref>
+           </list>
+       </reply>
+    </request>
+
+    <request name="EnableContext" opcode="5">
+       <field type="record:CONTEXT" name="context" />
+       <reply>
+           <field type="CARD8" name="category" />
+           <field type="ElementHeader" name="element_header" />
+           <field type="BOOL" name="client_swapped" />
+           <pad bytes="2" />
+           <field type="CARD32" name="xid_base" />
+           <field type="CARD32" name="server_time" />
+           <field type="CARD32" name="rec_sequence_num" />
+           <pad bytes="8" />
+           <list type="BYTE" name="data" />
+       </reply>
+    </request>
+           
+    <request name="DisableContext" opcode="6">
+       <field type="record:CONTEXT" name="context" />
+    </request>
+
+    <request name="FreeContext" opcode="7">
+       <field type="record:CONTEXT" name="context" />
+    </request>
+    
+</xcb>
diff --git a/src/extensions/render.xml b/src/extensions/render.xml
new file mode 100644 (file)
index 0000000..74938be
--- /dev/null
@@ -0,0 +1,569 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2002-2004 Carl D. Worth, Jamey Sharp, Bart Massey, Josh Triplett
+All Rights Reserved.  See the file COPYING in this directory
+for licensing information.
+-->
+<xcb header="render" extension-xname="RENDER" extension-name="Render">
+  <!-- supports version 0.8 -->
+
+  <enum name="PictType">
+    <item name="Indexed" />
+    <item name="Direct" />
+  </enum>
+
+  <!-- Disjoint* and Conjoint* are new in version 0.2 -->
+  <enum name="PictOp">
+    <item name="Clear" />
+    <item name="Src" />
+    <item name="Dst" />
+    <item name="Over" />
+    <item name="OverReverse" />
+    <item name="In" />
+    <item name="InReverse" />
+    <item name="Out" />
+    <item name="OutReverse" />
+    <item name="Atop" />
+    <item name="AtopReverse" />
+    <item name="Xor" />
+    <item name="Add" />
+    <item name="Saturate" />
+    
+    <item name="DisjointClear"><value>0x10</value></item>
+    <item name="DisjointSrc" />
+    <item name="DisjointDst" />
+    <item name="DisjointOver" />
+    <item name="DisjointOverReverse" />
+    <item name="DisjointIn" />
+    <item name="DisjointInReverse" />
+    <item name="DisjointOut" />
+    <item name="DisjointOutReverse" />
+    <item name="DisjointAtop" />
+    <item name="DisjointAtopReverse" />
+    <item name="DisjointXor" />
+    
+    <item name="ConjointClear"><value>0x20</value></item>
+    <item name="ConjointSrc" />
+    <item name="ConjointDst" />
+    <item name="ConjointOver" />
+    <item name="ConjointOverReverse" />
+    <item name="ConjointIn" />
+    <item name="ConjointInReverse" />
+    <item name="ConjointOut" />
+    <item name="ConjointOutReverse" />
+    <item name="ConjointAtop" />
+    <item name="ConjointAtopReverse" />
+    <item name="ConjointXor" />
+  </enum>
+
+  <enum name="PolyEdge">
+    <item name="Sharp" />
+    <item name="Smooth" />
+  </enum>
+
+  <enum name="PolyMode">
+    <item name="Precise" />
+    <item name="Imprecise" />
+  </enum>
+
+  <enum name="CP">
+    <item name="Repeat">
+      <op op="&lt;&lt;"><value>1</value><value>0</value></op>
+    </item>
+    <item name="AlphaMap">
+      <op op="&lt;&lt;"><value>1</value><value>1</value></op>
+    </item>
+    <item name="AlphaXOrigin">
+      <op op="&lt;&lt;"><value>1</value><value>2</value></op>
+    </item>
+    <item name="AlphaYOrigin">
+      <op op="&lt;&lt;"><value>1</value><value>3</value></op>
+    </item>
+    <item name="ClipXOrigin">
+      <op op="&lt;&lt;"><value>1</value><value>4</value></op>
+    </item>
+    <item name="ClipYOrigin">
+      <op op="&lt;&lt;"><value>1</value><value>5</value></op>
+    </item>
+    <item name="ClipMask">
+      <op op="&lt;&lt;"><value>1</value><value>6</value></op>
+    </item>
+    <item name="GraphicsExposure">
+      <op op="&lt;&lt;"><value>1</value><value>7</value></op>
+    </item>
+    <item name="SubwindowMode">
+      <op op="&lt;&lt;"><value>1</value><value>8</value></op>
+    </item>
+    <item name="PolyEdge">
+      <op op="&lt;&lt;"><value>1</value><value>9</value></op>
+    </item>
+    <item name="PolyMode">
+      <op op="&lt;&lt;"><value>1</value><value>10</value></op>
+    </item>
+    <item name="Dither">
+      <op op="&lt;&lt;"><value>1</value><value>11</value></op>
+    </item>
+    <item name="ComponentAlpha">
+      <op op="&lt;&lt;"><value>1</value><value>12</value></op>
+    </item>
+  </enum>
+
+  <enum name="SubPixel">
+    <item name="Unknown" />
+    <item name="HorizontalRGB" />
+    <item name="HorizontalBGR" />
+    <item name="VerticalRGB" />
+    <item name="VerticalBGR" />
+    <item name="None" />
+  </enum>
+
+  <typedef oldname="CARD32" newname="GLYPH" />
+  <xidtype name="GLYPHSET" />
+
+  <xidtype name="PICTURE" />
+  <xidtype name="PICTFORMAT" />
+
+  <typedef oldname="INT32" newname="FIXED" />
+
+  <error name="PictFormat" number="0" />
+  <error name="Picture" number="1" />
+  <error name="PictOp" number="2" />
+  <error name="GlyphSet" number="3" />
+  <error name="Glyph" number="4" />
+
+  <struct name="DIRECTFORMAT">
+    <field type="CARD16" name="red_shift" />
+    <field type="CARD16" name="red_mask" />
+    <field type="CARD16" name="green_shift" />
+    <field type="CARD16" name="green_mask" />
+    <field type="CARD16" name="blue_shift" />
+    <field type="CARD16" name="blue_mask" />
+    <field type="CARD16" name="alpha_shift" />
+    <field type="CARD16" name="alpha_mask" />
+  </struct>
+
+  <struct name="PICTFORMINFO">
+    <field type="PICTFORMAT" name="id" />
+    <field type="CARD8" name="type" />
+    <field type="CARD8" name="depth" />
+    <pad bytes="2" />
+    <field type="DIRECTFORMAT" name="direct" />
+    <field type="COLORMAP" name="colormap" />
+  </struct>
+
+  <struct name="PICTVISUAL">
+    <field type="VISUALID" name="visual" />
+    <field type="PICTFORMAT" name="format" />
+  </struct>
+
+  <struct name="PICTDEPTH">
+    <field type="CARD8" name="depth" />
+    <pad bytes="1" />
+    <field type="CARD16" name="num_visuals" />
+    <pad bytes="4" />
+    <list type="PICTVISUAL" name="visuals">
+      <fieldref>num_visuals</fieldref>
+    </list>
+  </struct>
+
+  <struct name="PICTSCREEN">
+    <field type="CARD32" name="num_depths" />
+    <field type="PICTFORMAT" name="fallback" />
+    <list type="PICTDEPTH" name="depths">
+      <fieldref>num_depths</fieldref>
+    </list>
+  </struct>
+
+  <struct name="INDEXVALUE">
+    <field type="CARD32" name="pixel" />
+    <field type="CARD16" name="red" />
+    <field type="CARD16" name="green" />
+    <field type="CARD16" name="blue" />
+    <field type="CARD16" name="alpha" />
+  </struct>
+
+  <struct name="COLOR">
+    <field type="CARD16" name="red" />
+    <field type="CARD16" name="green" />
+    <field type="CARD16" name="blue" />
+    <field type="CARD16" name="alpha" />
+  </struct>
+
+  <struct name="POINTFIX">
+    <field type="FIXED" name="x" />
+    <field type="FIXED" name="y" />
+  </struct>
+
+  <struct name="LINEFIX">
+    <field type="POINTFIX" name="p1" />
+    <field type="POINTFIX" name="p2" />
+  </struct>
+
+  <struct name="TRIANGLE">
+    <field type="POINTFIX" name="p1" />
+    <field type="POINTFIX" name="p2" />
+    <field type="POINTFIX" name="p3" />
+  </struct>
+
+  <struct name="TRAP">
+    <field type="FIXED" name="top" />
+    <field type="FIXED" name="bottom" />
+    <field type="LINEFIX" name="left" />
+    <field type="LINEFIX" name="right" />
+  </struct>
+
+  <struct name="GLYPHINFO">
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <field type="INT16" name="x_off" />
+    <field type="INT16" name="y_off" />
+  </struct>
+
+
+  <request name="QueryVersion" opcode="0">
+    <field type="CARD32" name="client_major_version" />
+    <field type="CARD32" name="client_minor_version" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="major_version" />
+      <field type="CARD32" name="minor_version" />
+      <pad bytes="16" />
+    </reply>
+  </request>
+
+  <request name="QueryPictFormats" opcode="1">
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="num_formats" />
+      <field type="CARD32" name="num_screens" />
+      <field type="CARD32" name="num_depths" />
+      <field type="CARD32" name="num_visuals" />
+      <field type="CARD32" name="num_subpixel" /> <!-- new in version 0.6 -->
+      <pad bytes="4" />
+      <list type="PICTFORMINFO" name="formats">
+        <fieldref>num_formats</fieldref>
+      </list>
+      <list type="PICTSCREEN" name="screens">
+        <fieldref>num_screens</fieldref>
+      </list>
+      <list type="CARD32" name="subpixels">
+        <fieldref>num_subpixel</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <!-- from version 0.7 -->
+  <request name="QueryPictIndexValues" opcode="2">
+    <field type="PICTFORMAT" name="format" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="num_values" />
+      <pad bytes="20" />
+      <list type="INDEXVALUE" name="values">
+        <fieldref>num_values</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <!-- opcode 3 reserved for QueryDithers -->
+
+  <request name="CreatePicture" opcode="4">
+    <field type="PICTURE" name="pid" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="PICTFORMAT" name="format" />
+    <valueparam value-mask-type="CARD32"
+                value-mask-name="value_mask"
+                value-list-name="value_list" />
+  </request>
+
+  <request name="ChangePicture" opcode="5">
+    <field type="PICTURE" name="picture" />
+    <valueparam value-mask-type="CARD32"
+                value-mask-name="value_mask"
+                value-list-name="value_list" />
+  </request>
+
+  <request name="SetPictureClipRectangles" opcode="6">
+    <field type="PICTURE" name="picture" />
+    <field type="INT16" name="clip_x_origin" />
+    <field type="INT16" name="clip_y_origin" />
+    <list type="RECTANGLE" name="rectangles" />
+  </request>
+
+  <request name="FreePicture" opcode="7">
+    <field type="PICTURE" name="picture" />
+  </request>
+
+  <request name="Composite" opcode="8">
+    <field type="CARD8" name="op" />
+    <pad bytes="3" />
+    <field type="PICTURE" name="src" />
+    <field type="PICTURE" name="mask" />
+    <field type="PICTURE" name="dst" />
+    <field type="INT16" name="src_x" />
+    <field type="INT16" name="src_y" />
+    <field type="INT16" name="mask_x" />
+    <field type="INT16" name="mask_y" />
+    <field type="INT16" name="dst_x" />
+    <field type="INT16" name="dst_y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+  </request>
+
+  <!-- opcode 9 reserved for Scale -->
+
+  <request name="Trapezoids" opcode="10">
+    <field type="CARD8" name="op" />
+    <pad bytes="3" />
+    <field type="PICTURE" name="src" />
+    <field type="PICTURE" name="dst" />
+    <field type="PICTFORMAT" name="mask_format" />
+    <field type="INT16" name="src_x" />
+    <field type="INT16" name="src_y" />
+    <list type="TRAP" name="traps" />
+  </request>
+
+  <request name="Triangles" opcode="11">
+    <field type="CARD8" name="op" />
+    <pad bytes="3" />
+    <field type="PICTURE" name="src" />
+    <field type="PICTURE" name="dst" />
+    <field type="PICTFORMAT" name="mask_format" />
+    <field type="INT16" name="src_x" />
+    <field type="INT16" name="src_y" />
+    <list type="TRIANGLE" name="triangles" />
+  </request>
+
+  <request name="TriStrip" opcode="12">
+    <field type="CARD8" name="op" />
+    <pad bytes="3" />
+    <field type="PICTURE" name="src" />
+    <field type="PICTURE" name="dst" />
+    <field type="PICTFORMAT" name="mask_format" />
+    <field type="INT16" name="src_x" />
+    <field type="INT16" name="src_y" />
+    <list type="POINTFIX" name="points" />
+  </request>
+
+  <request name="TriFan" opcode="13">
+    <field type="CARD8" name="op" />
+    <pad bytes="3" />
+    <field type="PICTURE" name="src" />
+    <field type="PICTURE" name="dst" />
+    <field type="PICTFORMAT" name="mask_format" />
+    <field type="INT16" name="src_x" />
+    <field type="INT16" name="src_y" />
+    <list type="POINTFIX" name="points" />
+  </request>
+
+  <!-- opcode 14 reserved for ColorTrapezoids -->
+
+  <!-- opcode 15 reserved for ColorTriangles -->
+
+  <!-- opcode 16 reserved for Transform -->
+
+  <request name="CreateGlyphSet" opcode="17">
+    <field type="GLYPHSET" name="gsid" />
+    <field type="PICTFORMAT" name="format" />
+  </request>
+
+  <request name="ReferenceGlyphSet" opcode="18">
+    <field type="GLYPHSET" name="gsid" />
+    <field type="GLYPHSET" name="existing" />
+  </request>
+
+  <request name="FreeGlyphSet" opcode="19">
+    <field type="GLYPHSET" name="glyphset" />
+  </request>
+
+  <request name="AddGlyphs" opcode="20">
+    <field type="GLYPHSET" name="glyphset" />
+    <field type="CARD32" name="glyphs_len" />
+    <list type="CARD32" name="glyphids">
+      <fieldref>glyphs_len</fieldref>
+    </list>
+    <list type="GLYPHINFO" name="glyphs">
+      <fieldref>glyphs_len</fieldref>
+    </list>
+    <list type="BYTE" name="data" />
+  </request>
+
+  <!-- opcode 21 reserved for AddGlyphsFromPicture -->
+
+  <request name="FreeGlyphs" opcode="22">
+    <field type="GLYPHSET" name="glyphset" />
+    <list type="GLYPH" name="glyphs" />
+  </request>
+
+  <struct name="GLYPHSETELT">
+    <field type="CARD8" name="len" />
+    <pad bytes="3" />
+    <field type="INT16" name="deltax" />
+    <field type="INT16" name="deltay" />
+    <field type="GLYPHSET" name="glyphset" />
+  </struct>
+
+  <!-- CompositeGlyphs8 -->
+
+  <struct name="GLYPHELT8">
+    <field type="CARD8" name="len" />
+    <pad bytes="3" />
+    <field type="INT16" name="deltax" />
+    <field type="INT16" name="deltay" />
+    <list type="CARD8" name="glyphs">
+      <fieldref>len</fieldref>
+    </list>
+  </struct>
+
+  <union name="GLYPHITEM8">
+    <field type="GLYPHELT8" name="glyphelt" />
+    <field type="GLYPHSETELT" name="glyphset" />
+  </union>
+
+  <request name="CompositeGlyphs8" opcode="23">
+    <field type="CARD8" name="op" />
+    <pad bytes="3" />
+    <field type="PICTURE" name="src" />
+    <field type="PICTURE" name="dst" />
+    <field type="PICTFORMAT" name="mask_format" />
+    <field type="GLYPHSET" name="glyphset" />
+    <field type="INT16" name="src_x" />
+    <field type="INT16" name="src_y" />
+    <list type="GLYPHITEM8" name="glyphcmds" />
+  </request>
+
+  <!-- CompositeGlyphs16 -->
+
+  <struct name="GLYPHELT16">
+    <field type="CARD8" name="len" />
+    <pad bytes="3" />
+    <field type="INT16" name="deltax" />
+    <field type="INT16" name="deltay" />
+    <list type="CARD16" name="glyphs">
+      <fieldref>len</fieldref>
+    </list>
+  </struct>
+
+  <union name="GLYPHITEM16">
+    <field type="GLYPHELT16" name="glyphelt" />
+    <field type="GLYPHSETELT" name="glyphset" />
+  </union>
+
+  <request name="CompositeGlyphs16" opcode="24">
+    <field type="CARD8" name="op" />
+    <pad bytes="3" />
+    <field type="PICTURE" name="src" />
+    <field type="PICTURE" name="dst" />
+    <field type="PICTFORMAT" name="mask_format" />
+    <field type="GLYPHSET" name="glyphset" />
+    <field type="INT16" name="src_x" />
+    <field type="INT16" name="src_y" />
+    <list type="GLYPHITEM16" name="glyphcmds" />
+  </request>
+
+  <!-- CompositeGlyphs32 -->
+
+  <struct name="GLYPHELT32">
+    <field type="CARD8" name="len" />
+    <pad bytes="3" />
+    <field type="INT16" name="deltax" />
+    <field type="INT16" name="deltay" />
+    <list type="CARD32" name="glyphs">
+      <fieldref>len</fieldref>
+    </list>
+  </struct>
+
+  <union name="GLYPHITEM32">
+    <field type="GLYPHELT32" name="glyphelt" />
+    <field type="GLYPHSETELT" name="glyphset" />
+  </union>
+
+  <request name="CompositeGlyphs32" opcode="25">
+    <field type="CARD8" name="op" />
+    <pad bytes="3" />
+    <field type="PICTURE" name="src" />
+    <field type="PICTURE" name="dst" />
+    <field type="PICTFORMAT" name="mask_format" />
+    <field type="GLYPHSET" name="glyphset" />
+    <field type="INT16" name="src_x" />
+    <field type="INT16" name="src_y" />
+    <list type="GLYPHITEM32" name="glyphcmds" />
+  </request>
+
+  <!-- new in version 0.1 -->
+
+  <request name="FillRectangles" opcode="26">
+    <field type="CARD8" name="op" />
+    <pad bytes="3" />
+    <field type="PICTURE" name="dst" />
+    <field type="COLOR" name="color" />
+    <list type="RECTANGLE" name="rects" />
+  </request>
+
+  <!-- new in version 0.5 -->
+
+  <request name="CreateCursor" opcode="27">
+    <field type="CURSOR" name="cid" />
+    <field type="PICTURE" name="source" />
+    <field type="CARD16" name="x" />
+    <field type="CARD16" name="y" />
+  </request>
+
+  <!-- new in version 0.6 -->
+
+  <struct name="TRANSFORM">
+    <field type="FIXED" name="matrix11" />
+    <field type="FIXED" name="matrix12" />
+    <field type="FIXED" name="matrix13" />
+    <field type="FIXED" name="matrix21" />
+    <field type="FIXED" name="matrix22" />
+    <field type="FIXED" name="matrix23" />
+    <field type="FIXED" name="matrix31" />
+    <field type="FIXED" name="matrix32" />
+    <field type="FIXED" name="matrix33" />
+  </struct>
+
+  <request name="SetPictureTransform" opcode="28">
+    <field type="PICTURE" name="picture" />
+    <field type="TRANSFORM" name="transform" />
+  </request>
+
+  <request name="QueryFilters" opcode="29">
+    <field type="DRAWABLE" name="drawable" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="num_aliases" />
+      <field type="CARD32" name="num_filters" />
+      <pad bytes="16" />
+      <list type="CARD16" name="aliases">
+        <fieldref>num_aliases</fieldref>
+      </list>
+      <list type="STR" name="filters">
+        <fieldref>num_filters</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="SetPictureFilter" opcode="30">
+    <field type="PICTURE" name="picture" />
+    <field type="CARD16" name="filter_len" />
+    <list type="char" name="filter">
+      <fieldref>filter_len</fieldref>
+    </list>
+    <list type="FIXED" name="values" />
+  </request>
+
+  <!-- new in version 0.8 -->
+
+  <struct name="ANIMCURSORELT">
+    <field type="CURSOR" name="cursor" />
+    <field type="CARD32" name="delay" />
+  </struct>
+
+  <request name="CreateAnimCursor" opcode="31">
+    <field type="CURSOR" name="cid" />
+    <list type="ANIMCURSORELT" name="cursors" />
+  </request>
+</xcb>
diff --git a/src/extensions/res.xml b/src/extensions/res.xml
new file mode 100644 (file)
index 0000000..eda0cbe
--- /dev/null
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="res" extension-xname="X-Resource" extension-name="Res">
+    <struct name="Client">
+        <field type="CARD32" name="resource_base" />
+        <field type="CARD32" name="resource_mask" />
+    </struct>
+
+    <struct name="Type">
+        <field type="CARD32" name="resource_type" />
+        <field type="CARD32" name="count" />
+    </struct>
+
+    <request name="QueryVersion" opcode="0">
+        <field type="CARD8" name="client_major" />
+        <field type="CARD8" name="client_minor" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD16" name="server_major" />
+            <field type="CARD16" name="server_minor" />
+        </reply>
+    </request>
+
+    <request name="QueryClients" opcode="1">
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="num_clients" />
+            <pad bytes="20" />
+            <list type="Client" name="clients">
+                <fieldref>num_clients</fieldref>
+            </list>
+        </reply>
+    </request>
+
+    <request name="QueryClientResources" opcode="2">
+        <field type="CARD32" name="xid" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="num_types" />
+            <pad bytes="20" />
+            <list type="Type" name="types">
+                <fieldref>num_types</fieldref>
+            </list>
+        </reply>
+    </request>
+
+    <request name="QueryClientPixmapBytes" opcode="3">
+        <field type="CARD32" name="xid" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="bytes" />
+            <field type="CARD32" name="bytes_overflow" />
+        </reply>
+    </request>
+</xcb>
diff --git a/src/extensions/screensaver.xml b/src/extensions/screensaver.xml
new file mode 100644 (file)
index 0000000..18b5897
--- /dev/null
@@ -0,0 +1,128 @@
+<!--
+
+Copyright (C) 2005 Vincent Torri.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<!--
+Screen Saver Extension to the X Protocol
+Draft Standard Version 1.0
+-->
+<xcb header="screensaver" extension-xname="SCREENSAVER" extension-name="ScreenSaver">
+  <!-- Types -->
+
+  <enum name="KIND">
+    <item name="Blanked" />
+    <item name="Internal" />
+    <item name="External" />
+  </enum>
+
+  <enum name="EVENT">
+    <item name="NotifyMask">
+      <op op="&lt;&lt;"><value>1</value><value>0</value></op>
+    </item>
+    <item name="CycleMask">
+      <op op="&lt;&lt;"><value>1</value><value>1</value></op>
+    </item>
+  </enum>
+
+  <enum name="STATE">
+    <item name="Off" />
+    <item name="On" />
+    <item name="Cycle" />
+    <item name="Disabled" />
+  </enum>
+
+  <enum name="CLASS">
+    <item name="CopyFromParent" />
+    <item name="InputOutput" />
+    <item name="InputOnly" />
+  </enum>
+
+  <!-- Errors -->
+  <!-- Requests -->
+  <request name="QueryVersion" opcode="0">
+    <field type="CARD8" name="client_major_version"/>
+    <field type="CARD8" name="client_minor_version"/>
+    <pad bytes="2"/>
+    <reply>
+      <pad bytes="1"/>
+      <field type="CARD8" name="server_major_version"/>
+      <field type="CARD8" name="server_minor_version"/>
+      <pad bytes="22"/>
+    </reply>
+  </request>
+
+  <request name="QueryInfo" opcode="1">
+    <field type="DRAWABLE" name="drawable"/>
+    <reply>
+      <field type="CARD8" name="state"/>
+      <field type="WINDOW" name="saver_window"/>
+      <field type="CARD32" name="ms_until_server"/>
+      <field type="CARD32" name="ms_since_user_input"/>
+      <field type="CARD16" name="event_mask" />
+      <field type="KIND" name="kind"/>
+      <pad bytes="10"/>
+    </reply>
+  </request>
+
+  <request name="SelectInput" opcode="2">
+    <field type="DRAWABLE" name="drawable"/>
+    <field type="EVENT" name="event_mask" />
+  </request>
+
+  <request name="SetAttributes" opcode="3">
+    <field type="DRAWABLE" name="drawable"/>
+    <field type="INT16" name="x"/>
+    <field type="INT16" name="y"/>
+    <field type="CARD16" name="width"/>
+    <field type="CARD16" name="height"/>
+    <field type="CARD16" name="border_width"/>
+    <field type="CLASS" name="class"/>
+    <field type="CARD8" name="depth"/>
+    <field type="VISUALID" name="visual"/>
+    <valueparam value-mask-type="CARD32"
+                value-mask-name="value_mask"
+                value-list-name="value_list" />
+  </request>
+
+  <request name="UnsetAttributes" opcode="4">
+    <field type="DRAWABLE" name="drawable"/>
+  </request>
+
+  <!-- Events -->
+
+  <event name="Notify" number="0">
+    <field type="CARD8" name="code"/>
+    <field type="STATE" name="state"/>
+    <field type="CARD16" name="sequence_number"/>
+    <field type="TIMESTAMP" name="time"/>
+    <field type="WINDOW" name="root"/>
+    <field type="WINDOW" name="window"/>
+    <field type="KIND" name="kind"/>
+    <field type="BOOL" name="forced"/>
+    <pad bytes="14"/>
+  </event>
+
+</xcb>
diff --git a/src/extensions/shape.xml b/src/extensions/shape.xml
new file mode 100644 (file)
index 0000000..917388c
--- /dev/null
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="shape" extension-xname="SHAPE" extension-name="Shape">
+  <typedef oldname="CARD8" newname="SHAPE_OP" />
+  <typedef oldname="CARD8" newname="SHAPE_KIND" />
+
+  <!-- Shape attributes of type SHAPE_OP. -->
+  <enum name="SO">
+    <item name="Set" />
+    <item name="Union" />
+    <item name="Intersect" />
+    <item name="Substract" />
+    <item name="Invert" />
+  </enum>
+
+  <!-- Shape attributes of type SHAPE_KIND. -->
+  <enum name="SK">
+    <item name="Bounding" />
+    <item name="Clip" />
+  </enum>
+
+  <event name="Notify" number="0">
+    <field type="SHAPE_KIND" name="shape_kind" />
+    <field type="WINDOW" name="affected_window" />
+    <field type="INT16" name="extents_x" />
+    <field type="INT16" name="extents_y" />
+    <field type="CARD16" name="extents_width" />
+    <field type="CARD16" name="extents_height" />
+    <field type="TIMESTAMP" name="server_time" />
+    <field type="BOOL" name="shaped" />
+  </event>
+
+  <request name="QueryVersion" opcode="0">
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="major_version" />
+      <field type="CARD16" name="minor_version" />
+    </reply>
+  </request>
+
+  <request name="Rectangles" opcode="1">
+    <field type="SHAPE_OP" name="operation" />
+    <field type="SHAPE_KIND" name="destination_kind" />
+    <field type="BYTE" name="ordering" />
+    <pad bytes="1" />
+    <field type="WINDOW" name="destination_window" />
+    <field type="INT16" name="x_offset" />
+    <field type="INT16" name="y_offset" />
+    <list type="RECTANGLE" name="rectangles" />
+  </request>
+
+  <request name="Mask" opcode="2">
+    <field type="SHAPE_OP" name="operation" />
+    <field type="SHAPE_KIND" name="destination_kind" />
+    <pad bytes="2" />
+    <field type="WINDOW" name="destination_window" />
+    <field type="INT16" name="x_offset" />
+    <field type="INT16" name="y_offset" />
+    <field type="PIXMAP" name="source_bitmap" />
+  </request>
+
+  <request name="Combine" opcode="3">
+    <field type="SHAPE_OP" name="operation" />
+    <field type="SHAPE_KIND" name="destination_kind" />
+    <field type="SHAPE_KIND" name="source_kind" />
+    <pad bytes="1" />
+    <field type="WINDOW" name="destination_window" />
+    <field type="INT16" name="x_offset" />
+    <field type="INT16" name="y_offset" />
+    <field type="WINDOW" name="source_window" />
+  </request>
+
+  <request name="Offset" opcode="4">
+    <field type="SHAPE_KIND" name="destination_kind" />
+    <pad bytes="3" />
+    <field type="WINDOW" name="destination_window" />
+    <field type="INT16" name="x_offset" />
+    <field type="INT16" name="y_offset" />
+  </request>
+
+  <request name="QueryExtents" opcode="5">
+    <field type="WINDOW" name="destination_window" />
+    <reply>
+      <pad bytes="1" />
+      <field type="BOOL" name="bounding_shaped" />
+      <field type="BOOL" name="clip_shaped" />
+      <pad bytes="2" />
+      <field type="INT16" name="bounding_shape_extents_x" />
+      <field type="INT16" name="bounding_shape_extents_y" />
+      <field type="CARD16" name="bounding_shape_extents_width" />
+      <field type="CARD16" name="bounding_shape_extents_height" />
+      <field type="INT16" name="clip_shape_extents_x" />
+      <field type="INT16" name="clip_shape_extents_y" />
+      <field type="CARD16" name="clip_shape_extents_width" />
+      <field type="CARD16" name="clip_shape_extents_height" />
+    </reply>
+  </request>
+
+  <request name="SelectInput" opcode="6">
+    <field type="WINDOW" name="destination_window" />
+    <field type="BOOL" name="enable" />
+  </request>
+
+  <request name="InputSelected" opcode="7">
+    <field type="WINDOW" name="destination_window" />
+    <reply>
+      <field type="BOOL" name="enabled" />
+    </reply>
+  </request>
+
+  <request name="GetRectangles" opcode="8">
+    <field type="WINDOW" name="window" />
+    <field type="SHAPE_KIND" name="source_kind" />
+    <reply>
+      <field type="BYTE" name="ordering" />
+      <field type="CARD32" name="rectangles_len" />
+      <list type="RECTANGLE" name="rectangles">
+        <fieldref>rectangles_len</fieldref>
+      </list>
+    </reply>
+  </request>
+</xcb>
diff --git a/src/extensions/shm.xml b/src/extensions/shm.xml
new file mode 100644 (file)
index 0000000..28e8e1e
--- /dev/null
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="shm" extension-xname="MIT-SHM" extension-name="Shm">
+  <xidtype name="SEG" />
+
+  <event name="Completion" number="0">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="SEG" name="shmseg" />
+    <field type="CARD16" name="minor_event" />
+    <field type="BYTE" name="major_event" />
+    <pad bytes="1" />
+    <field type="CARD32" name="offset" />
+  </event>
+
+  <errorcopy name="BadSeg" number="0" ref="Value" />
+
+  <request name="QueryVersion" opcode="0">
+    <reply>
+      <field type="BOOL" name="shared_pixmaps" />
+      <field type="CARD16" name="major_version" />
+      <field type="CARD16" name="minor_version" />
+      <field type="CARD16" name="uid" />
+      <field type="CARD16" name="gid" />
+      <field type="CARD8" name="pixmap_format" />
+    </reply>
+  </request>
+
+  <request name="Attach" opcode="1">
+    <field type="SEG" name="shmseg" />
+    <field type="CARD32" name="shmid" />
+    <field type="BOOL" name="read_only" />
+  </request>
+
+  <request name="Detach" opcode="2">
+    <field type="SEG" name="shmseg" />
+  </request>
+
+  <request name="PutImage" opcode="3">
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <field type="CARD16" name="total_width" />
+    <field type="CARD16" name="total_height" />
+    <field type="CARD16" name="src_x" />
+    <field type="CARD16" name="src_y" />
+    <field type="CARD16" name="src_width" />
+    <field type="CARD16" name="src_height" />
+    <field type="INT16" name="dst_x" />
+    <field type="INT16" name="dst_y" />
+    <field type="CARD8" name="depth" />
+    <field type="CARD8" name="format" />
+    <field type="CARD8" name="send_event" />
+    <pad bytes="1" />
+    <field type="SEG" name="shmseg" />
+    <field type="CARD32" name="offset" />
+  </request>
+
+  <request name="GetImage" opcode="4">
+    <field type="DRAWABLE" name="drawable" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="CARD32" name="plane_mask" />
+    <field type="CARD8" name="format" />
+    <pad bytes="3" />
+    <field type="SEG" name="shmseg" />
+    <field type="CARD32" name="offset" />
+    <reply>
+      <field type="CARD8" name="depth" />
+      <field type="VISUALID" name="visual" />
+      <field type="CARD32" name="size" />
+    </reply>
+  </request>
+
+  <request name="CreatePixmap" opcode="5">
+    <field type="PIXMAP" name="pid" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="CARD8" name="depth" />
+    <pad bytes="3" />
+    <field type="SEG" name="shmseg" />
+    <field type="CARD32" name="offset" />
+  </request>
+</xcb>
diff --git a/src/extensions/sync.xml b/src/extensions/sync.xml
new file mode 100644 (file)
index 0000000..4c9e9f5
--- /dev/null
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Mikko Torni and Josh Triplett.
+All Rights Reserved.  See the file COPYING in this directory
+for licensing information.
+-->
+<xcb header="sync" extension-xname="SYNC" extension-name="Sync">
+  <xidtype name="ALARM" />
+
+  <enum name="ALARMSTATE">
+    <item name="Active" />
+    <item name="Inactive" />
+    <item name="Destroyed" />
+  </enum>
+
+  <xidtype name="COUNTER" />
+
+  <enum name="TESTTYPE">
+    <item name="PositiveTransition" />
+    <item name="NegativeTransition" />
+    <item name="PositiveComparison" />
+    <item name="NegativeComparison" />
+  </enum>
+
+  <enum name="VALUETYPE">
+    <item name="Absolute" />
+    <item name="Relative" />
+  </enum>
+
+  <struct name="INT64">
+    <field type="INT32" name="hi" />
+    <field type="CARD32" name="lo" />
+  </struct>
+
+  <struct name="SYSTEMCOUNTER">
+    <field type="COUNTER" name="counter" />
+    <field type="INT64" name="resolution" />
+    <field type="CARD16" name="name_len" />
+    <list type="CARD8" name="name">
+      <fieldref>name_len</fieldref>
+    </list>
+  </struct>
+
+  <struct name="TRIGGER">
+    <field type="COUNTER" name="counter" />
+    <field type="VALUETYPE" name="wait_type" />
+    <field type="INT64" name="wait_value" />
+    <field type="TESTTYPE" name="test_type" />
+  </struct>
+
+  <struct name="WAITCONDITION">
+    <field type="TRIGGER" name="trigger" />
+    <field type="INT64" name="event_threshold" />
+  </struct>
+
+  <error name="Counter" number="0">
+    <field type="CARD32" name="bad_counter" />
+    <field type="CARD16" name="minor_opcode" />
+    <field type="CARD8" name="major_opcode" />
+  </error>
+
+  <error name="Alarm" number="1">
+    <field type="CARD32" name="bad_alarm" />
+    <field type="CARD16" name="minor_opcode" />
+    <field type="CARD8" name="major_opcode" />
+  </error>
+    
+  <request name="Initialize" opcode="0">
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD8" name="major_version" />
+      <field type="CARD8" name="minor_version" />
+    </reply>
+  </request>
+
+  <request name="ListSystemCounters" opcode="1">
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="counters_len" />
+      <pad bytes="20" />
+      <list type="SYSTEMCOUNTER" name="counters">
+        <fieldref>counters_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="CreateCounter" opcode="2">
+    <field type="COUNTER" name="id" />
+    <field type="INT64" name="initial_value" />
+  </request>
+
+  <request name="DestroyCounter" opcode="6">
+    <field type="COUNTER" name="counter" />
+  </request>
+
+  <request name="QueryCounter" opcode="5">
+    <field type="COUNTER" name="counter" />
+    <reply>
+      <pad bytes="1" />
+      <field type="INT64" name="counter_value" />
+    </reply>
+  </request>
+
+  <request name="Await" opcode="7">
+    <list type="WAITCONDITION" name="wait_list" />
+  </request>
+
+  <request name="ChangeCounter" opcode="4">
+    <field type="COUNTER" name="counter" />
+    <field type="INT64" name="amount" />
+  </request>
+
+  <request name="SetCounter" opcode="3">
+    <field type="COUNTER" name="counter" />
+    <field type="INT64" name="value" />
+  </request>
+
+  <request name="CreateAlarm" opcode="8">
+    <field type="ALARM" name="id" />
+    <valueparam value-mask-type="CARD32"
+                value-mask-name="value_mask"
+                value-list-name="value_list" />
+  </request>
+
+  <request name="ChangeAlarm" opcode="9">
+    <field type="ALARM" name="id" />
+    <valueparam value-mask-type="CARD32"
+                value-mask-name="value_mask"
+                value-list-name="value_list" />
+  </request>
+
+  <request name="DestroyAlarm" opcode="11">
+    <field type="ALARM" name="alarm" />
+  </request>
+
+  <request name="QueryAlarm" opcode="10">
+    <field type="ALARM" name="alarm" />
+    <reply>
+      <pad bytes="1" />
+      <field type="TRIGGER" name="trigger" />
+      <field type="INT64" name="delta" />
+      <field type="BOOL" name="events" />
+      <field type="ALARMSTATE" name="state" />
+    </reply>
+  </request>
+
+  <request name="SetPriority" opcode="12">
+    <field type="CARD32" name="id" />
+    <field type="INT32" name="priority" />
+  </request>
+    
+  <request name="GetPriority" opcode="13">
+    <field type="CARD32" name="id" />
+    <reply>
+      <pad bytes="1" />
+      <field type="INT32" name="priority" />
+    </reply>
+  </request>
+
+  <event name="CounterNotify" number="0">
+    <field type="CARD8" name="kind" />
+    <field type="COUNTER" name="counter" />
+    <field type="INT64" name="wait_value" />
+    <field type="INT64" name="counter_value" />
+    <field type="TIMESTAMP" name="timestamp" />
+    <field type="CARD16" name="count" />
+    <field type="BOOL" name="destroyed" />
+  </event>
+
+  <event name="AlarmNotify" number="1">
+    <field type="CARD8" name="kind" />
+    <field type="ALARM" name="alarm" />
+    <field type="INT64" name="counter_value" />
+    <field type="INT64" name="alarm_value" />
+    <field type="TIMESTAMP" name="timestamp" />
+  </event>
+</xcb>
diff --git a/src/extensions/xc_misc.xml b/src/extensions/xc_misc.xml
new file mode 100644 (file)
index 0000000..5eb0591
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Mikko Torni and Josh Triplett.
+All Rights Reserved.  See the file COPYING in this directory
+for licensing information.
+-->
+<xcb header="xc_misc" extension-xname="XC-MISC" extension-name="XCMisc">
+  <request name="GetVersion" opcode="0">
+    <field type="CARD16" name="client_major_version" />
+    <field type="CARD16" name="client_minor_version" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="server_major_version" />
+      <field type="CARD16" name="server_minor_version" />
+    </reply>
+  </request>
+
+  <request name="GetXIDRange" opcode="1">
+    <reply>
+      <pad bytes="1" />
+      <field type="XID" name="start_id" />
+      <field type="CARD32" name="count" />
+    </reply>
+  </request>
+
+  <request name="GetXIDList" opcode="2">
+    <field type="CARD32" name="count" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="ids_len" />
+      <pad bytes="20" />
+      <list type="XID" name="ids">
+        <fieldref>ids_len</fieldref>
+      </list>
+    </reply>
+  </request>
+</xcb>
diff --git a/src/extensions/xevie.xml b/src/extensions/xevie.xml
new file mode 100644 (file)
index 0000000..1e5851f
--- /dev/null
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett.  All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<!-- This file describes version 1 of XEVIE. -->
+<xcb header="xevie" extension-xname="XEVIE" extension-name="Xevie">
+  <request name="QueryVersion" opcode="0">
+    <field type="CARD16" name="client_major_version" />
+    <field type="CARD16" name="client_minor_version" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="server_major_version" />
+      <field type="CARD16" name="server_minor_version" />
+      <pad bytes="20" />
+    </reply>
+  </request>
+
+  <request name="Start" opcode="1">
+    <field type="CARD32" name="screen" />
+    <reply>
+      <pad bytes="1" />
+      <pad bytes="24" />
+    </reply>
+  </request>
+
+  <request name="End" opcode="2">
+    <field type="CARD32" name="cmap" />
+    <reply>
+      <pad bytes="1" />
+      <pad bytes="24" />
+    </reply>
+  </request>
+
+  <enum name="Datatype">
+    <item name="Unmodified" />
+    <item name="Modified" />
+  </enum>
+
+  <!-- The Send request needs to send an arbitrary Event; this type is used
+       to reserve the necessary structure size. -->
+  <struct name="Event">
+    <pad bytes="32" />
+  </struct>
+
+  <request name="Send" opcode="3">
+    <field type="Event" name="event" />
+    <field type="CARD32" name="data_type" /> <!-- Datatype -->
+    <pad bytes="64" />
+    <reply>
+      <pad bytes="1" />
+      <pad bytes="24" />
+    </reply>
+  </request>
+
+  <request name="SelectInput" opcode="4">
+    <field type="CARD32" name="event_mask" />
+    <reply>
+      <pad bytes="1" />
+      <pad bytes="24" />
+    </reply>
+  </request>
+</xcb>
diff --git a/src/extensions/xf86dri.xml b/src/extensions/xf86dri.xml
new file mode 100644 (file)
index 0000000..bb37ca7
--- /dev/null
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2005 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<xcb header="xf86dri" extension-xname="XFree86-DRI" extension-name="XF86Dri">
+
+    <!-- Using http://dri.sourceforge.net/doc/dri_extensions_low_level.txt -->
+
+    <!-- Types -->
+
+    <struct name="DrmClipRect">
+       <field type="INT16" name="x1" />
+       <field type="INT16" name="y1" />
+       <field type="INT16" name="x2" />
+       <field type="INT16" name="x3" />
+    </struct>
+       
+    <!-- Requests -->
+    <request name="QueryVersion" opcode="0">
+       <reply>
+           <pad bytes="1" />
+           <field type="CARD16" name="dri_major_version" />
+           <field type="CARD16" name="dri_minor_version" />
+           <field type="CARD32" name="dri_minor_patch" />
+       </reply>
+    </request>
+
+    <request name="QueryDirectRenderingCapable" opcode="1">
+       <field type="CARD32" name="screen" />
+       <reply>
+           <pad bytes="1" />
+           <field type="BOOL" name="is_capable" />
+       </reply>
+    </request>
+
+    <request name="OpenConnection" opcode="2">
+       <field type="CARD32" name="screen" />
+       <reply>
+           <pad bytes="1" />
+           <field type="CARD32" name="drm_client_key_low" />
+           <field type="CARD32" name="drm_client_key_high" />
+           <field type="CARD32" name="sarea_handle_low" />
+           <field type="CARD32" name="sarea_handle_high" />
+           <field type="CARD32" name="bus_id_len" />
+           <pad bytes="12" />
+           <list type="CARD8" name="bus_id">
+               <fieldref>bus_id_len</fieldref>
+           </list>
+       </reply>
+    </request>
+
+    <request name="CloseConnection" opcode="3">
+       <field type="CARD32" name="screen" />
+    </request>
+
+    <request name="GetClientDriverName" opcode="4">
+       <field type="CARD32" name="screen" />
+       <reply>
+           <pad bytes="1" />
+           <field type="CARD32" name="client_driver_major_version" />
+           <field type="CARD32" name="client_driver_minor_version" />
+           <field type="CARD32" name="client_driver_patch_version" />
+           <field type="CARD32" name="client_driver_name_len" />
+           <pad bytes="8" />
+           <list type="CARD8" name="client_driver_name">
+               <fieldref>client_driver_name_len</fieldref>
+           </list>
+       </reply>
+    </request>
+
+    <request name="CreateContext" opcode="5">
+       <field type="CARD32" name="visual" />
+       <field type="CARD32" name="screen" />
+       <field type="CARD32" name="context" />
+       <reply>
+           <pad bytes="1" />
+           <field type="CARD32" name="hw_context" />
+       </reply>
+    </request>
+
+    <request name="DestroyContext" opcode="6">
+       <field type="CARD32" name="screen" />
+       <field type="CARD32" name="context" />
+    </request>
+
+    <request name="CreateDrawable" opcode="7">
+       <field type="CARD32" name="screen" />
+       <field type="CARD32" name="drawable" />
+       <reply>
+           <pad bytes="1" />
+           <field type="CARD32" name="hw_drawable_handle" />
+       </reply>
+    </request>
+
+    <request name="DestroyDrawable" opcode="8">
+       <field type="CARD32" name="screen" />
+       <field type="CARD32" name="drawable" />
+    </request>
+
+    <request name="GetDrawableInfo" opcode="9">
+       <field type="CARD32" name="screen" />
+       <field type="CARD32" name="drawable" />
+       <reply>
+           <pad bytes="1" />
+           <field type="CARD32" name="drawable_table_index" />
+           <field type="CARD32" name="drawable_table_stamp" />
+           <field type="INT16" name="drawable_origin_X" />
+           <field type="INT16" name="drawable_origin_Y" />
+           <field type="INT16" name="drawable_size_W" />
+           <field type="INT16" name="drawable_size_H" />
+           <field type="CARD32" name="num_clip_rects" />
+           <pad bytes="4" />
+           <list type="DrmClipRect" name="clip_rects">
+               <fieldref>num_clip_rects</fieldref>
+           </list>
+       </reply>
+    </request>
+
+    <request name="GetDeviceInfo" opcode="10">
+       <field type="CARD32" name="screen" />
+       <reply>
+           <pad bytes="1" />
+           <field type="CARD32" name="framebuffer_handle_low" />
+           <field type="CARD32" name="framebuffer_handle_high" />
+           <field type="CARD32" name="framebuffer_origin_offset" />
+           <field type="CARD32" name="framebuffer_size" />
+           <field type="CARD32" name="framebuffer_stride" />
+           <field type="CARD32" name="device_private_size" />
+           <list type="CARD32" name="device_private">
+               <fieldref>device_private_size</fieldref>
+           </list>
+       </reply>
+    </request>
+
+    <!-- Not in this doc, but specified in Mesa/src/glx/x11/xf86dri.h -->
+    <request name="AuthConnection" opcode="11">
+       <field type="CARD32" name="screen" />
+       <field type="CARD32" name="magic" />
+       <reply>
+           <pad bytes="1" />
+           <field type="CARD32" name="authenticated" />
+       </reply>
+    </request>     
+</xcb>
diff --git a/src/extensions/xfixes.xml b/src/extensions/xfixes.xml
new file mode 100644 (file)
index 0000000..ab59637
--- /dev/null
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett.  All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<!-- This file describes version 3 of XFixes. -->
+<xcb header="xfixes" extension-xname="XFIXES" extension-name="XFixes">
+  <import>render</import>
+  <import>shape</import>
+
+  <!-- Version 1 -->
+  <request name="QueryVersion" opcode="0">
+    <field type="CARD32" name="client_major_version" />
+    <field type="CARD32" name="client_minor_version" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="major_version" />
+      <field type="CARD32" name="minor_version" />
+      <pad bytes="16" />
+    </reply>
+  </request>
+
+  <enum name="SaveSetMode">
+    <item name="Insert" />
+    <item name="Delete" />
+  </enum>
+
+  <enum name="SaveSetTarget">
+    <item name="Nearest" />
+    <item name="Root" />
+  </enum>
+
+  <enum name="SaveSetMapping">
+    <item name="Map" />
+    <item name="Unmap" />
+  </enum>
+
+  <request name="ChangeSaveSet" opcode="1">
+    <field type="BYTE" name="mode" />   <!-- SaveSetMode -->
+    <field type="BYTE" name="target" /> <!-- SaveSetTarget -->
+    <field type="BYTE" name="map" />    <!-- SaveSetMapping -->
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+  </request>
+
+  <enum name="SelectionEvent">
+    <item name="SetSelectionOwner" />
+    <item name="SelectionWindowDestroy" />
+    <item name="SelectionClientClose" />
+  </enum>
+
+  <enum name="SelectionEventMask">
+    <item name="SetSelectionOwner">
+      <op op="&lt;&lt;"><value>1</value><value>0</value></op>
+    </item>
+    <item name="SelectionWindowDestroy">
+      <op op="&lt;&lt;"><value>1</value><value>1</value></op>
+    </item>
+    <item name="SelectionClientClose">
+      <op op="&lt;&lt;"><value>1</value><value>2</value></op>
+    </item>
+  </enum>
+
+  <event name="SelectionNotify" number="0">
+    <field type="CARD8"     name="subtype" /> <!-- SelectionEvent -->
+    <field type="WINDOW"    name="window" />
+    <field type="WINDOW"    name="owner" />
+    <field type="ATOM"      name="selection" />
+    <field type="TIMESTAMP" name="timestamp" />
+    <field type="TIMESTAMP" name="selection_timestamp" />
+    <pad bytes="8" />
+  </event>
+
+  <request name="SelectSelectionInput" opcode="2">
+    <field type="WINDOW" name="window" />
+    <field type="ATOM"   name="selection" />
+    <field type="CARD32" name="event_mask" /> <!-- SelectionEventMask -->
+  </request>
+
+  <enum name="CursorNotify">
+    <item name="DisplayCursor" />
+  </enum>
+
+  <enum name="CursorNotifyMask">
+    <item name="DisplayCursor">
+      <op op="&lt;&lt;"><value>1</value><value>0</value></op>
+    </item>
+  </enum>
+
+  <event name="CursorNotify" number="1">
+    <field type="CARD8"     name="subtype" /> <!-- CursorNotify -->
+    <field type="WINDOW"    name="window" />
+    <field type="CARD32"    name="cursor_serial" />
+    <field type="TIMESTAMP" name="timestamp" />
+    <field type="ATOM"      name="name" /> <!-- Added in version 2 -->
+    <pad bytes="12" />
+  </event>
+
+  <request name="SelectCursorInput" opcode="3">
+    <field type="WINDOW" name="window" />
+    <field type="CARD32" name="event_mask" /> <!-- CursorNotifyMask -->
+  </request>
+
+  <request name="GetCursorImage" opcode="4">
+    <reply>
+      <pad bytes="1" />
+      <field type="INT16"  name="x" />
+      <field type="INT16"  name="y" />
+      <field type="CARD16" name="width" />
+      <field type="CARD16" name="height" />
+      <field type="CARD16" name="xhot" />
+      <field type="CARD16" name="yhot" />
+      <field type="CARD32" name="cursor_serial" />
+      <pad bytes="8" />
+      <list  type="CARD32" name="cursor_image">
+        <op op="*">
+          <fieldref>width</fieldref>
+          <fieldref>height</fieldref>
+        </op>
+      </list>
+    </reply>
+  </request>
+
+  <!-- Version 2 -->
+
+  <xidtype name="REGION" />
+
+  <error name="BadRegion" number="0" />
+
+  <request name="CreateRegion" opcode="5">
+    <field type="REGION"    name="region" />
+    <list  type="RECTANGLE" name="rectangles" />
+  </request>
+
+  <request name="CreateRegionFromBitmap" opcode="6">
+    <field type="REGION" name="region" />
+    <field type="PIXMAP" name="bitmap" />
+  </request>
+
+  <request name="CreateRegionFromWindow" opcode="7">
+    <field type="REGION"     name="region" />
+    <field type="WINDOW"     name="window" />
+    <field type="SHAPE_KIND" name="kind" />
+    <pad bytes="3" />
+  </request>
+
+  <request name="CreateRegionFromGC" opcode="8">
+    <field type="REGION"   name="region" />
+    <field type="GCONTEXT" name="gc" />
+  </request>
+
+  <request name="CreateRegionFromPicture" opcode="9">
+    <field type="REGION"  name="region" />
+    <field type="PICTURE" name="picture" />
+  </request>
+
+  <request name="DestroyRegion" opcode="10">
+    <field type="REGION"  name="region" />
+  </request>
+
+  <request name="SetRegion" opcode="11">
+    <field type="REGION"    name="region" />
+    <list  type="RECTANGLE" name="rectangles" />
+  </request>
+
+  <request name="CopyRegion" opcode="12">
+    <field type="REGION" name="source" />
+    <field type="REGION" name="destination" />
+  </request>
+
+  <request name="UnionRegion" opcode="13">
+    <field type="REGION" name="source1" />
+    <field type="REGION" name="source2" />
+    <field type="REGION" name="destination" />
+  </request>
+
+  <request name="IntersectRegion" opcode="14">
+    <field type="REGION" name="source1" />
+    <field type="REGION" name="source2" />
+    <field type="REGION" name="destination" />
+  </request>
+
+  <request name="SubtractRegion" opcode="15">
+    <field type="REGION" name="source1" />
+    <field type="REGION" name="source2" />
+    <field type="REGION" name="destination" />
+  </request>
+
+  <request name="InvertRegion" opcode="16">
+    <field type="REGION"    name="source" />
+    <field type="RECTANGLE" name="bounds" />
+    <field type="REGION"    name="destination" />
+  </request>
+
+  <request name="TranslateRegion" opcode="17">
+    <field type="REGION" name="region" />
+    <field type="INT16"  name="dx" />
+    <field type="INT16"  name="dy" />
+  </request>
+
+  <request name="RegionExtents" opcode="18">   
+    <field type="REGION" name="source" />
+    <field type="REGION" name="destination" />
+  </request>
+
+  <request name="FetchRegion" opcode="19">
+    <field type="REGION" name="region" />
+    <reply>
+      <pad bytes="1" />
+      <field type="RECTANGLE" name="extents" />
+      <pad bytes="16" />
+      <list  type="RECTANGLE" name="rectangles" />
+    </reply>
+  </request>
+
+  <request name="SetGCClipRegion" opcode="20">
+    <field type="GCONTEXT" name="gc" />
+    <field type="REGION"   name="region" />
+    <field type="INT16"    name="x_origin" />
+    <field type="INT16"    name="y_origin" />
+  </request>
+
+  <request name="SetWindowShapeRegion" opcode="21">
+    <field type="WINDOW"     name="dest" />
+    <field type="SHAPE_KIND" name="dest_kind" />
+    <pad bytes="3" />
+    <field type="INT16"      name="x_offset" />
+    <field type="INT16"      name="y_offset" />
+    <field type="REGION"     name="region" />
+  </request>
+
+  <request name="SetPictureClipRegion" opcode="22">
+    <field type="PICTURE" name="picture" />
+    <field type="REGION"  name="region" />
+    <field type="INT16"   name="x_origin" />
+    <field type="INT16"   name="y_origin" />
+  </request>
+
+  <request name="SetCursorName" opcode="23">
+    <field type="CURSOR" name="cursor" />
+    <field type="CARD16" name="nbytes" />
+    <pad bytes="2" />
+    <list  type="CARD8"  name="name"><fieldref>nbytes</fieldref></list>
+  </request>
+
+  <request name="GetCursorName" opcode="24">
+    <field type="CURSOR" name="cursor" />
+    <reply>
+      <pad bytes="1" />
+      <field type="ATOM"   name="atom" />
+      <field type="CARD16" name="nbytes" />
+      <pad bytes="18" />
+      <list  type="CARD8"  name="name"><fieldref>nbytes</fieldref></list>
+    </reply>
+  </request>
+
+  <request name="GetCursorImageAndName" opcode="25">
+    <reply>
+      <pad bytes="1" />
+      <field type="INT16"  name="x" />
+      <field type="INT16"  name="y" />
+      <field type="CARD16" name="width" />
+      <field type="CARD16" name="height" />
+      <field type="CARD16" name="xhot" />
+      <field type="CARD16" name="yhot" />
+      <field type="CARD32" name="cursor_serial" />
+      <field type="ATOM"   name="cursor_atom" />
+      <field type="CARD16" name="nbytes" />
+      <pad bytes="2" />
+      <list  type="CARD8"  name="name"><fieldref>nbytes</fieldref></list>
+      <list  type="CARD32" name="cursor_image">
+        <op op="*">
+          <fieldref>width</fieldref>
+          <fieldref>height</fieldref>
+        </op>
+      </list>
+    </reply>
+  </request>
+
+  <request name="ChangeCursor" opcode="26">
+    <field type="CURSOR" name="source" />
+    <field type="CURSOR" name="destination" />
+  </request>
+
+  <request name="ChangeCursorByName" opcode="27">
+    <field type="CURSOR" name="src" />
+    <field type="CARD16" name="nbytes" />
+    <pad bytes="2" />
+    <list  type="CARD8"  name="name"><fieldref>nbytes</fieldref></list>
+  </request>
+
+  <!-- Version 3 -->
+  <request name="ExpandRegion" opcode="28">
+    <field type="REGION" name="source" />
+    <field type="REGION" name="destination" />
+    <field type="CARD16" name="left" />
+    <field type="CARD16" name="right" />
+    <field type="CARD16" name="top" />
+    <field type="CARD16" name="bottom" />
+  </request>
+</xcb>
diff --git a/src/extensions/xprint.xml b/src/extensions/xprint.xml
new file mode 100644 (file)
index 0000000..dbabbde
--- /dev/null
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2005 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<xcb header="xprint" extension-xname="XpExtension" extension-name="XP">
+
+    <!-- Conforms to XPRINT 1.0 -->
+    
+    <!-- Types -->
+    <struct name="PRINTER">
+        <field type="CARD32" name="nameLen" />
+        <list type="STRING8" name="name">
+            <fieldref>nameLen</fieldref>
+        </list>
+        <!-- Padding -->
+        <field type="CARD32" name="descLen" />
+        <list type="STRING8" name="description">
+            <fieldref>descLen</fieldref>
+        </list>
+        <!-- More padding -->
+    </struct>
+
+    <!--<typedef oldname="CARD32" newname="PCONTEXT" />-->
+    <xidtype name="PCONTEXT" />
+    <typedef oldname="char" newname="STRING8" />
+
+    <!-- "PrintGetDocumentData" -->
+    <enum name="GetDoc">
+        <item name="Finished">0</item>
+            <item name="SecondConsumer">1</item>
+    </enum>
+
+    <!-- Event Mask ("PrintSelectInput") -->
+    <enum name="EvMask">
+        <item name="NoEventMask">0x00000000</item>
+        <item name="PrintMask">0x00000001</item>
+        <item name="AttributeMask">0x00000002</item>
+    </enum>
+
+    <!-- "PrintNotify" detail -->
+    <enum name="Detail">
+        <item name="StartJobNotify">1</item>
+        <item name="EndJobNotify">2</item>
+        <item name="StartDocNotify">3</item>
+        <item name="EndDocNotify">4</item>
+        <item name="StartPageNotify">5</item>
+        <item name="EndPageNotify">6</item>
+    </enum>
+
+    <!-- "AttributeNotify" detail -->
+    <enum name="Attr">
+        <item name="JobAttr">1</item>
+        <item name="DocAttr">2</item>
+        <item name="PageAttr">3</item>
+        <item name="PrinterAttr">4</item>
+        <item name="ServerAttr">5</item>
+        <item name="MediumAttr">6</item>
+        <item name="SpoolerAttr">7</item>
+    </enum>
+    
+    
+    <!-- Requests -->
+    <request name="PrintQueryVersion" opcode="0">
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD16" name="major_version" />
+            <field type="CARD16" name="minor_version" />
+        </reply>
+    </request>
+
+    <request name="PrintGetPrinterList" opcode="1">
+        <field type="CARD32" name="printerNameLen" />
+        <field type="CARD32" name="localeLen" />
+        <list type="STRING8" name="printer_name">
+            <fieldref>printerNameLen</fieldref>
+        </list>
+        <!-- There's some padding in here... -->
+        <list type="STRING8" name="locale">
+            <fieldref>localeLen</fieldref>
+        </list>
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="listCount" />
+            <pad bytes="20" />
+            <list type="PRINTER" name="printers">
+                <fieldref>listCount</fieldref>
+            </list>
+        </reply>
+    </request>
+
+    <request name="PrintRehashPrinterList" opcode="20" />
+
+    <request name="CreateContext" opcode="2">
+        <field type="CARD32" name="context_id" />
+        <field type="CARD32" name="printerNameLen" />
+        <field type="CARD32" name="localeLen" />
+        <list type="STRING8" name="printerName">
+            <fieldref>printerNameLen</fieldref>
+        </list>
+        <!-- padding -->
+        <list type="STRING8" name="locale">
+            <fieldref>localeLen</fieldref>
+        </list>
+    </request>
+
+    <request name="PrintSetContext" opcode="3">
+        <field type="CARD32" name="context" />
+    </request>
+
+    <request name="PrintGetContext" opcode="4">
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="context" />
+        </reply>
+    </request>
+
+    <request name="PrintDestroyContext" opcode="5">
+        <field type="CARD32" name="context" />
+    </request>
+
+    <request name="PrintGetScreenOfContext" opcode="6">
+        <reply>
+            <pad bytes="1" />
+            <field type="WINDOW" name="root" />
+        </reply>
+    </request>
+
+    <request name="PrintStartJob" opcode="7">
+        <field type="CARD8" name="output_mode"/>
+    </request>
+
+    <request name="PrintEndJob" opcode="8">
+        <field type="BOOL"  name="cancel" />
+    </request>
+
+    <request name="PrintStartDoc" opcode="9">
+        <field type="CARD8" name="driver_mode" />
+    </request>
+
+    <request name="PrintEndDoc" opcode="10">
+        <field type="BOOL" name="cancel" />
+    </request>
+
+    <request name="PrintPutDocumentData" opcode="11">
+        <field type="DRAWABLE" name="drawable" />
+        <field type="CARD32" name="len_data" />
+        <field type="CARD16" name="len_fmt" />
+        <field type="CARD16" name="len_options" />
+        <list type="BYTE" name="data">
+            <fieldref>len_data</fieldref>
+        </list>
+        <!-- padding -->
+        <list type="STRING8" name="doc_format" />
+        <!-- padding -->
+        <list type="STRING8" name="options" />
+    </request>
+
+    <request name="PrintGetDocumentData" opcode="12">
+        <field type="PCONTEXT" name="context" />
+        <field type="CARD32" name="max_bytes" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="status_code" />
+            <field type="CARD32" name="finished_flag" />
+            <field type="CARD32" name="dataLen" />
+            <pad bytes="12" />
+            <list type="BYTE" name="data">
+                <fieldref>dataLen</fieldref>
+            </list>
+        </reply>
+    </request>
+
+    <request name="PrintStartPage" opcode="13">
+        <field type="WINDOW" name="window" />
+    </request>
+
+    <request name="PrintEndPage" opcode="14">
+        <field type="BOOL" name="cancel" />
+        <pad bytes="3" />
+    </request>
+
+    <request name="PrintSelectInput" opcode="15">
+        <field type="PCONTEXT" name="context" />
+        <valueparam value-mask-type="CARD32"
+                    value-mask-name="event_mask"
+                    value-list-name="event_list" />
+    </request>
+
+    <request name="PrintInputSelected" opcode="16">
+        <field type="PCONTEXT" name="context" />
+        <reply>
+            <pad bytes="1" />
+            <valueparam value-mask-type="CARD32"
+                            value-mask-name="event_mask"
+                            value-list-name="event_list" />
+            <valueparam value-mask-type="CARD32"
+                            value-mask-name="all_events_mask"
+                            value-list-name="all_events_list" />
+        </reply>
+    </request>
+
+    <request name="PrintGetAttributes" opcode="17">
+        <field type="PCONTEXT" name="context" />
+        <field type="CARD8" name="pool" />
+        <pad bytes="3" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="stringLen" />
+            <pad bytes="20" />
+            <field type="STRING8" name="attributes" />
+        </reply>
+    </request>
+
+    <request name="PrintGetOneAttributes" opcode="19">
+        <field type="PCONTEXT" name="context" />
+        <field type="CARD32" name="nameLen" />
+        <field type="CARD8" name="pool" />
+        <pad bytes="3" />
+        <list type="STRING8" name="name">
+            <fieldref>nameLen</fieldref>
+        </list>
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="valueLen" />
+            <pad bytes="20" />
+            <list type="STRING8" name="value">
+                <fieldref>valueLen</fieldref>
+            </list>
+        </reply>
+    </request>
+
+    <request name="PrintSetAttributes" opcode="18">
+        <field type="PCONTEXT" name="context" />
+        <field type="CARD32" name="stringLen" />
+        <field type="CARD8" name="pool" />
+        <field type="CARD8" name="rule" />
+        <pad bytes="2" />
+        <list type="STRING8" name="attributes" />
+    </request>
+
+    <request name="PrintGetPageDimensions" opcode="21">
+        <field type="PCONTEXT" name="context" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD16" name="width" />
+            <field type="CARD16" name="height" />
+            <field type="CARD16" name="offset_x" />
+            <field type="CARD16" name="offset_y" />
+            <field type="CARD16" name="reproducible_width" />
+            <field type="CARD16" name="reproducible_height" />
+        </reply>
+    </request>
+
+    <request name="PrintQueryScreens" opcode="22">
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="listCount" />
+            <pad bytes="20" />
+            <list type="WINDOW" name="roots">
+                <fieldref>listCount</fieldref>
+            </list>
+            <!-- There may be a WINDOW rootWindow here... -->
+        </reply>
+    </request>
+
+    <request name="PrintSetImageResolution" opcode="23">
+        <field type="PCONTEXT" name="context" />
+        <field type="CARD16" name="image_resolution" />
+        <reply>
+            <field type="BOOL" name="status" />
+            <field type="CARD16" name="previous_resolutions" />
+        </reply>
+    </request>
+
+    <request name="PrintGetImageResolution" opcode="24">
+        <field type="PCONTEXT" name="context" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD16" name="image_resolution" />
+        </reply>
+    </request>
+
+
+    <!-- Events -->
+    <event name="Notify" number="0">
+        <field type="CARD8" name="detail" />
+        <field type="PCONTEXT" name="context" />
+        <field type="BOOL" name="cancel" />
+    </event>
+
+    <event name="AttributNotify" number="1">
+        <field type="CARD8" name="detail" />
+        <field type="PCONTEXT" name="context" />
+    </event>
+
+    <!-- Errors -->
+    <error name="BadContext" number="0" />
+    <error name="BadSequence" number="1" />
+
+</xcb>
+
diff --git a/src/extensions/xv.xml b/src/extensions/xv.xml
new file mode 100644 (file)
index 0000000..6544e30
--- /dev/null
@@ -0,0 +1,429 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<xcb header="xv" extension-xname="XVideo" extension-name="Xv">
+    <import>shm</import>
+    <!-- Implements version 2.2 of XV -->
+
+    <!-- XIDs -->
+    <xidtype name="PORT" />
+    <xidtype name="ENCODING" />
+
+    <enum name="Type">
+        <item name="InputMask"><value>0x00000001</value></item>
+        <item name="OutputMask"><value>0x00000002</value></item>
+        <item name="VideoMask"><value>0x00000004</value></item>
+        <item name="StillMask"><value>0x00000008</value></item>
+        <item name="ImageMask"><value>0x00000010</value></item>
+    </enum>
+
+    <enum name="ImageFormatInfoType">
+        <item name="RGB" />
+        <item name="YUV" />
+    </enum>
+
+    <enum name="ImageFormatInfoFormat">
+        <item name="Packed" />
+        <item name="Planar" />
+    </enum>
+
+    <enum name="AttributeFlag">
+        <item name="Gettable"><value>0x01</value></item>
+        <item name="Settable"><value>0x02</value></item>
+    </enum>
+    
+    <struct name="Rational">
+        <field type="INT32" name="numerator" />
+        <field type="INT32" name="denominator" />
+    </struct>
+
+    <struct name="AdaptorInfo">
+        <field type="PORT" name="base_id" />
+        <field type="CARD16" name="name_size" />
+        <field type="CARD16" name="num_ports" />
+        <field type="CARD16" name="num_formats" />
+        <field type="CARD8" name="type" />
+        <field type="CARD8" name="pad" />
+        <list type="char" name="name">
+            <fieldref>name_size</fieldref>
+        </list>
+        <list type="Format" name="formats">
+            <fieldref>num_formats</fieldref>
+        </list>
+
+    </struct>
+
+    <struct name="EncodingInfo">
+        <field type="ENCODING" name="encoding" />
+        <field type="CARD16" name="name_size" />
+        <field type="CARD16" name="width" />
+        <field type="CARD16" name="height" />
+        <field type="Rational" name="rate" />
+        <!--
+        Xvproto.h has a padding CARD16 here but the name
+        overlaps.
+        -->
+        <list type="char" name="name">
+            <fieldref>name_size</fieldref>
+        </list>
+    </struct>
+
+    <struct name="Format">
+        <field type="VISUALID" name="visual" />
+        <field type="CARD8" name="depth" />
+    </struct>
+
+    <struct name="Image">
+        <field type="CARD32" name="id" />
+        <field type="CARD16" name="width" />
+        <field type="CARD16" name="height" />
+        <field type="CARD32" name="data_size" />
+        <field type="CARD32" name="num_planes" />
+        <list type="CARD32" name="pitches">
+            <fieldref>num_planes</fieldref>
+        </list>
+        <list type="CARD32" name="offsets">
+            <fieldref>num_planes</fieldref>
+        </list>
+        <list type="CARD8" name="data">
+            <fieldref>data_size</fieldref>
+        </list>
+        <!-- Some XPointer "obdata" for SHM use-->
+    </struct>
+    
+    <struct name="AttributeInfo">
+        <field type="CARD32" name="flags" />
+        <field type="INT32" name="min" />
+        <field type="INT32" name="max" />
+        <field type="CARD32" name="size" />
+        <list type="char" name="name">
+            <fieldref>size</fieldref>
+        </list>
+    </struct>
+
+    <struct name="ImageFormatInfo">
+        <field type="CARD32" name="id" />
+        <field type="CARD8" name="type" />
+        <field type="CARD8" name="byte_order" />
+        <field type="CARD16" name="pad1" />
+        <list type="CARD8" name="guid">
+            <value>16</value>
+        </list>
+        <field type="CARD8" name="bpp" />
+        <field type="CARD8" name="num_planes" />
+        <field type="CARD16" name="pad2" />
+        <field type="CARD8" name="depth" />
+        <field type="CARD8" name="pad3" />
+        <field type="CARD16" name="pad4" />
+        <field type="CARD32" name="red_mask" />
+        <field type="CARD32" name="green_mask" />
+        <field type="CARD32" name="blue_mask" />
+        <field type="CARD8" name="format" />
+        <field type="CARD8" name="pad5" />
+        <field type="CARD16" name="pad6" />
+        <field type="CARD32" name="y_sample_bits" />
+        <field type="CARD32" name="u_sample_bits" />
+        <field type="CARD32" name="v_sample_bits" />
+        <field type="CARD32" name="vhorz_y_period" />
+        <field type="CARD32" name="vhorz_u_period" />
+        <field type="CARD32" name="vhorz_v_period" />
+        <field type="CARD32" name="vvert_y_period" />
+        <field type="CARD32" name="vvert_u_period" />
+        <field type="CARD32" name="vvert_v_period" />
+        <list type="CARD8" name="vcomp_order">
+            <value>32</value>
+        </list>
+        <field type="CARD8" name="vscanline_order" />
+        <field type="CARD8" name="vpad7" />
+        <field type="CARD16" name="vpad8" />
+        <field type="CARD32" name="vpad9" />
+        <field type="CARD32" name="vpad10" />
+    </struct>
+
+
+    <!-- Errors -->
+    <error name="BadPort" number="0"/>
+    <error name="BadEncoding" number="1"/>
+    <error name="BadControl" number="2"/>
+
+    <!-- Events -->
+    <event name="VideoNotify" number="0">
+        <field type="BYTE" name="reason" />
+        <field type="TIMESTAMP" name="time" />
+        <field type="DRAWABLE" name="drawable" />
+        <field type="PORT" name="port" />
+    </event>
+
+    <event name="PortNotify" number="1">
+        <pad bytes="1" />
+        <field type="TIMESTAMP" name="time" />
+        <field type="PORT" name="port" />
+        <field type="ATOM" name="attribute" />
+        <field type="INT32" name="value" />
+    </event>
+    
+    
+    <!-- Requests -->
+    <request name="QueryExtension" opcode="0">
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD16" name="major" />
+            <field type="CARD16" name="minor" />
+        </reply>
+    </request>
+
+    <request name="QueryAdaptors" opcode="1">
+        <field type="WINDOW" name="window" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD16" name="num_adaptors" />
+            <pad bytes="22" />
+            <list type="AdaptorInfo" name="info">
+                <fieldref>num_adaptors</fieldref>
+            </list>
+        </reply>
+    </request>
+
+    <request name="QueryEncodings" opcode="2">
+        <field type="PORT" name="port" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD16" name="num_encodings" />
+            <!--
+            In Xvproto.h this padding is 24 bytes
+            in actuality it is 22 bytes
+            -->
+            <pad bytes="22" />
+            <list type="EncodingInfo" name="info">
+                <fieldref>num_encodings</fieldref>
+            </list>
+        </reply>
+    </request>
+
+    <request name="GrabPort" opcode="3">
+        <field type="PORT" name="port" />
+        <field type="TIMESTAMP" name="time" />
+        <reply>
+            <field type="BYTE" name="result" />
+        </reply>
+    </request>
+
+    <request name="UngrabPort" opcode="4">
+        <field type="PORT" name="port" />
+        <field type="TIMESTAMP" name="time" />
+    </request>
+
+    <request name="PutVideo" opcode="5">
+        <field type="PORT" name="port" />
+        <field type="DRAWABLE" name="drawable" />
+        <field type="GCONTEXT" name="gc" />
+        <field type="INT16" name="vid_x" />
+        <field type="INT16" name="vid_y" />
+        <field type="CARD16" name="vid_w" />
+        <field type="CARD16" name="vid_h" />
+        <field type="INT16" name="drw_x" />
+        <field type="INT16" name="drw_y" />
+        <field type="CARD16" name="drw_w" />
+        <field type="CARD16" name="drw_h" />
+    </request>
+
+    <request name="PutStill" opcode="6">
+        <field type="PORT" name="port" />
+        <field type="DRAWABLE" name="drawable" />
+        <field type="GCONTEXT" name="gc" />
+        <field type="INT16" name="vid_x" />
+        <field type="INT16" name="vid_y" />
+        <field type="CARD16" name="vid_w" />
+        <field type="CARD16" name="vid_h" />
+        <field type="INT16" name="drw_x" />
+        <field type="INT16" name="drw_y" />
+        <field type="CARD16" name="drw_w" />
+        <field type="CARD16" name="drw_h" />
+    </request>
+
+    <request name="GetVideo" opcode="7">
+        <field type="PORT" name="port" />
+        <field type="DRAWABLE" name="drawable" />
+        <field type="GCONTEXT" name="gc" />
+        <field type="INT16" name="vid_x" />
+        <field type="INT16" name="vid_y" />
+        <field type="CARD16" name="vid_w" />
+        <field type="CARD16" name="vid_h" />
+        <field type="INT16" name="drw_x" />
+        <field type="INT16" name="drw_y" />
+        <field type="CARD16" name="drw_w" />
+        <field type="CARD16" name="drw_h" />
+    </request>
+
+    <request name="GetStill" opcode="8">
+        <field type="PORT" name="port" />
+        <field type="DRAWABLE" name="drawable" />
+        <field type="GCONTEXT" name="gc" />
+        <field type="INT16" name="vid_x" />
+        <field type="INT16" name="vid_y" />
+        <field type="CARD16" name="vid_w" />
+        <field type="CARD16" name="vid_h" />
+        <field type="INT16" name="drw_x" />
+        <field type="INT16" name="drw_y" />
+        <field type="CARD16" name="drw_w" />
+        <field type="CARD16" name="drw_h" />
+    </request>
+
+    <request name="StopVideo" opcode="9">
+        <field type="PORT" name="port" />
+        <field type="DRAWABLE" name="drawable" />
+    </request>
+
+    <request name="SelectVideoNotify" opcode="10">
+        <field type="DRAWABLE" name="drawable" />
+        <field type="BOOL" name="onoff" />
+    </request>
+
+    <request name="SelectPortNotify" opcode="11">
+        <field type="DRAWABLE" name="drawable" />
+        <field type="BOOL" name="onoff" />
+    </request>
+
+    <request name="QueryBestSize" opcode="12">
+        <field type="PORT" name="port" />
+        <field type="CARD16" name="vid_w" />
+        <field type="CARD16" name="vid_h" />
+        <field type="CARD16" name="drw_w" />
+        <field type="CARD16" name="drw_h" />
+        <field type="BOOL" name="motion" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD16" name="actual_width" />
+            <field type="CARD16" name="actual_height" />
+        </reply>
+    </request>
+
+    <request name="SetPortAttribute" opcode="13">
+        <field type="PORT" name="port" />
+        <field type="ATOM" name="attribute" />
+        <field type="INT32" name="value" />
+    </request>
+
+    <request name="GetPortAttribute" opcode="14">
+        <field type="PORT" name="port" />
+        <field type="ATOM" name="attribute" />
+        <reply>
+            <pad bytes="1" />
+            <field type="INT32" name="value" />
+        </reply>
+    </request>
+
+    <!-- Not in the docs beyond this point :( -->
+
+    <request name="QueryPortAttributes" opcode="15">
+        <field type="PORT" name="port" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="num_attributes" />
+            <field type="CARD32" name="text_size" />
+            <pad bytes="16" />
+            <list type="AttributeInfo" name="attributes">
+                <fieldref>num_attributes</fieldref>
+            </list>
+        </reply>
+    </request>
+
+    <request name="ListImageFormats" opcode="16">
+        <field type="PORT" name="port" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="num_formats" />
+            <pad bytes="20" />
+            <list type="ImageFormatInfo" name="format">
+                <fieldref>num_formats</fieldref>
+            </list>
+        </reply>
+    </request>
+
+    <request name="QueryImageAttributes" opcode="17">
+        <field type="PORT" name="port" />
+        <field type="CARD32" name="id" />
+        <field type="CARD16" name="width" />
+        <field type="CARD16" name="height" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="num_planes" />
+            <field type="CARD32" name="data_size" />
+            <field type="CARD16" name="width" />
+            <field type="CARD16" name="height" />
+            <pad bytes="12" />
+            <list type="CARD32" name="pitches">
+                <fieldref>num_planes</fieldref>
+            </list>
+            <list type="CARD32" name="offsets">
+                <fieldref>num_planes</fieldref>
+            </list>
+        </reply>
+    </request>
+
+    <request name="PutImage" opcode="18">
+        <field type="PORT" name="port" />
+        <field type="DRAWABLE" name="drawable" />
+        <field type="GCONTEXT" name="gc" />
+        <field type="CARD32" name="id" />
+        <field type="INT16" name="src_x" />
+        <field type="INT16" name="src_y" />
+        <field type="CARD16" name="src_w" />
+        <field type="CARD16" name="src_h" />
+        <field type="INT16" name="drw_x" />
+        <field type="INT16" name="drw_y" />
+        <field type="CARD16" name="drw_w" />
+        <field type="CARD16" name="drw_h" />
+        <field type="CARD16" name="width" />
+        <field type="CARD16" name="height" />
+        <localfield type="CARD32" name="data_size" />
+        <list type="CARD8" name="data">
+            <fieldref>data_size</fieldref>
+        </list>
+    </request>
+
+    <request name="ShmPutImage" opcode="19">
+        <field type="PORT" name="port" />
+        <field type="DRAWABLE" name="drawable" />
+        <field type="GCONTEXT" name="gc" />
+        <field type="SEG" name="shmseg" />
+        <field type="CARD32" name="id" />
+        <field type="CARD32" name="offset" />
+        <field type="INT16" name="src_x" />
+        <field type="INT16" name="src_y" />
+        <field type="CARD16" name="src_w" />
+        <field type="CARD16" name="src_h" />
+        <field type="INT16" name="drw_x" />
+        <field type="INT16" name="drw_y" />
+        <field type="CARD16" name="drw_w" />
+        <field type="CARD16" name="drw_h" />
+        <field type="CARD16" name="width" />
+        <field type="CARD16" name="height" />
+        <field type="CARD8" name="send_event" />
+    </request>
+</xcb>
diff --git a/src/extensions/xvmc.xml b/src/extensions/xvmc.xml
new file mode 100644 (file)
index 0000000..5e61def
--- /dev/null
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<xcb header="xvmc" extension-xname="XVideo-MotionCompensation" extension-name="XvMC">
+    <import>xv</import>
+
+    <xidtype name="CONTEXT" />
+    <xidtype name="SURFACE" />
+    <xidtype name="SUBPICTURE" />
+
+    <struct name="SurfaceInfo">
+        <field type="SURFACE" name="id" />
+        <field type="CARD16" name="chroma_format" />
+        <field type="CARD16" name="pad0" />
+        <field type="CARD16" name="max_width" />
+        <field type="CARD16" name="max_height" />
+        <field type="CARD16" name="subpicture_max_width" />
+        <field type="CARD16" name="subpicture_max_height" />
+        <field type="CARD32" name="mc_type" />
+        <field type="CARD32" name="flags" />
+    </struct>
+    
+    <request name="QueryVersion" opcode="0"> 
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="major" />
+            <field type="CARD32" name="minor" />
+        </reply>
+    </request> 
+
+    <request name="ListSurfaceTypes" opcode="1">
+        <field type="PORT" name="port_id" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="num" />
+            <pad bytes="20" />
+            <list type="SurfaceInfo" name="surfaces">
+                <fieldref>num</fieldref>
+            </list>
+        </reply>
+    </request>
+
+    <request name="CreateContext" opcode="2">
+        <field type="CONTEXT" name="context_id" />
+        <field type="PORT" name="port_id" />
+        <field type="SURFACE" name="surface_id" />
+        <field type="CARD16" name="width" />
+        <field type="CARD16" name="height" />
+        <field type="CARD32" name="flags" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD16" name="width_actual" />
+            <field type="CARD16" name="height_actual" />
+            <field type="CARD32" name="flags_return" />
+            <pad byte="20" />
+            <list type="CARD32" name="priv_data" />
+        </reply>
+    </request>
+
+    <request name="DestroyContext" opcode="3">
+        <field type="CONTEXT" name="context_id" />
+    </request>
+    
+    <request name="CreateSurface" opcode="4">
+        <field type="SURFACE" name="surface_id" />
+        <field type="CONTEXT" name="context_id" />
+        <reply>
+            <pad bytes="1" />
+            <pad bytes="24" />
+            <list type="CARD32" name="priv_data" />
+        </reply>
+    </request>
+
+    <request name="DestroySurface" opcode="5">
+        <field type="SURFACE" name="surface_id" />
+    </request>
+
+    <request name="CreateSubpicture" opcode="6">
+        <field type="SUBPICTURE" name="subpicture_id" />
+        <field type="CONTEXT" name="context" />
+        <field type="CARD32" name="xvimage_id" />
+        <field type="CARD16" name="width" />
+        <field type="CARD16" name="height" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD16" name="width_actual" />
+            <field type="CARD16" name="height_actual" />
+            <field type="CARD16" name="num_palette_entries" />
+            <field type="CARD16" name="entry_bytes" />
+            <list type="CARD8" name="component_order">
+                <value>4</value>
+            </list>
+            <pad bytes="12" />
+            <list type="CARD32" name="priv_data" />
+        </reply>
+    </request>
+
+    <request name="DestroySubpicture" opcode="7">
+        <field type="SUBPICTURE" name="subpicture_id" />
+    </request>
+
+    <request name="ListSubpictureTypes" opcode="8">
+        <field type="PORT" name="port_id" />
+        <field type="SURFACE" name="surface_id" />
+        <reply>
+            <pad bytes="1" />
+            <field type="CARD32" name="num" />
+            <pad bytes="20" />
+            <list type="ImageFormatInfo" name="types">
+                <fieldref>num</fieldref>
+            </list>
+        </reply>    
+    </request>
+
+</xcb> 
diff --git a/src/xcb.xsd b/src/xcb.xsd
new file mode 100644 (file)
index 0000000..47f8c69
--- /dev/null
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett.  All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+  <!-- The root element -->
+  <xsd:element name="xcb">
+    <xsd:complexType>
+      <xsd:group ref="macro" minOccurs="0" maxOccurs="unbounded" />
+      <xsd:attribute name="header" type="xsd:string" />
+      <xsd:attribute name="extension-xname" type="xsd:string" use="optional" />
+      <xsd:attribute name="extension-name"  type="xsd:string" use="optional" />
+    </xsd:complexType>
+  </xsd:element>
+
+  <!-- Padding -->
+  <xsd:element name="pad">
+    <xsd:complexType>
+      <xsd:attribute name="bytes" type="xsd:integer" />
+    </xsd:complexType>
+  </xsd:element>
+
+  <!-- Type for fields or parameters with attributes "name" and "type" -->
+  <xsd:complexType name="var">
+    <xsd:attribute name="name" type="xsd:string" />
+    <xsd:attribute name="type" type="xsd:string" />
+  </xsd:complexType>
+
+  <!-- field replaces FIELD, PARAM, and REPLY. -->
+  <xsd:element name="field" type="var" />
+
+  <!-- list replaces ARRAYFIELD, LISTPARAM, and ARRAYREPLY.  The name and type
+       are specified as attributes.  The content is an expression giving the
+       length. -->
+  <xsd:element name="list">
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:extension base="var">
+          <xsd:group ref="expression" minOccurs="0" maxOccurs="1" />
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <!-- Parameters in requests that are not sent with the request. -->
+  <xsd:element name="localfield" type="var" />
+  
+  <!-- Expressions -->
+  <xsd:group name="expression">
+    <xsd:choice>
+      <xsd:element name="op">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:group ref="expression" />
+            <xsd:group ref="expression" />
+          </xsd:sequence>
+          <xsd:attribute name="op">
+            <xsd:simpleType>
+              <xsd:restriction base="xsd:string">
+                <xsd:pattern value="\+|-|\*|/|&amp;|&lt;&lt;" />
+              </xsd:restriction>
+            </xsd:simpleType>
+          </xsd:attribute>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="fieldref" type="xsd:string" />
+      <xsd:element name="value" type="dec-or-hex-integer" />
+    </xsd:choice>
+  </xsd:group>
+  
+  <!-- Fields in requests that are calculated from other information, not
+       supplied by the caller. -->
+  <xsd:element name="exprfield" >
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:extension base="var">
+          <xsd:group ref="expression" />
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <!-- BITMASK/LISTofVALUE parameter pairs. -->
+  <xsd:element name="valueparam">
+    <xsd:complexType>
+      <xsd:attribute name="value-mask-type" type="xsd:string" />
+      <xsd:attribute name="value-mask-name" type="xsd:string" />
+      <xsd:attribute name="value-list-name" type="xsd:string" />
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:group name="fields">
+    <xsd:choice>
+      <xsd:element ref="pad" />
+      <xsd:element ref="field" />
+      <xsd:element ref="list" />
+    </xsd:choice>
+  </xsd:group>
+
+  <!-- Type for a structure -->
+  <xsd:complexType name="struct">
+    <xsd:group ref="fields" minOccurs="1" maxOccurs="unbounded" />
+    <xsd:attribute name="name" type="xsd:string" />
+  </xsd:complexType>
+
+  <!-- Type for a packet structure -->
+  <xsd:complexType name="packet-struct">
+    <xsd:group ref="fields" minOccurs="0" maxOccurs="unbounded" />
+    <xsd:attribute name="name" type="xsd:string" />
+    <xsd:attribute name="number" type="xsd:integer" />
+  </xsd:complexType>
+
+  <!-- Type for a packet structure copy -->
+  <xsd:complexType name="packet-struct-copy">
+    <xsd:attribute name="name" type="xsd:string" />
+    <xsd:attribute name="number" type="xsd:integer" />
+    <xsd:attribute name="ref" type="xsd:string" />
+  </xsd:complexType>
+
+  <!-- Type for hex integers -->
+  <xsd:simpleType name="hex-integer">
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="0x[0-9a-fA-F]+" />
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <!-- Type for integers in either decimal or hex -->
+  <xsd:simpleType name="dec-or-hex-integer">
+    <xsd:union memberTypes="xsd:integer hex-integer" />
+  </xsd:simpleType>
+
+  <xsd:group name="macro">
+    <xsd:choice>
+      <xsd:element name="request">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:choice minOccurs="0" maxOccurs="unbounded">
+              <xsd:group ref="fields" />
+              <xsd:element ref="localfield" />
+              <xsd:element ref="exprfield" />
+              <xsd:element ref="valueparam" />
+            </xsd:choice>
+            <xsd:element name="reply" minOccurs="0" maxOccurs="1">
+              <xsd:complexType>
+                <xsd:group ref="fields" minOccurs="1" maxOccurs="unbounded" />
+              </xsd:complexType>
+            </xsd:element>
+          </xsd:sequence>
+          <xsd:attribute name="name" type="xsd:string" />
+          <xsd:attribute name="opcode" type="xsd:integer" />
+          <xsd:attribute name="combine-adjacent" type="xsd:boolean" />
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="event">
+        <xsd:complexType>
+          <xsd:complexContent>
+            <xsd:extension base="packet-struct">
+              <xsd:attribute name="no-sequence-number" type="xsd:boolean" />
+            </xsd:extension>
+          </xsd:complexContent>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="eventcopy" type="packet-struct-copy" />
+      <xsd:element name="error" type="packet-struct" />
+      <xsd:element name="errorcopy" type="packet-struct-copy" />
+      <xsd:element name="struct" type="struct" />
+      <xsd:element name="union" type="struct" />
+      <xsd:element name="xidtype">
+        <xsd:complexType>
+          <xsd:attribute name="name" type="xsd:string" />
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="enum">
+        <xsd:complexType>
+          <xsd:sequence minOccurs="1" maxOccurs="unbounded">
+            <xsd:element name="item">
+              <xsd:complexType>
+                <xsd:group ref="expression" minOccurs="0" maxOccurs="1" />
+                <xsd:attribute name="name" type="xsd:string" />
+              </xsd:complexType>
+            </xsd:element>
+          </xsd:sequence>
+          <xsd:attribute name="name" type="xsd:string" />
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="typedef">
+        <xsd:complexType>
+          <xsd:attribute name="oldname" type="xsd:string" />
+          <xsd:attribute name="newname" type="xsd:string" />
+        </xsd:complexType>
+      </xsd:element>
+      <!-- The import element allows a protocol description to reference the
+           declarations of another protocol description. -->
+      <xsd:element name="import" type="xsd:string" />
+    </xsd:choice>
+  </xsd:group>
+</xsd:schema>
diff --git a/src/xcb_types.xml b/src/xcb_types.xml
new file mode 100644 (file)
index 0000000..516773a
--- /dev/null
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="xcb_types">
+  <!-- Core protocol types -->
+  
+  <struct name="CHAR2B">
+    <field type="CARD8" name="byte1" />
+    <field type="CARD8" name="byte2" />
+  </struct>
+  
+  <xidtype name="WINDOW" />
+  
+  <xidtype name="PIXMAP" />
+  
+  <xidtype name="CURSOR" />
+  
+  <xidtype name="FONT" />
+  
+  <xidtype name="GCONTEXT" />
+  
+  <xidtype name="COLORMAP" />
+  
+  <xidtype name="ATOM" />
+  
+  <union name="DRAWABLE">
+    <field type="WINDOW" name="window" />
+    <field type="PIXMAP" name="pixmap" />
+  </union>
+  
+  <union name="FONTABLE">
+    <field type="FONT" name="font" />
+    <field type="GCONTEXT" name="gcontext" />
+  </union>
+  
+  <struct name="VISUALID">
+    <field type="CARD32" name="id" />
+  </struct>
+
+  <struct name="TIMESTAMP">
+    <field type="CARD32" name="id" />
+  </struct>
+
+  <struct name="KEYSYM">
+    <field type="CARD32" name="id" />
+  </struct>
+
+  <struct name="KEYCODE">
+    <field type="CARD8" name="id" />
+  </struct>
+
+  <struct name="BUTTON">
+    <field type="CARD8" name="id" />
+  </struct>
+
+  <struct name="POINT">
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+  </struct>
+
+  <struct name="RECTANGLE">
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+  </struct>
+
+  <struct name="ARC">
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="INT16" name="angle1" />
+    <field type="INT16" name="angle2" />
+  </struct>
+
+  <!-- Connection setup-related types -->
+
+  <struct name="FORMAT">
+    <field type="CARD8" name="depth" />
+    <field type="CARD8" name="bits_per_pixel" />
+    <field type="CARD8" name="scanline_pad" />
+    <pad bytes="5" />
+  </struct>
+
+  <struct name="VISUALTYPE">
+    <field type="VISUALID" name="visual_id" />
+    <field type="CARD8" name="class" />
+    <field type="CARD8" name="bits_per_rgb_value" />
+    <field type="CARD16" name="colormap_entries" />
+    <field type="CARD32" name="red_mask" />
+    <field type="CARD32" name="green_mask" />
+    <field type="CARD32" name="blue_mask" />
+    <pad bytes="4" />
+  </struct>
+
+  <struct name="DEPTH">
+    <field type="CARD8" name="depth" />
+    <pad bytes="1" />
+    <field type="CARD16" name="visuals_len" />
+    <pad bytes="4" />
+    <list type="VISUALTYPE" name="visuals">
+      <fieldref>visuals_len</fieldref>
+    </list>
+  </struct>
+
+  <struct name="SCREEN">
+    <field type="WINDOW" name="root" />
+    <field type="COLORMAP" name="default_colormap" />
+    <field type="CARD32" name="white_pixel" />
+    <field type="CARD32" name="black_pixel" />
+    <field type="CARD32" name="current_input_masks" />
+    <field type="CARD16" name="width_in_pixels" />
+    <field type="CARD16" name="height_in_pixels" />
+    <field type="CARD16" name="width_in_millimeters" />
+    <field type="CARD16" name="height_in_millimeters" />
+    <field type="CARD16" name="min_installed_maps" />
+    <field type="CARD16" name="max_installed_maps" />
+    <field type="VISUALID" name="root_visual" />
+    <field type="BYTE" name="backing_stores" />
+    <field type="BOOL" name="save_unders" />
+    <field type="CARD8" name="root_depth" />
+    <field type="CARD8" name="allowed_depths_len" />
+    <list type="DEPTH" name="allowed_depths">
+      <fieldref>allowed_depths_len</fieldref>
+    </list>
+  </struct>
+
+  <struct name="ConnSetupReq">
+    <field type="CARD8" name="byte_order" />
+    <pad bytes="1" />
+    <field type="CARD16" name="protocol_major_version" />
+    <field type="CARD16" name="protocol_minor_version" />
+    <field type="CARD16" name="authorization_protocol_name_len" />
+    <field type="CARD16" name="authorization_protocol_data_len" />
+    <list type="char" name="authorization_protocol_name">
+      <fieldref>authorization_protocol_name_len</fieldref>
+    </list>
+    <list type="char" name="authorization_protocol_data">
+      <fieldref>authorization_protocol_data_len</fieldref>
+    </list>
+  </struct>
+
+  <struct name="ConnSetupGenericRep">
+    <field type="CARD8" name="status" />
+    <pad bytes="5" />
+    <field type="CARD16" name="length" />
+  </struct>
+
+  <struct name="ConnSetupFailedRep">
+    <field type="CARD8" name="status" /> <!-- always 0 -> Failed -->
+    <field type="CARD8" name="reason_len" />
+    <field type="CARD16" name="protocol_major_version" />
+    <field type="CARD16" name="protocol_minor_version" />
+    <field type="CARD16" name="length" />
+    <list type="char" name="reason">
+      <fieldref>reason_len</fieldref>
+    </list>
+  </struct>
+
+  <struct name="ConnSetupAuthenticateRep">
+    <field type="CARD8" name="status" /> <!-- always 2 -> Authenticate -->
+    <pad bytes="5" />
+    <field type="CARD16" name="length" />
+    <list type="char" name="reason">
+      <op op="*">
+        <fieldref>length</fieldref>
+        <value>4</value>
+      </op>
+    </list>
+  </struct>
+
+  <struct name="ConnSetupSuccessRep">
+    <field type="CARD8" name="status" /> <!-- always 1 -> Success -->
+    <pad bytes="1" />
+    <field type="CARD16" name="protocol_major_version" />
+    <field type="CARD16" name="protocol_minor_version" />
+    <field type="CARD16" name="length" />
+    <field type="CARD32" name="release_number" />
+    <field type="CARD32" name="resource_id_base" />
+    <field type="CARD32" name="resource_id_mask" />
+    <field type="CARD32" name="motion_buffer_size" />
+    <field type="CARD16" name="vendor_len" />
+    <field type="CARD16" name="maximum_request_length" />
+    <field type="CARD8" name="roots_len" />
+    <field type="CARD8" name="pixmap_formats_len" />
+    <field type="CARD8" name="image_byte_order" />
+    <field type="CARD8" name="bitmap_format_bit_order" />
+    <field type="CARD8" name="bitmap_format_scanline_unit" />
+    <field type="CARD8" name="bitmap_format_scanline_pad" />
+    <field type="KEYCODE" name="min_keycode" />
+    <field type="KEYCODE" name="max_keycode" />
+    <pad bytes="4" />
+    <list type="char" name="vendor">
+      <fieldref>vendor_len</fieldref>
+    </list>
+    <list type="FORMAT" name="pixmap_formats">
+      <fieldref>pixmap_formats_len</fieldref>
+    </list>
+    <list type="SCREEN" name="roots">
+      <fieldref>roots_len</fieldref>
+    </list>
+  </struct>
+</xcb>
diff --git a/src/xproto.xml b/src/xproto.xml
new file mode 100644 (file)
index 0000000..5033ff6
--- /dev/null
@@ -0,0 +1,1657 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="xproto">
+  <!-- Core event and error types -->
+
+  <event name="KeyPress" number="2">
+    <field type="KEYCODE" name="detail" />
+    <field type="TIMESTAMP" name="time" />
+    <field type="WINDOW" name="root" />
+    <field type="WINDOW" name="event" />
+    <field type="WINDOW" name="child" />
+    <field type="INT16" name="root_x" />
+    <field type="INT16" name="root_y" />
+    <field type="INT16" name="event_x" />
+    <field type="INT16" name="event_y" />
+    <field type="CARD16" name="state" />
+    <field type="BOOL" name="same_screen" />
+  </event>
+
+  <eventcopy name="KeyRelease" number="3" ref="KeyPress" />
+
+  <event name="ButtonPress" number="4">
+    <field type="BUTTON" name="detail" />
+    <field type="TIMESTAMP" name="time" />
+    <field type="WINDOW" name="root" />
+    <field type="WINDOW" name="event" />
+    <field type="WINDOW" name="child" />
+    <field type="INT16" name="root_x" />
+    <field type="INT16" name="root_y" />
+    <field type="INT16" name="event_x" />
+    <field type="INT16" name="event_y" />
+    <field type="CARD16" name="state" />
+    <field type="BOOL" name="same_screen" />
+  </event>
+
+  <eventcopy name="ButtonRelease" number="5" ref="ButtonPress" />
+
+  <event name="MotionNotify" number="6">
+    <field type="BYTE" name="detail" />
+    <field type="TIMESTAMP" name="time" />
+    <field type="WINDOW" name="root" />
+    <field type="WINDOW" name="event" />
+    <field type="WINDOW" name="child" />
+    <field type="INT16" name="root_x" />
+    <field type="INT16" name="root_y" />
+    <field type="INT16" name="event_x" />
+    <field type="INT16" name="event_y" />
+    <field type="CARD16" name="state" />
+    <field type="BOOL" name="same_screen" />
+  </event>
+
+  <event name="EnterNotify" number="7">
+    <field type="BYTE" name="detail" />
+    <field type="TIMESTAMP" name="time" />
+    <field type="WINDOW" name="root" />
+    <field type="WINDOW" name="event" />
+    <field type="WINDOW" name="child" />
+    <field type="INT16" name="root_x" />
+    <field type="INT16" name="root_y" />
+    <field type="INT16" name="event_x" />
+    <field type="INT16" name="event_y" />
+    <field type="CARD16" name="state" />
+    <field type="BYTE" name="mode" />
+    <field type="BYTE" name="same_screen_focus" />
+  </event>
+
+  <eventcopy name="LeaveNotify" number="8" ref="EnterNotify" />
+
+  <event name="FocusIn" number="9">
+    <field type="BYTE" name="detail" />
+    <field type="WINDOW" name="event" />
+    <field type="BYTE" name="mode" />
+  </event>
+
+  <eventcopy name="FocusOut" number="10" ref="FocusIn" />
+
+  <event name="KeymapNotify" number="11" no-sequence-number="true">
+    <list type="CARD8" name="keys"><value>31</value></list>
+  </event>
+
+  <event name="Expose" number="12">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <field type="CARD16" name="x" />
+    <field type="CARD16" name="y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="CARD16" name="count" />
+  </event>
+
+  <event name="GraphicsExposure" number="13">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="CARD16" name="x" />
+    <field type="CARD16" name="y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="CARD16" name="minor_opcode" />
+    <field type="CARD16" name="count" />
+    <field type="CARD8" name="major_opcode" />
+  </event>
+
+  <event name="NoExposure" number="14">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="CARD16" name="minor_opcode" />
+    <field type="CARD8" name="major_opcode" />
+  </event>
+
+  <event name="VisibilityNotify" number="15">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <field type="BYTE" name="state" />
+  </event>
+
+  <event name="CreateNotify" number="16">
+    <pad bytes="1" />
+    <field type="WINDOW" name="parent" />
+    <field type="WINDOW" name="window" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="CARD16" name="border_width" />
+    <field type="BOOL" name="override_redirect" />
+  </event>
+
+  <event name="DestroyNotify" number="17">
+    <pad bytes="1" />
+    <field type="WINDOW" name="event" />
+    <field type="WINDOW" name="window" />
+  </event>
+
+  <event name="UnmapNotify" number="18">
+    <pad bytes="1" />
+    <field type="WINDOW" name="event" />
+    <field type="WINDOW" name="window" />
+    <field type="BOOL" name="from_configure" />
+  </event>
+
+  <event name="MapNotify" number="19">
+    <pad bytes="1" />
+    <field type="WINDOW" name="event" />
+    <field type="WINDOW" name="window" />
+    <field type="BOOL" name="override_redirect" />
+  </event>
+
+  <event name="MapRequest" number="20">
+    <pad bytes="1" />
+    <field type="WINDOW" name="parent" />
+    <field type="WINDOW" name="window" />
+  </event>
+
+  <event name="ReparentNotify" number="21">
+    <pad bytes="1" />
+    <field type="WINDOW" name="event" />
+    <field type="WINDOW" name="window" />
+    <field type="WINDOW" name="parent" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <field type="BOOL" name="override_redirect" />
+  </event>
+
+  <event name="ConfigureNotify" number="22">
+    <pad bytes="1" />
+    <field type="WINDOW" name="event" />
+    <field type="WINDOW" name="window" />
+    <field type="WINDOW" name="above_sibling" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="CARD16" name="border_width" />
+    <field type="BOOL" name="override_redirect" />
+  </event>
+
+  <event name="ConfigureRequest" number="23">
+    <field type="BYTE" name="stack_mode" />
+    <field type="WINDOW" name="parent" />
+    <field type="WINDOW" name="window" />
+    <field type="WINDOW" name="sibling" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="CARD16" name="border_width" />
+    <field type="CARD16" name="value_mask" />
+  </event>
+
+  <event name="GravityNotify" number="24">
+    <pad bytes="1" />
+    <field type="WINDOW" name="event" />
+    <field type="WINDOW" name="window" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+  </event>
+
+  <event name="ResizeRequest" number="25">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+  </event>
+
+  <event name="CirculateNotify" number="26">
+    <pad bytes="1" />
+    <field type="WINDOW" name="event" />
+    <field type="WINDOW" name="window" />
+    <pad bytes="4" />
+    <field type="BYTE" name="place" />
+  </event>
+
+  <eventcopy name="CirculateRequest" number="27" ref="CirculateNotify" />
+
+  <event name="PropertyNotify" number="28">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <field type="ATOM" name="atom" />
+    <field type="TIMESTAMP" name="time" />
+    <field type="BYTE" name="state" />
+  </event>
+
+  <event name="SelectionClear" number="29">
+    <pad bytes="1" />
+    <field type="TIMESTAMP" name="time" />
+    <field type="WINDOW" name="owner" />
+    <field type="ATOM" name="selection" />
+  </event>
+
+  <event name="SelectionRequest" number="30">
+    <pad bytes="1" />
+    <field type="TIMESTAMP" name="time" />
+    <field type="WINDOW" name="owner" />
+    <field type="WINDOW" name="requestor" />
+    <field type="ATOM" name="selection" />
+    <field type="ATOM" name="target" />
+    <field type="ATOM" name="property" />
+  </event>
+
+  <event name="SelectionNotify" number="31">
+    <pad bytes="1" />
+    <field type="TIMESTAMP" name="time" />
+    <field type="WINDOW" name="requestor" />
+    <field type="ATOM" name="selection" />
+    <field type="ATOM" name="target" />
+    <field type="ATOM" name="property" />
+  </event>
+
+  <event name="ColormapNotify" number="32">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <field type="COLORMAP" name="colormap" />
+    <field type="BOOL" name="new" />
+    <field type="BYTE" name="state" />
+  </event>
+
+  <union name="ClientMessageData">
+    <!-- The format member of the ClientMessage event determines which array
+         to use. -->
+    <list type="CARD8"  name="data8" ><value>20</value></list> <!--  8 -->
+    <list type="CARD16" name="data16"><value>10</value></list> <!-- 16 -->
+    <list type="CARD32" name="data32"><value>5</value></list>  <!-- 32 -->
+  </union>
+
+  <event name="ClientMessage" number="33">
+    <field type="CARD8" name="format" /> <!-- 8, 16, or 32. -->
+    <field type="WINDOW" name="window" />
+    <field type="ATOM" name="type" />
+    <field type="ClientMessageData" name="data" />
+  </event>
+
+  <event name="MappingNotify" number="34">
+    <pad bytes="1" />
+    <field type="BYTE" name="request" />
+    <field type="KEYCODE" name="first_keycode" />
+    <field type="CARD8" name="count" />
+  </event>
+
+  <error name="Request" number="1">
+    <field type="CARD32" name="bad_value" />
+    <field type="CARD16" name="minor_opcode" />
+    <field type="CARD8" name="major_opcode" />
+  </error>
+
+  <error name="Value" number="2">
+    <field type="CARD32" name="bad_value" />
+    <field type="CARD16" name="minor_opcode" />
+    <field type="CARD8" name="major_opcode" />
+  </error>
+
+  <errorcopy name="Window" number="3" ref="Value" />
+  <errorcopy name="Pixmap" number="4" ref="Value" />
+  <errorcopy name="Atom" number="5" ref="Value" />
+  <errorcopy name="Cursor" number="6" ref="Value" />
+  <errorcopy name="Font" number="7" ref="Value" />
+  <errorcopy name="Match" number="8" ref="Request" />
+  <errorcopy name="Drawable" number="9" ref="Value" />
+  <errorcopy name="Access" number="10" ref="Request" />
+  <errorcopy name="Alloc" number="11" ref="Request" />
+  <errorcopy name="Colormap" number="12" ref="Value" />
+  <errorcopy name="GContext" number="13" ref="Value" />
+  <errorcopy name="IDChoice" number="14" ref="Value" />
+  <errorcopy name="Name" number="15" ref="Request" />
+  <errorcopy name="Length" number="16" ref="Request" />
+  <errorcopy name="Implementation" number="17" ref="Request" />
+
+  <!-- The requests, in major number order. -->
+  <!-- It is the caller's responsibility to free returned XCB*Rep objects. -->
+
+  <!-- FIXME: The ListFontsWithInfo request is not supported by XCB. -->
+
+  <!-- Window attributes for CreateWindow and ChangeWindowAttributes. -->
+  <enum name="CW">
+    <item name="BackPixmap">
+      <op op="&lt;&lt;"><value>1</value><value>0</value></op>
+    </item>
+    <item name="BackPixel">
+      <op op="&lt;&lt;"><value>1</value><value>1</value></op>
+    </item>
+    <item name="BorderPixmap">
+      <op op="&lt;&lt;"><value>1</value><value>2</value></op>
+    </item>
+    <item name="BorderPixel">
+      <op op="&lt;&lt;"><value>1</value><value>3</value></op>
+    </item>
+    <item name="BitGravity">
+      <op op="&lt;&lt;"><value>1</value><value>4</value></op>
+    </item>
+    <item name="WinGravity">
+      <op op="&lt;&lt;"><value>1</value><value>5</value></op>
+    </item>
+    <item name="BackingStore">
+      <op op="&lt;&lt;"><value>1</value><value>6</value></op>
+    </item>
+    <item name="BackingPlanes">
+      <op op="&lt;&lt;"><value>1</value><value>7</value></op>
+    </item>
+    <item name="BackingPixel">
+      <op op="&lt;&lt;"><value>1</value><value>8</value></op>
+    </item>
+    <item name="OverrideRedirect">
+      <op op="&lt;&lt;"><value>1</value><value>9</value></op>
+    </item>
+    <item name="SaveUnder">
+      <op op="&lt;&lt;"><value>1</value><value>10</value></op>
+    </item>
+    <item name="EventMask">
+      <op op="&lt;&lt;"><value>1</value><value>11</value></op>
+    </item>
+    <item name="DontPropagate">
+      <op op="&lt;&lt;"><value>1</value><value>12</value></op>
+    </item>
+    <item name="Colormap">
+      <op op="&lt;&lt;"><value>1</value><value>13</value></op>
+    </item>
+    <item name="Cursor">
+      <op op="&lt;&lt;"><value>1</value><value>14</value></op>
+    </item>
+  </enum>
+
+  <request name="CreateWindow" opcode="1">
+    <field type="CARD8" name="depth" />
+    <field type="WINDOW" name="wid" />
+    <field type="WINDOW" name="parent" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="CARD16" name="border_width" />
+    <field type="CARD16" name="class" />
+    <field type="VISUALID" name="visual" />
+    <valueparam value-mask-type="CARD32"
+                value-mask-name="value_mask"
+                value-list-name="value_list" />
+  </request>
+
+  <request name="ChangeWindowAttributes" opcode="2">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <valueparam value-mask-type="CARD32"
+                value-mask-name="value_mask"
+                value-list-name="value_list" />
+  </request>
+
+  <request name="GetWindowAttributes" opcode="3">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <reply>
+      <field type="CARD8" name="backing_store" />
+      <field type="VISUALID" name="visual" />
+      <field type="CARD16" name="class" />
+      <field type="CARD8" name="bit_gravity" />
+      <field type="CARD8" name="win_gravity" />
+      <field type="CARD32" name="backing_planes" />
+      <field type="CARD32" name="backing_pixel" />
+      <field type="BOOL" name="save_under" />
+      <field type="BOOL" name="map_is_installed" />
+      <field type="CARD8" name="map_state" />
+      <field type="BOOL" name="override_redirect" />
+      <field type="COLORMAP" name="colormap" />
+      <field type="CARD32" name="all_event_masks" />
+      <field type="CARD32" name="your_event_mask" />
+      <field type="CARD16" name="do_not_propagate_mask" />
+    </reply>
+  </request>
+
+  <request name="DestroyWindow" opcode="4">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+  </request>
+
+  <request name="DestroySubwindows" opcode="5">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+  </request>
+
+  <request name="ChangeSaveSet" opcode="6">
+    <field type="BYTE" name="mode" />
+    <field type="WINDOW" name="window" />
+  </request>
+
+  <request name="ReparentWindow" opcode="7">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <field type="WINDOW" name="parent" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+  </request>
+
+  <request name="MapWindow" opcode="8">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+  </request>
+
+  <request name="MapSubwindows" opcode="9">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+  </request>
+
+  <request name="UnmapWindow" opcode="10">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+  </request>
+
+  <request name="UnmapSubwindows" opcode="11">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+  </request>
+
+  <request name="ConfigureWindow" opcode="12">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <valueparam value-mask-type="CARD16"
+                value-mask-name="value_mask"
+                value-list-name="value_list" />
+  </request>
+
+  <request name="CirculateWindow" opcode="13">
+    <field type="CARD8" name="direction" />
+    <field type="WINDOW" name="window" />
+  </request>
+
+  <request name="GetGeometry" opcode="14">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="drawable" />
+    <reply>
+      <field type="CARD8" name="depth" />
+      <field type="WINDOW" name="root" />
+      <field type="INT16" name="x" />
+      <field type="INT16" name="y" />
+      <field type="CARD16" name="width" />
+      <field type="CARD16" name="height" />
+      <field type="CARD16" name="border_width" />
+    </reply>
+  </request>
+
+  <request name="QueryTree" opcode="15">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <reply>
+      <pad bytes="1" />
+      <field type="WINDOW" name="root" />
+      <field type="WINDOW" name="parent" />
+      <field type="CARD16" name="children_len" />
+      <pad bytes="14" />
+      <list type="WINDOW" name="children">
+        <fieldref>children_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="InternAtom" opcode="16">
+    <field type="BOOL" name="only_if_exists" />
+    <field type="CARD16" name="name_len" />
+    <pad bytes="2" />
+    <list type="char" name="name">
+      <fieldref>name_len</fieldref>
+    </list>
+    <reply>
+      <pad bytes="1" />
+      <field type="ATOM" name="atom" />
+    </reply>
+  </request>
+
+  <request name="GetAtomName" opcode="17">
+    <pad bytes="1" />
+    <field type="ATOM" name="atom" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="name_len" />
+      <pad bytes="22" />
+      <list type="CARD8" name="name">
+        <fieldref>name_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="ChangeProperty" opcode="18">
+    <field type="CARD8" name="mode" />
+    <field type="WINDOW" name="window" />
+    <field type="ATOM" name="property" />
+    <field type="ATOM" name="type" />
+    <field type="CARD8" name="format" />
+    <pad bytes="3" />
+    <field type="CARD32" name="data_len" />
+    <list type="void" name="data">
+      <op op="/">
+        <op op="*">
+          <fieldref>data_len</fieldref>
+          <fieldref>format</fieldref>
+        </op>
+        <value>8</value>
+      </op>
+    </list>
+  </request>
+
+  <request name="DeleteProperty" opcode="19">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <field type="ATOM" name="property" />
+  </request>
+
+  <request name="GetProperty" opcode="20">
+    <field type="BOOL" name="delete" />
+    <field type="WINDOW" name="window" />
+    <field type="ATOM" name="property" />
+    <field type="ATOM" name="type" />
+    <field type="CARD32" name="long_offset" />
+    <field type="CARD32" name="long_length" />
+    <reply>
+      <field type="CARD8" name="format" />
+      <field type="ATOM" name="type" />
+      <field type="CARD32" name="bytes_after" />
+      <field type="CARD32" name="value_len" />
+      <pad bytes="12" />
+      <list type="void" name="value">
+        <fieldref>value_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="ListProperties" opcode="21">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="atoms_len" />
+      <pad bytes="22" />
+      <list type="ATOM" name="atoms">
+        <fieldref>atoms_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="SetSelectionOwner" opcode="22">
+    <pad bytes="1" />
+    <field type="WINDOW" name="owner" />
+    <field type="ATOM" name="selection" />
+    <field type="TIMESTAMP" name="time" />
+  </request>
+
+  <request name="GetSelectionOwner" opcode="23">
+    <pad bytes="1" />
+    <field type="ATOM" name="selection" />
+    <reply>
+      <pad bytes="1" />
+      <field type="WINDOW" name="owner" />
+    </reply>
+  </request>
+
+  <request name="ConvertSelection" opcode="24">
+    <pad bytes="1" />
+    <field type="WINDOW" name="requestor" />
+    <field type="ATOM" name="selection" />
+    <field type="ATOM" name="target" />
+    <field type="ATOM" name="property" />
+    <field type="TIMESTAMP" name="time" />
+  </request>
+
+  <request name="SendEvent" opcode="25">
+    <field type="BOOL" name="propagate" />
+    <field type="WINDOW" name="destination" />
+    <field type="CARD32" name="event_mask" />
+    <list type="char" name="event"><value>32</value></list>
+  </request>
+
+  <request name="GrabPointer" opcode="26">
+    <field type="BOOL" name="owner_events" />
+    <field type="WINDOW" name="grab_window" />
+    <field type="CARD16" name="event_mask" />
+    <field type="BYTE" name="pointer_mode" />
+    <field type="BYTE" name="keyboard_mode" />
+    <field type="WINDOW" name="confine_to" />
+    <field type="CURSOR" name="cursor" />
+    <field type="TIMESTAMP" name="time" />
+    <reply>
+      <field type="BYTE" name="status" />
+    </reply>
+  </request>
+
+  <request name="UngrabPointer" opcode="27">
+    <pad bytes="1" />
+    <field type="TIMESTAMP" name="time" />
+  </request>
+
+  <request name="GrabButton" opcode="28">
+    <field type="BOOL" name="owner_events" />
+    <field type="WINDOW" name="grab_window" />
+    <field type="CARD16" name="event_mask" />
+    <field type="CARD8" name="pointer_mode" />
+    <field type="CARD8" name="keyboard_mode" />
+    <field type="WINDOW" name="confine_to" />
+    <field type="CURSOR" name="cursor" />
+    <field type="CARD8" name="button" />
+    <pad bytes="1" />
+    <field type="CARD16" name="modifiers" />
+  </request>
+
+  <request name="UngrabButton" opcode="29">
+    <field type="CARD8" name="button" />
+    <field type="WINDOW" name="grab_window" />
+    <field type="CARD16" name="modifiers" />
+    <pad bytes="2" />
+  </request>
+
+  <request name="ChangeActivePointerGrab" opcode="30">
+    <pad bytes="1" />
+    <field type="CURSOR" name="cursor" />
+    <field type="TIMESTAMP" name="time" />
+    <field type="CARD16" name="event_mask" />
+  </request>
+
+  <request name="GrabKeyboard" opcode="31">
+    <field type="BOOL" name="owner_events" />
+    <field type="WINDOW" name="grab_window" />
+    <field type="TIMESTAMP" name="time" />
+    <field type="BYTE" name="pointer_mode" />
+    <field type="BYTE" name="keyboard_mode" />
+    <reply>
+      <field type="BYTE" name="status" />
+    </reply>
+  </request>
+
+  <request name="UngrabKeyboard" opcode="32">
+    <pad bytes="1" />
+    <field type="TIMESTAMP" name="time" />
+  </request>
+
+  <request name="GrabKey" opcode="33">
+    <field type="BOOL" name="owner_events" />
+    <field type="WINDOW" name="grab_window" />
+    <field type="CARD16" name="modifiers" />
+    <field type="KEYCODE" name="key" />
+    <field type="CARD8" name="pointer_mode" />
+    <field type="CARD8" name="keyboard_mode" />
+  </request>
+
+  <request name="UngrabKey" opcode="34">
+    <field type="CARD8" name="key" />
+    <field type="WINDOW" name="grab_window" />
+    <field type="CARD16" name="modifiers" />
+  </request>
+
+  <request name="AllowEvents" opcode="35">
+    <field type="CARD8" name="mode" />
+    <field type="TIMESTAMP" name="time" />
+  </request>
+
+  <request name="GrabServer" opcode="36" />
+
+  <request name="UngrabServer" opcode="37" />
+
+  <request name="QueryPointer" opcode="38">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <reply>
+      <field type="BOOL" name="same_screen" />
+      <field type="WINDOW" name="root" />
+      <field type="WINDOW" name="child" />
+      <field type="INT16" name="root_x" />
+      <field type="INT16" name="root_y" />
+      <field type="INT16" name="win_x" />
+      <field type="INT16" name="win_y" />
+      <field type="CARD16" name="mask" />
+    </reply>
+  </request>
+
+  <struct name="TIMECOORD">
+    <field type="TIMESTAMP" name="time" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+  </struct>
+
+  <request name="GetMotionEvents" opcode="39">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <field type="TIMESTAMP" name="start" />
+    <field type="TIMESTAMP" name="stop" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="events_len" />
+      <pad bytes="20" />
+      <list type="TIMECOORD" name="events">
+        <fieldref>events_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="TranslateCoordinates" opcode="40">
+    <pad bytes="1" />
+    <field type="WINDOW" name="src_window" />
+    <field type="WINDOW" name="dst_window" />
+    <field type="INT16" name="src_x" />
+    <field type="INT16" name="src_y" />
+    <reply>
+      <field type="BOOL" name="same_screen" />
+      <field type="WINDOW" name="child" />
+      <field type="CARD16" name="dst_x" />
+      <field type="CARD16" name="dst_y" />
+    </reply>
+  </request>
+
+  <request name="WarpPointer" opcode="41">
+    <pad bytes="1" />
+    <field type="WINDOW" name="src_window" />
+    <field type="WINDOW" name="dst_window" />
+    <field type="INT16" name="src_x" />
+    <field type="INT16" name="src_y" />
+    <field type="CARD16" name="src_width" />
+    <field type="CARD16" name="src_height" />
+    <field type="INT16" name="dst_x" />
+    <field type="INT16" name="dst_y" />
+  </request>
+
+  <request name="SetInputFocus" opcode="42">
+    <field type="CARD8" name="revert_to" />
+    <field type="WINDOW" name="focus" />
+    <field type="TIMESTAMP" name="time" />
+  </request>
+
+  <request name="GetInputFocus" opcode="43">
+    <reply>
+      <field type="CARD8" name="revert_to" />
+      <field type="WINDOW" name="focus" />
+    </reply>
+  </request>
+
+  <request name="QueryKeymap" opcode="44">
+    <reply>
+      <pad bytes="1" />
+      <list type="CARD8" name="keys"><value>32</value></list>
+    </reply>
+  </request>
+
+  <request name="OpenFont" opcode="45">
+    <pad bytes="1" />
+    <field type="FONT" name="fid" />
+    <field type="CARD16" name="name_len" />
+    <list type="char" name="name">
+      <fieldref>name_len</fieldref>
+    </list>
+  </request>
+
+  <request name="CloseFont" opcode="46">
+    <pad bytes="1" />
+    <field type="FONT" name="font" />
+  </request>
+
+  <struct name="FONTPROP">
+    <field type="ATOM" name="name" />
+    <field type="CARD32" name="value" />
+  </struct>
+
+  <struct name="CHARINFO">
+    <field type="INT16" name="left_side_bearing" />
+    <field type="INT16" name="right_side_bearing" />
+    <field type="INT16" name="character_width" />
+    <field type="INT16" name="ascent" />
+    <field type="INT16" name="descent" />
+    <field type="CARD16" name="attributes" />
+  </struct>
+
+  <request name="QueryFont" opcode="47">
+    <pad bytes="1" />
+    <field type="FONTABLE" name="font" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CHARINFO" name="min_bounds" />
+      <pad bytes="4" />
+      <field type="CHARINFO" name="max_bounds" />
+      <pad bytes="4" />
+      <field type="CARD16" name="min_char_or_byte2" />
+      <field type="CARD16" name="max_char_or_byte2" />
+      <field type="CARD16" name="default_char" />
+      <field type="CARD16" name="properties_len" />
+      <field type="BYTE" name="draw_direction" />
+      <field type="CARD8" name="min_byte1" />
+      <field type="CARD8" name="max_byte1" />
+      <field type="BOOL" name="all_chars_exist" />
+      <field type="INT16" name="font_ascent" />
+      <field type="INT16" name="font_descent" />
+      <field type="CARD32" name="char_infos_len" />
+      <list type="FONTPROP" name="properties">
+        <fieldref>properties_len</fieldref>
+      </list>
+      <list type="CHARINFO" name="char_infos">
+        <fieldref>char_infos_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="QueryTextExtents" opcode="48">
+    <exprfield type="BOOL" name="odd_length">
+      <op op="&amp;"><fieldref>string_len</fieldref><value>1</value></op>
+    </exprfield>
+    <field type="FONTABLE" name="font" />
+    <list type="CHAR2B" name="string" />
+    <reply>
+      <field type="BYTE" name="draw_direction" />
+      <field type="INT16" name="font_ascent" />
+      <field type="INT16" name="font_descent" />
+      <field type="INT16" name="overall_ascent" />
+      <field type="INT16" name="overall_descent" />
+      <field type="INT32" name="overall_width" />
+      <field type="INT32" name="overall_left" />
+      <field type="INT32" name="overall_right" />
+    </reply>
+  </request>
+
+  <struct name="STR">
+    <field type="CARD8" name="name_len" />
+    <list type="char" name="name">
+      <fieldref>name_len</fieldref>
+    </list>
+  </struct>
+
+  <request name="ListFonts" opcode="49">
+    <pad bytes="1" />
+    <field type="CARD16" name="max_names" />
+    <field type="CARD16" name="pattern_len" />
+    <list type="char" name="pattern">
+      <fieldref>pattern_len</fieldref>
+    </list>
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="names_len" />
+      <pad bytes="22" />
+      <list type="STR" name="names">
+        <fieldref>names_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="ListFontsWithInfo" opcode="50">
+    <pad bytes="1" />
+    <field type="CARD16" name="max_names" />
+    <field type="CARD16" name="pattern_len" />
+    <list type="char" name="pattern">
+      <fieldref>pattern_len</fieldref>
+    </list>
+    <reply>
+      <field type="CARD8" name="name_len" />
+      <field type="CHARINFO" name="min_bounds" />
+      <pad bytes="4" />
+      <field type="CHARINFO" name="max_bounds" />
+      <pad bytes="4" />
+      <field type="CARD16" name="min_char_or_byte2" />
+      <field type="CARD16" name="max_char_or_byte2" />
+      <field type="CARD16" name="default_char" />
+      <field type="CARD16" name="properties_len" />
+      <field type="BYTE" name="draw_direction" />
+      <field type="CARD8" name="min_byte1" />
+      <field type="CARD8" name="max_byte1" />
+      <field type="BOOL" name="all_chars_exist" />
+      <field type="INT16" name="font_ascent" />
+      <field type="INT16" name="font_descent" />
+      <field type="CARD32" name="replies_hint" />
+      <list type="FONTPROP" name="properties">
+        <fieldref>properties_len</fieldref>
+      </list>
+      <list type="char" name="name">
+        <fieldref>name_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="SetFontPath" opcode="51">
+    <pad bytes="1" />
+    <field type="CARD16" name="font_qty" />
+    <list type="char" name="path" />
+  </request>
+
+  <request name="GetFontPath" opcode="52">
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="path_len" />
+      <pad bytes="22" />
+      <list type="STR" name="path">
+        <fieldref>path_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="CreatePixmap" opcode="53">
+    <field type="CARD8" name="depth" />
+    <field type="PIXMAP" name="pid" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+  </request>
+
+  <request name="FreePixmap" opcode="54">
+    <pad bytes="1" />
+    <field type="PIXMAP" name="pixmap" />
+  </request>
+
+  <request name="CreateGC" opcode="55">
+    <pad bytes="1" />
+    <field type="GCONTEXT" name="cid" />
+    <field type="DRAWABLE" name="drawable" />
+    <valueparam value-mask-type="CARD32"
+                value-mask-name="value_mask"
+                value-list-name="value_list" />
+  </request>
+
+  <request name="ChangeGC" opcode="56">
+    <pad bytes="1" />
+    <field type="GCONTEXT" name="gc" />
+    <valueparam value-mask-type="CARD32"
+                value-mask-name="value_mask"
+                value-list-name="value_list" />
+  </request>
+
+  <request name="CopyGC" opcode="57">
+    <pad bytes="1" />
+    <field type="GCONTEXT" name="src_gc" />
+    <field type="GCONTEXT" name="dst_gc" />
+    <field type="CARD32" name="value_mask" />
+  </request>
+
+  <request name="SetDashes" opcode="58">
+    <pad bytes="1" />
+    <field type="GCONTEXT" name="gc" />
+    <field type="CARD16" name="dash_offset" />
+    <field type="CARD16" name="dashes_len" />
+    <list type="CARD8" name="dashes">
+      <fieldref>dashes_len</fieldref>
+    </list>
+  </request>
+
+  <request name="SetClipRectangles" opcode="59">
+    <field type="BYTE" name="ordering" />
+    <field type="GCONTEXT" name="gc" />
+    <field type="INT16" name="clip_x_origin" />
+    <field type="INT16" name="clip_y_origin" />
+    <list type="RECTANGLE" name="rectangles" />
+  </request>
+
+  <request name="FreeGC" opcode="60">
+    <pad bytes="1" />
+    <field type="GCONTEXT" name="gc" />
+  </request>
+
+  <request name="ClearArea" opcode="61">
+    <field type="BOOL" name="exposures" />
+    <field type="WINDOW" name="window" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+  </request>
+
+  <request name="CopyArea" opcode="62">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="src_drawable" />
+    <field type="DRAWABLE" name="dst_drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <field type="INT16" name="src_x" />
+    <field type="INT16" name="src_y" />
+    <field type="INT16" name="dst_x" />
+    <field type="INT16" name="dst_y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+  </request>
+
+  <request name="CopyPlane" opcode="63">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="src_drawable" />
+    <field type="DRAWABLE" name="dst_drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <field type="INT16" name="src_x" />
+    <field type="INT16" name="src_y" />
+    <field type="INT16" name="dst_x" />
+    <field type="INT16" name="dst_y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="CARD32" name="bit_plane" />
+  </request>
+
+  <request name="PolyPoint" opcode="64" combine-adjacent="true">
+    <field type="BYTE" name="coordinate_mode" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <list type="POINT" name="points" />
+  </request>
+
+  <request name="PolyLine" opcode="65" combine-adjacent="true">
+    <field type="BYTE" name="coordinate_mode" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <list type="POINT" name="points" />
+  </request>
+
+  <struct name="SEGMENT">
+    <field type="INT16" name="x1" />
+    <field type="INT16" name="y1" />
+    <field type="INT16" name="x2" />
+    <field type="INT16" name="y2" />
+  </struct>
+
+  <request name="PolySegment" opcode="66" combine-adjacent="true">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <list type="SEGMENT" name="segments" />
+  </request>
+
+  <request name="PolyRectangle" opcode="67" combine-adjacent="true">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <list type="RECTANGLE" name="rectangles" />
+  </request>
+
+  <!--
+    The semantics of PolyArc change after the first arc: the GC's
+    join style may be applied to successive arcs under some circumstances.
+    So using combine-adjacent here is bad.
+  -->
+  <request name="PolyArc" opcode="68">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <list type="ARC" name="arcs" />
+  </request>
+
+  <request name="FillPoly" opcode="69">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <field type="CARD8" name="shape" />
+    <field type="CARD8" name="coordinate_mode" />
+    <list type="POINT" name="points" />
+  </request>
+
+  <request name="PolyFillRectangle" opcode="70" combine-adjacent="true">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <list type="RECTANGLE" name="rectangles" />
+  </request>
+
+  <request name="PolyFillArc" opcode="71" combine-adjacent="true">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <list type="ARC" name="arcs" />
+  </request>
+
+  <request name="PutImage" opcode="72">
+    <field type="CARD8" name="format" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="INT16" name="dst_x" />
+    <field type="INT16" name="dst_y" />
+    <field type="CARD8" name="left_pad" />
+    <field type="CARD8" name="depth" />
+    <list type="BYTE" name="data" />
+  </request>
+
+  <!-- FIXME: data array in reply will include padding, but ought not to. -->
+  <request name="GetImage" opcode="73">
+    <field type="CARD8" name="format" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="CARD32" name="plane_mask" />
+    <reply>
+      <field type="CARD8" name="depth" />
+      <field type="VISUALID" name="visual" />
+      <pad bytes="20" />
+      <list type="BYTE" name="data">
+        <op op="*">
+          <fieldref>length</fieldref>
+          <value>4</value>
+        </op>
+      </list>
+    </reply>
+  </request>
+
+  <request name="PolyText8" opcode="74">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <list type="BYTE" name="items" />
+  </request>
+
+  <request name="PolyText16" opcode="75">
+    <pad bytes="1" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <list type="BYTE" name="items" />
+  </request>
+
+  <request name="ImageText8" opcode="76">
+    <field type="BYTE" name="string_len" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <list type="char" name="string">
+      <fieldref>string_len</fieldref>
+    </list>
+  </request>
+
+  <request name="ImageText16" opcode="77">
+    <field type="BYTE" name="string_len" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="GCONTEXT" name="gc" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <list type="CHAR2B" name="string">
+      <fieldref>string_len</fieldref>
+    </list>
+  </request>
+
+  <request name="CreateColormap" opcode="78">
+    <field type="BYTE" name="alloc" />
+    <field type="COLORMAP" name="mid" />
+    <field type="WINDOW" name="window" />
+    <field type="VISUALID" name="visual" />
+  </request>
+
+  <request name="FreeColormap" opcode="79">
+    <pad bytes="1" />
+    <field type="COLORMAP" name="cmap" />
+  </request>
+
+  <request name="CopyColormapAndFree" opcode="80">
+    <pad bytes="1" />
+    <field type="COLORMAP" name="mid" />
+    <field type="COLORMAP" name="src_cmap" />
+  </request>
+
+  <request name="InstallColormap" opcode="81">
+    <pad bytes="1" />
+    <field type="COLORMAP" name="cmap" />
+  </request>
+
+  <request name="UninstallColormap" opcode="82">
+    <pad bytes="1" />
+    <field type="COLORMAP" name="cmap" />
+  </request>
+
+  <request name="ListInstalledColormaps" opcode="83">
+    <pad bytes="1" />
+    <field type="WINDOW" name="window" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="cmaps_len" />
+      <pad bytes="22" />
+      <list type="COLORMAP" name="cmaps">
+        <fieldref>cmaps_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="AllocColor" opcode="84">
+    <pad bytes="1" />
+    <field type="COLORMAP" name="cmap" />
+    <field type="CARD16" name="red" />
+    <field type="CARD16" name="green" />
+    <field type="CARD16" name="blue" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="red" />
+      <field type="CARD16" name="green" />
+      <field type="CARD16" name="blue" />
+      <pad bytes="2" />
+      <field type="CARD32" name="pixel" />
+    </reply>
+  </request>
+
+  <request name="AllocNamedColor" opcode="85">
+    <pad bytes="1" />
+    <field type="COLORMAP" name="cmap" />
+    <field type="CARD16" name="name_len" />
+    <list type="char" name="name">
+      <fieldref>name_len</fieldref>
+    </list>
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="pixel" />
+      <field type="CARD16" name="exact_red" />
+      <field type="CARD16" name="exact_green" />
+      <field type="CARD16" name="exact_blue" />
+      <field type="CARD16" name="visual_red" />
+      <field type="CARD16" name="visual_green" />
+      <field type="CARD16" name="visual_blue" />
+    </reply>
+  </request>
+
+  <request name="AllocColorCells" opcode="86">
+    <field type="BOOL" name="contiguous" />
+    <field type="COLORMAP" name="cmap" />
+    <field type="CARD16" name="colors" />
+    <field type="CARD16" name="planes" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="pixels_len" />
+      <field type="CARD16" name="masks_len" />
+      <pad bytes="20" />
+      <list type="CARD32" name="pixels">
+        <fieldref>pixels_len</fieldref>
+      </list>
+      <list type="CARD32" name="masks">
+        <fieldref>masks_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="AllocColorPlanes" opcode="87">
+    <field type="BOOL" name="contiguous" />
+    <field type="COLORMAP" name="cmap" />
+    <field type="CARD16" name="colors" />
+    <field type="CARD16" name="reds" />
+    <field type="CARD16" name="greens" />
+    <field type="CARD16" name="blues" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="pixels_len" />
+      <pad bytes="2" />
+      <field type="CARD32" name="red_mask" />
+      <field type="CARD32" name="green_mask" />
+      <field type="CARD32" name="blue_mask" />
+      <pad bytes="8" />
+      <list type="CARD32" name="pixels">
+        <fieldref>pixels_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="FreeColors" opcode="88">
+    <pad bytes="1" />
+    <field type="COLORMAP" name="cmap" />
+    <field type="CARD32" name="plane_mask" />
+    <list type="CARD32" name="pixels" />
+  </request>
+
+  <struct name="COLORITEM">
+    <field type="CARD32" name="pixel" />
+    <field type="CARD16" name="red" />
+    <field type="CARD16" name="green" />
+    <field type="CARD16" name="blue" />
+    <field type="BYTE" name="flags" />
+    <pad bytes="1" />
+  </struct>
+  
+  <request name="StoreColors" opcode="89" combine-adjacent="true">
+    <pad bytes="1" />
+    <field type="COLORMAP" name="cmap" />
+    <list type="COLORITEM" name="items" />
+  </request>
+
+  <request name="StoreNamedColor" opcode="90">
+    <field type="CARD8" name="flags" />
+    <field type="COLORMAP" name="cmap" />
+    <field type="CARD32" name="pixel" />
+    <field type="CARD16" name="name_len" />
+    <list type="char" name="name">
+      <fieldref>name_len</fieldref>
+    </list>
+  </request>
+
+  <struct name="RGB">
+    <field type="CARD16" name="red" />
+    <field type="CARD16" name="green" />
+    <field type="CARD16" name="blue" />
+    <pad bytes="2" />
+  </struct>
+
+  <request name="QueryColors" opcode="91">
+    <pad bytes="1" />
+    <field type="COLORMAP" name="cmap" />
+    <list type="CARD32" name="pixels" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="colors_len" />
+      <pad bytes="22" />
+      <list type="RGB" name="colors">
+        <fieldref>colors_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="LookupColor" opcode="92">
+    <pad bytes="1" />
+    <field type="COLORMAP" name="cmap" />
+    <field type="CARD16" name="name_len" />
+    <list type="char" name="name">
+      <fieldref>name_len</fieldref>
+    </list>
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="exact_red" />
+      <field type="CARD16" name="exact_green" />
+      <field type="CARD16" name="exact_blue" />
+      <field type="CARD16" name="visual_red" />
+      <field type="CARD16" name="visual_green" />
+      <field type="CARD16" name="visual_blue" />
+    </reply>
+  </request>
+
+  <request name="CreateCursor" opcode="93">
+    <pad bytes="1" />
+    <field type="CURSOR" name="cid" />
+    <field type="PIXMAP" name="source" />
+    <field type="PIXMAP" name="mask" />
+    <field type="CARD16" name="fore_red" />
+    <field type="CARD16" name="fore_green" />
+    <field type="CARD16" name="fore_blue" />
+    <field type="CARD16" name="back_red" />
+    <field type="CARD16" name="back_green" />
+    <field type="CARD16" name="back_blue" />
+    <field type="CARD16" name="x" />
+    <field type="CARD16" name="y" />
+  </request>
+
+  <request name="CreateGlyphCursor" opcode="94">
+    <pad bytes="1" />
+    <field type="CURSOR" name="cid" />
+    <field type="FONT" name="source_font" />
+    <field type="FONT" name="mask_font" />
+    <field type="CARD16" name="source_char" />
+    <field type="CARD16" name="mask_char" />
+    <field type="CARD16" name="fore_red" />
+    <field type="CARD16" name="fore_green" />
+    <field type="CARD16" name="fore_blue" />
+    <field type="CARD16" name="back_red" />
+    <field type="CARD16" name="back_green" />
+    <field type="CARD16" name="back_blue" />
+  </request>
+
+  <request name="FreeCursor" opcode="95">
+    <pad bytes="1" />
+    <field type="CURSOR" name="cursor" />
+  </request>
+
+  <request name="RecolorCursor" opcode="96">
+    <pad bytes="1" />
+    <field type="CURSOR" name="cursor" />
+    <field type="CARD16" name="fore_red" />
+    <field type="CARD16" name="fore_green" />
+    <field type="CARD16" name="fore_blue" />
+    <field type="CARD16" name="back_red" />
+    <field type="CARD16" name="back_green" />
+    <field type="CARD16" name="back_blue" />
+  </request>
+
+  <request name="QueryBestSize" opcode="97">
+    <field type="CARD8" name="class" />
+    <field type="DRAWABLE" name="drawable" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="width" />
+      <field type="CARD16" name="height" />
+    </reply>
+  </request>
+
+  <request name="QueryExtension" opcode="98">
+    <pad bytes="1" />
+    <field type="CARD16" name="name_len" />
+    <list type="char" name="name">
+      <fieldref>name_len</fieldref>
+    </list>
+    <reply>
+      <pad bytes="1" />
+      <field type="BOOL" name="present" />
+      <field type="CARD8" name="major_opcode" />
+      <field type="CARD8" name="first_event" />
+      <field type="CARD8" name="first_error" />
+    </reply>
+  </request>
+
+  <request name="ListExtensions" opcode="99">
+    <reply>
+      <field type="CARD8" name="names_len" />
+      <pad bytes="24" />
+      <list type="STR" name="names">
+        <fieldref>names_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="ChangeKeyboardMapping" opcode="100">
+    <field type="CARD8" name="keycode_count" />
+    <field type="KEYCODE" name="first_keycode" />
+    <field type="CARD8" name="keysyms_per_keycode" />
+    <list type="KEYSYM" name="keysyms">
+      <op op="*">
+        <fieldref>keycode_count</fieldref>
+        <fieldref>keysyms_per_keycode</fieldref>
+      </op>
+    </list>
+  </request>
+
+  <request name="GetKeyboardMapping" opcode="101">
+    <pad bytes="1" />
+    <field type="KEYCODE" name="first_keycode" />
+    <field type="CARD8" name="count" />
+    <reply>
+      <field type="BYTE" name="keysyms_per_keycode" />
+      <pad bytes="24" />
+      <list type="KEYSYM" name="keysyms">
+        <op op="*">
+          <fieldref>length</fieldref>
+          <value>4</value>
+        </op>
+      </list>
+    </reply>
+  </request>
+
+  <request name="ChangeKeyboardControl" opcode="102">
+    <pad bytes="1" />
+    <valueparam value-mask-type="CARD32"
+                value-mask-name="value_mask"
+                value-list-name="value_list" />
+  </request>
+
+  <request name="GetKeyboardControl" opcode="103">
+    <reply>
+      <field type="BYTE" name="global_auto_repeat" />
+      <field type="CARD32" name="led_mask" />
+      <field type="CARD8" name="key_click_percent" />
+      <field type="CARD8" name="bell_percent" />
+      <field type="CARD16" name="bell_pitch" />
+      <field type="CARD16" name="bell_duration" />
+      <pad bytes="2" />
+      <list type="CARD8" name="auto_repeats"><value>32</value></list>
+    </reply>
+  </request>
+
+  <request name="Bell" opcode="104">
+    <field type="INT8" name="percent" />
+  </request>
+
+  <request name="ChangePointerControl" opcode="105">
+    <pad bytes="1" />
+    <field type="INT16" name="acceleration_numerator" />
+    <field type="INT16" name="acceleration_denominator" />
+    <field type="INT16" name="threshold" />
+    <field type="BOOL" name="do_acceleration" />
+    <field type="BOOL" name="do_threshold" />
+  </request>
+
+  <request name="GetPointerControl" opcode="106">
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="acceleration_numerator" />
+      <field type="CARD16" name="acceleration_denominator" />
+      <field type="CARD16" name="threshold" />
+    </reply>
+  </request>
+
+  <request name="SetScreenSaver" opcode="107">
+    <pad bytes="1" />
+    <field type="INT16" name="timeout" />
+    <field type="INT16" name="interval" />
+    <field type="CARD8" name="prefer_blanking" />
+    <field type="CARD8" name="allow_exposures" />
+  </request>
+
+  <request name="GetScreenSaver" opcode="108">
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD16" name="timeout" />
+      <field type="CARD16" name="interval" />
+      <field type="BYTE" name="prefer_blanking" />
+      <field type="BYTE" name="allow_exposures" />
+    </reply>
+  </request>
+
+  <request name="ChangeHosts" opcode="109">
+    <field type="CARD8" name="mode" />
+    <field type="CARD8" name="family" />
+    <pad bytes="1" />
+    <field type="CARD16" name="address_len" />
+    <list type="char" name="address">
+      <fieldref>address_len</fieldref>
+    </list>
+  </request>
+
+  <struct name="HOST">
+    <field type="CARD8" name="family" />
+    <pad bytes="1" />
+    <field type="CARD16" name="address_len" />
+    <list type="BYTE" name="address">
+      <fieldref>address_len</fieldref>
+    </list>
+  </struct>
+
+  <request name="ListHosts" opcode="110">
+    <reply>
+      <field type="BYTE" name="mode" />
+      <field type="CARD16" name="hosts_len" />
+      <pad bytes="22" />
+      <list type="HOST" name="hosts">
+        <fieldref>hosts_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="SetAccessControl" opcode="111">
+    <field type="CARD8" name="mode" />
+  </request>
+
+  <request name="SetCloseDownMode" opcode="112">
+    <field type="CARD8" name="mode" />
+  </request>
+
+  <request name="KillClient" opcode="113">
+    <pad bytes="1" />
+    <field type="CARD32" name="resource" />
+  </request>
+
+  <request name="RotateProperties" opcode="114">
+    <field type="WINDOW" name="window" />
+    <field type="CARD16" name="atoms_len" />
+    <field type="INT16" name="delta" />
+    <list type="ATOM" name="atoms">
+      <fieldref>atoms_len</fieldref>
+    </list>
+  </request>
+
+  <request name="ForceScreenSaver" opcode="115">
+    <field type="CARD8" name="mode" />
+  </request>
+
+  <request name="SetPointerMapping" opcode="116">
+    <field type="CARD8" name="map_len" />
+    <list type="CARD8" name="map">
+      <fieldref>map_len</fieldref>
+    </list>
+    <reply>
+      <field type="BYTE" name="status" />
+    </reply>
+  </request>
+
+  <request name="GetPointerMapping" opcode="117">
+    <reply>
+      <field type="CARD8" name="map_len" />
+      <pad bytes="24" />
+      <list type="CARD8" name="map">
+        <fieldref>map_len</fieldref>
+      </list>
+    </reply>
+  </request>
+
+  <request name="SetModifierMapping" opcode="118">
+    <field type="CARD8" name="keycodes_per_modifier" />
+    <list type="KEYCODE" name="keycodes">
+      <op op="*">
+        <fieldref>keycodes_per_modifier</fieldref>
+        <value>8</value>
+      </op>
+    </list>
+    <reply>
+      <field type="BYTE" name="status" />
+    </reply>
+  </request>
+
+  <request name="GetModifierMapping" opcode="119">
+    <reply>
+      <field type="CARD8" name="keycodes_per_modifier" />
+      <pad bytes="24" />
+      <list type="KEYCODE" name="keycodes">
+        <op op="*">
+          <fieldref>keycodes_per_modifier</fieldref>
+          <value>8</value>
+        </op>
+      </list>
+    </reply>
+  </request>
+
+  <!--
+    FIXME: NoOperation should allow specifying payload length
+    but geez, malloc()ing a 262140 byte buffer just so I have something
+    to hand to write(2) seems silly...!
+  -->
+  <request name="NoOperation" opcode="127" />
+
+</xcb>
diff --git a/xcb-proto.pc.in b/xcb-proto.pc.in
new file mode 100644 (file)
index 0000000..1e2e8f6
--- /dev/null
@@ -0,0 +1,7 @@
+prefix=@prefix@
+includedir=@includedir@
+xcbincludedir=@xcbincludedir@
+
+Name: XCBProto
+Description: X protocol descriptions for XCB
+Version: @PACKAGE_VERSION@