Radix cross Linux

The main Radix cross Linux repository contains the build scripts of packages, which have the most complete and common functionality for desktop machines

383 Commits   1 Branch   1 Tag
Index: Makefile
===================================================================
--- Makefile	(nonexistent)
+++ Makefile	(revision 5)
@@ -0,0 +1,13 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+SOURCE_REQUIRES += ALL_DIRS
+
+
+include ../../../build-system/core.mk
+
+
+download_clean:
+	@true
+
+.PHONY: download_clean
Index: applewmproto/Makefile
===================================================================
--- applewmproto/Makefile	(nonexistent)
+++ applewmproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/applewmproto
+
+versions    = 1.4.2
+pkgname     = applewmproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: applewmproto
===================================================================
--- applewmproto	(nonexistent)
+++ applewmproto	(revision 5)

Property changes on: applewmproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: bigreqsproto/Makefile
===================================================================
--- bigreqsproto/Makefile	(nonexistent)
+++ bigreqsproto/Makefile	(revision 5)
@@ -0,0 +1,56 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/bigreqsproto
+
+versions    = 1.1.2
+pkgname     = bigreqsproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+patches     = $(CURDIR)/patches/bigreqsproto-1.1.2-docbook.patch
+
+.NOTPARALLEL: $(patches)
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s) $(patches)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+$(patches): $(sha1s)
+	@echo -e "\n======= Create Patches =======\n" ; \
+	 ( cd create-1.1.2-docbook-patch ; ./create.patch.sh ) ; \
+	 echo -e "\n"
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s) $(patches)
Index: bigreqsproto/create-1.1.2-docbook-patch/bigreqsproto-1.1.2-new/specs/bigreq.xml
===================================================================
--- bigreqsproto/create-1.1.2-docbook-patch/bigreqsproto-1.1.2-new/specs/bigreq.xml	(nonexistent)
+++ bigreqsproto/create-1.1.2-docbook-patch/bigreqsproto-1.1.2-new/specs/bigreq.xml	(revision 5)
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+                   "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+<!ENTITY % defs SYSTEM "defs.ent"> %defs;
+]>
+
+<!-- lifted from troff+ms+XMan by doclifter -->
+<book id="bigreq">
+
+<bookinfo>
+   <title>Big Requests Extension</title>
+   <subtitle>X Consortium Standard</subtitle>
+   <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo>
+   <releaseinfo>Version 2.0</releaseinfo>
+   <authorgroup>
+      <author>
+         <firstname>Bob</firstname><surname>Scheifler</surname>
+         <affiliation><orgname>X Consortium</orgname></affiliation>
+      </author>
+   </authorgroup>
+   <copyright><year>1993</year><year>1994</year><holder>X Consortium</holder></copyright>
+
+<legalnotice>
+<para>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &ldquo;Software&rdquo;), 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:</para>
+
+<para>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</para>
+
+<para>THE SOFTWARE IS PROVIDED &ldquo;AS IS&rdquo;, 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 X CONSORTIUM 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.</para>
+
+<para>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</para>
+
+<para>X Window System is a trademark of The Open Group.</para>
+</legalnotice>
+
+</bookinfo>
+
+<chapter id='Overview'>
+<title>Overview</title>
+
+<para>This extension enables the use of protocol requests that exceed 262140 bytes in length.</para>
+
+<para>The core protocol restricts the maximum length of a protocol request to 262140 bytes, in that it uses a 16-bit length field specifying the number of 4-byte units in the request.  This is a problem in the core protocol when joining large numbers of lines (<symbol role='Pn'>PolyLine</symbol>) or arcs (<symbol role='Pn'>PolyArc</symbol>), since these requests cannot be broken up into smaller requests without disturbing the rendering of the join points.  It is also much more of a problem for protocol extensions, such as the PEX extension for 3D graphics and the XIE extension for imaging, that need to send long data lists in output commands.</para>
+
+<para>This extension defines a mechanism for extending the length field beyond 16 bits.  If the normal 16-bit length field of the protocol request is zero, then an additional 32-bit field containing the actual length (in 4-byte units) is inserted into the request, immediately following the 16-bit length field.</para>
+
+<para>For example, a normal <function>PolyLine</function> encoding is:</para>
+
+<informaltable id='PolyLine' frame='none'>
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='4' align='left' colsep='0' rowsep='0'>
+    <colspec colname='c1' colwidth='1.0*'/>
+    <colspec colname='c2' colwidth='3.0*'/>
+    <colspec colname='c3' colwidth='2.0*'/>
+    <colspec colname='c4' colwidth='11.0*'/>
+    <thead>
+      <row>
+        <entry namest="c1" nameend="c4"><function>PolyLine</function></entry>
+      </row>
+    </thead>
+    <tbody>
+      <row>
+        <entry>1</entry>
+        <entry>65</entry>
+        <entry></entry>
+        <entry>opcode</entry>
+      </row>
+      <row>
+        <entry>1</entry>
+        <entry></entry>
+        <entry></entry>
+        <entry>coordinate-mode</entry>
+      </row>
+      <row>
+        <entry></entry>
+        <entry>0</entry>
+        <entry>Origin</entry>
+        <entry></entry>
+      </row>
+      <row>
+        <entry></entry>
+        <entry>1</entry>
+        <entry>Previous</entry>
+        <entry></entry>
+      </row>
+      <row>
+        <entry>2</entry>
+        <entry>3+n</entry>
+        <entry></entry>
+        <entry></entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>DRAWABLE</entry>
+        <entry></entry>
+        <entry>drawable</entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>GCONTEXT</entry>
+        <entry></entry>
+        <entry>gc</entry>
+      </row>
+      <row>
+        <entry>4n</entry>
+        <entry>LISTofPOINT</entry>
+        <entry></entry>
+        <entry>points</entry>
+      </row>
+     </tbody>
+  </tgroup>
+</informaltable>
+
+<para>An extended-length <function>PolyLine</function> encoding is:</para>
+
+<informaltable frame='none'>
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='4' align='left' colsep='0' rowsep='0'>
+    <colspec colname='c1' colwidth='1.0*'/>
+    <colspec colname='c2' colwidth='3.0*'/>
+    <colspec colname='c3' colwidth='2.0*'/>
+    <colspec colname='c4' colwidth='11.0*'/>
+    <thead>
+      <row>
+        <entry namest="c1" nameend="c4"><function>PolyLine</function></entry>
+      </row>
+    </thead>
+    <tbody>
+      <row>
+        <entry>1</entry>
+        <entry>65</entry>
+        <entry></entry>
+        <entry>opcode</entry>
+      </row>
+      <row>
+        <entry>1</entry>
+        <entry></entry>
+        <entry></entry>
+        <entry>coordinate-mode</entry>
+      </row>
+      <row>
+        <entry></entry>
+        <entry>0</entry>
+        <entry>Origin</entry>
+        <entry></entry>
+      </row>
+      <row>
+        <entry></entry>
+        <entry>1</entry>
+        <entry>Previous</entry>
+        <entry></entry>
+      </row>
+      <row>
+        <entry>2</entry>
+        <entry>0</entry>
+        <entry></entry>
+        <entry>extended length flag</entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>4+n</entry>
+        <entry></entry>
+        <entry>request length</entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>DRAWABLE</entry>
+        <entry></entry>
+        <entry>drawable</entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>GCONTEXT</entry>
+        <entry></entry>
+        <entry>gc</entry>
+      </row>
+      <row>
+        <entry>4n</entry>
+        <entry>LISTofPOINT</entry>
+        <entry></entry>
+        <entry>points</entry>
+      </row>
+     </tbody>
+  </tgroup>
+</informaltable>
+
+<para>Extended-length protocol encodings, once enabled, can be used on all protocol requests, including all extensions.</para>
+</chapter>
+
+<chapter id='Requests'>
+<title>Requests</title>
+
+<para><function>BigReqEnable</function></para>
+
+<para>   =&gt;</para>
+
+<para><emphasis remap='I'>maximum-request-length</emphasis>: CARD32</para>
+
+<para>This request enables extended-length protocol requests for the requesting client.  It also returns the maximum length of a request, in 4-byte units, that can be used in extended-length protocol requests.  This value will always be greater than the maximum-request-length returned in the connection setup information.</para>
+</chapter>
+
+<chapter id='Events_and_Errors'>
+<title>Events and Errors</title>
+
+<para>No new events or errors are defined by this extension.</para>
+</chapter>
+
+<chapter id='Encoding'>
+<title>Encoding</title>
+
+<para>Please refer to the X11 Protocol Encoding document as this document uses conventions established there.</para>
+
+<para>The name of this extension is &ldquo;BIG-REQUESTS&rdquo;.</para>
+
+<informaltable frame='none'>
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+    <colspec colname='c1' colwidth='1.0*'/>
+    <colspec colname='c2' colwidth='2.0*'/>
+    <colspec colname='c3' colwidth='15.0*'/>
+    <thead>
+      <row>
+        <entry namest="c1" nameend="c3">BigReqEnable</entry>
+      </row>
+    </thead>
+    <tbody>
+      <row>
+        <entry>1</entry>
+        <entry>Card8</entry>
+        <entry>opcode</entry>
+      </row>
+      <row>
+        <entry>1</entry>
+        <entry>0</entry>
+        <entry>bigreq opcode</entry>
+      </row>
+      <row>
+        <entry>2</entry>
+        <entry>1</entry>
+        <entry>request length</entry>
+      </row>
+     </tbody>
+  </tgroup>
+  <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+    <colspec colname='c1' colwidth='1.0*'/>
+    <colspec colname='c2' colwidth='2.0*'/>
+    <colspec colname='c3' colwidth='15.0*'/>
+    <thead>
+      <row>
+        <entry namest="c1" nameend="c3">=&gt;</entry>
+      </row>
+    </thead>
+    <tbody>
+      <row>
+        <entry>1</entry>
+        <entry>1</entry>
+        <entry>Reply</entry>
+      </row>
+      <row>
+        <entry>1</entry>
+        <entry></entry>
+        <entry>unused</entry>
+      </row>
+      <row>
+        <entry>2</entry>
+        <entry>CARD16</entry>
+        <entry>sequence number</entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>0</entry>
+        <entry>length</entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>CARD32</entry>
+        <entry>maximum-request-length</entry>
+      </row>
+      <row>
+        <entry>20</entry>
+        <entry></entry>
+        <entry>unused</entry>
+      </row>
+     </tbody>
+  </tgroup>
+</informaltable>
+
+</chapter>
+
+<chapter id='C_Language_Binding'>
+<title>C language binding</title>
+
+<para>It is desirable for core Xlib, and other extensions, to use this extension internally when necessary.
+It is also desirable to make the use of this extension as transparent as possible to the X client.
+For example, if enabling of the extension were delayed until the first time it was needed, an application that used
+<function>XNextRequest</function> to determine the sequence number of a request would no longer get the correct sequence number.  As such,
+<function>XOpenDisplay</function> will determine if the extension is supported by the server and, if it is, enable extended-length
+encodings.</para>
+
+<para>The core Xlib functions <function>XDrawLines</function>, <function>XDrawArcs</function>, <function>XFillPolygon</function>, <function>XChangeProperty</function>, <function>XSetClipRectangles</function>, and <function>XSetRegion</function>
+are required to use extended-length encodings when necessary, if supported by the server.  Use of extended-length encodings
+in other core Xlib functions (<function>XDrawPoints</function>, <function>XDrawRectangles</function>, <function>XDrawSegments</function>). <function>XFillArcs</function>, <function>XFillRectangles</function>, <function>XPutImage</function>
+is permitted but not required; an Xlib implementation may choose to split the data across multiple smaller requests
+instead.</para>
+
+<para>To permit clients to know what the maximum-request-length for extended-length encodings is, the following function is added to Xlib:
+
+<funcsynopsis id='XExtendedMaxRequestSize'>
+<funcprototype>
+  <funcdef>long <function>XExtendedMaxRequestSize</function></funcdef>
+    <paramdef>Display <parameter> *display</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+Returns zero (0) if the specified display does not support this extension, otherwise returns the maximum-request-length (in 4-byte units) supported by the server through the extended-length encoding.</para>
+</chapter>
+
+<chapter id='Acknowledgements'>
+<title>Acknowledgements</title>
+
+<para>Clive Feather (IXI) originated the extended-length encoding used in this extension proposal.</para>
+</chapter>
+</book>
Index: bigreqsproto/create-1.1.2-docbook-patch/bigreqsproto-1.1.2-new/specs
===================================================================
--- bigreqsproto/create-1.1.2-docbook-patch/bigreqsproto-1.1.2-new/specs	(nonexistent)
+++ bigreqsproto/create-1.1.2-docbook-patch/bigreqsproto-1.1.2-new/specs	(revision 5)

Property changes on: bigreqsproto/create-1.1.2-docbook-patch/bigreqsproto-1.1.2-new/specs
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: bigreqsproto/create-1.1.2-docbook-patch/bigreqsproto-1.1.2-new
===================================================================
--- bigreqsproto/create-1.1.2-docbook-patch/bigreqsproto-1.1.2-new	(nonexistent)
+++ bigreqsproto/create-1.1.2-docbook-patch/bigreqsproto-1.1.2-new	(revision 5)

Property changes on: bigreqsproto/create-1.1.2-docbook-patch/bigreqsproto-1.1.2-new
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: bigreqsproto/create-1.1.2-docbook-patch/create.patch.sh
===================================================================
--- bigreqsproto/create-1.1.2-docbook-patch/create.patch.sh	(nonexistent)
+++ bigreqsproto/create-1.1.2-docbook-patch/create.patch.sh	(revision 5)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=1.1.2
+
+tar --files-from=file.list -xjvf ../bigreqsproto-$VERSION.tar.bz2
+mv bigreqsproto-$VERSION bigreqsproto-$VERSION-orig
+
+cp -rf ./bigreqsproto-$VERSION-new ./bigreqsproto-$VERSION
+
+diff --unified -Nr  bigreqsproto-$VERSION-orig  bigreqsproto-$VERSION > bigreqsproto-$VERSION-docbook.patch
+
+mv bigreqsproto-$VERSION-docbook.patch ../patches
+
+rm -rf ./bigreqsproto-$VERSION
+rm -rf ./bigreqsproto-$VERSION-orig

Property changes on: bigreqsproto/create-1.1.2-docbook-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: bigreqsproto/create-1.1.2-docbook-patch/file.list
===================================================================
--- bigreqsproto/create-1.1.2-docbook-patch/file.list	(nonexistent)
+++ bigreqsproto/create-1.1.2-docbook-patch/file.list	(revision 5)
@@ -0,0 +1 @@
+bigreqsproto-1.1.2/specs/bigreq.xml
Index: bigreqsproto/create-1.1.2-docbook-patch
===================================================================
--- bigreqsproto/create-1.1.2-docbook-patch	(nonexistent)
+++ bigreqsproto/create-1.1.2-docbook-patch	(revision 5)

Property changes on: bigreqsproto/create-1.1.2-docbook-patch
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: bigreqsproto/patches/README
===================================================================
--- bigreqsproto/patches/README	(nonexistent)
+++ bigreqsproto/patches/README	(revision 5)
@@ -0,0 +1,6 @@
+
+/* begin *
+
+   TODO: Leave some comment here.
+
+ * end */
Index: bigreqsproto/patches
===================================================================
--- bigreqsproto/patches	(nonexistent)
+++ bigreqsproto/patches	(revision 5)

Property changes on: bigreqsproto/patches
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: bigreqsproto
===================================================================
--- bigreqsproto	(nonexistent)
+++ bigreqsproto	(revision 5)

Property changes on: bigreqsproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: compositeproto/Makefile
===================================================================
--- compositeproto/Makefile	(nonexistent)
+++ compositeproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/compositeproto
+
+versions    = 0.4.2
+pkgname     = compositeproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: compositeproto
===================================================================
--- compositeproto	(nonexistent)
+++ compositeproto	(revision 5)

Property changes on: compositeproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: damageproto/Makefile
===================================================================
--- damageproto/Makefile	(nonexistent)
+++ damageproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/damageproto
+
+versions    = 1.2.1
+pkgname     = damageproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: damageproto
===================================================================
--- damageproto	(nonexistent)
+++ damageproto	(revision 5)

Property changes on: damageproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: dmxproto/Makefile
===================================================================
--- dmxproto/Makefile	(nonexistent)
+++ dmxproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/dmxproto
+
+versions    = 2.3.1
+pkgname     = dmxproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: dmxproto
===================================================================
--- dmxproto	(nonexistent)
+++ dmxproto	(revision 5)

Property changes on: dmxproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: dri2proto/Makefile
===================================================================
--- dri2proto/Makefile	(nonexistent)
+++ dri2proto/Makefile	(revision 5)
@@ -0,0 +1,56 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/dri2proto
+
+versions    = 2.8
+pkgname     = dri2proto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+patches     = $(CURDIR)/patches/dri2proto-2.8-ti-glsdk.patch
+
+.NOTPARALLEL: $(patches)
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s) $(patches)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+$(patches): $(sha1s)
+	@echo -e "\n======= Create Patches =======\n" ; \
+	 ( cd create-2.8-ti-glsdk-patch ; ./create.patch.sh ) ; \
+	 echo -e "\n"
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s) $(patches)
Index: dri2proto/create-2.8-ti-glsdk-patch/create.patch.sh
===================================================================
--- dri2proto/create-2.8-ti-glsdk-patch/create.patch.sh	(nonexistent)
+++ dri2proto/create-2.8-ti-glsdk-patch/create.patch.sh	(revision 5)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=2.8
+
+tar --files-from=file.list -xjvf ../dri2proto-$VERSION.tar.bz2
+mv dri2proto-$VERSION dri2proto-$VERSION-orig
+
+cp -rf ./dri2proto-$VERSION-new ./dri2proto-$VERSION
+
+diff --unified -Nr  dri2proto-$VERSION-orig  dri2proto-$VERSION > dri2proto-$VERSION-ti-glsdk.patch
+
+mv dri2proto-$VERSION-ti-glsdk.patch ../patches
+
+rm -rf ./dri2proto-$VERSION
+rm -rf ./dri2proto-$VERSION-orig

Property changes on: dri2proto/create-2.8-ti-glsdk-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new/dri2proto.h
===================================================================
--- dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new/dri2proto.h	(nonexistent)
+++ dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new/dri2proto.h	(revision 5)
@@ -0,0 +1,446 @@
+/*
+ * Copyright © 2008 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Soft-
+ * ware"), to deal in the Software without restriction, including without
+ * limitation the rights to use, copy, modify, merge, publish, distribute,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, provided that the above copyright
+ * notice(s) and this permission notice appear in all copies of the Soft-
+ * ware and that both the above copyright notice(s) and this permission
+ * notice appear in supporting documentation.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
+ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
+ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
+ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
+ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
+ * MANCE OF THIS SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder shall
+ * not be used in advertising or otherwise to promote the sale, use or
+ * other dealings in this Software without prior written authorization of
+ * the copyright holder.
+ *
+ * Authors:
+ *   Kristian Høgsberg (krh@redhat.com)
+ */
+
+#ifndef _DRI2_PROTO_H_
+#define _DRI2_PROTO_H_
+
+#define DRI2_NAME			"DRI2"
+#define DRI2_MAJOR			1
+#define DRI2_MINOR			5
+
+#define DRI2NumberErrors		0
+#define DRI2NumberEvents		2
+#define DRI2NumberRequests		14
+
+#define X_DRI2QueryVersion		0
+#define X_DRI2Connect			1
+#define X_DRI2Authenticate		2
+#define X_DRI2CreateDrawable		3
+#define X_DRI2DestroyDrawable		4
+#define X_DRI2GetBuffers		5
+#define X_DRI2CopyRegion		6
+#define X_DRI2GetBuffersWithFormat	7
+#define X_DRI2SwapBuffers		8
+#define X_DRI2GetMSC			9
+#define X_DRI2WaitMSC			10
+#define X_DRI2WaitSBC			11
+#define X_DRI2SwapInterval		12
+#define X_DRI2GetParam			13
+#define X_DRI2GetBuffersVid		14
+#define X_DRI2SwapBuffersVid		15
+#define X_DRI2SetAttribute		16
+#define X_DRI2GetAttribute		17
+#define X_DRI2GetFormats		18
+
+/*
+ * Events
+ */
+#define DRI2_BufferSwapComplete	0
+#define DRI2_InvalidateBuffers	1
+
+typedef struct {
+    CARD32  attachment B32;
+    CARD32  name B32;
+    CARD32  pitch B32;
+    CARD32  cpp B32;
+    CARD32  flags B32;
+} xDRI2Buffer;
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  majorVersion B32;
+    CARD32  minorVersion B32;
+} xDRI2QueryVersionReq;
+#define sz_xDRI2QueryVersionReq   12
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  majorVersion B32;
+    CARD32  minorVersion B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+} xDRI2QueryVersionReply;
+#define sz_xDRI2QueryVersionReply	32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  window B32;
+    CARD32  driverType B32;
+} xDRI2ConnectReq;
+#define sz_xDRI2ConnectReq	12
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  driverNameLength B32;
+    CARD32  deviceNameLength B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+} xDRI2ConnectReply;
+#define sz_xDRI2ConnectReply	32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  window B32;
+    CARD32  magic B32;
+} xDRI2AuthenticateReq;
+#define sz_xDRI2AuthenticateReq   12
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  authenticated B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+    CARD32  pad6 B32;
+} xDRI2AuthenticateReply;
+#define sz_xDRI2AuthenticateReply	32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+} xDRI2CreateDrawableReq;
+#define sz_xDRI2CreateDrawableReq   8
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+} xDRI2DestroyDrawableReq;
+#define sz_xDRI2DestroyDrawableReq   8
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  count B32;
+} xDRI2GetBuffersReq;
+#define sz_xDRI2GetBuffersReq   12
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  width B32;
+    CARD32  height B32;
+    CARD32  count B32;
+} xDRI2GetBuffersVidReq;
+#define sz_xDRI2GetBuffersVidReq   20
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  width B32;
+    CARD32  height B32;
+    CARD32  count B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+} xDRI2GetBuffersReply;
+#define sz_xDRI2GetBuffersReply	32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  region B32;
+    CARD32  dest B32;
+    CARD32  src B32;
+} xDRI2CopyRegionReq;
+#define sz_xDRI2CopyRegionReq   20
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+    CARD32  pad6 B32;
+    CARD32  pad7 B32;
+} xDRI2CopyRegionReply;
+#define sz_xDRI2CopyRegionReply	32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  target_msc_hi B32;
+    CARD32  target_msc_lo B32;
+    CARD32  divisor_hi B32;
+    CARD32  divisor_lo B32;
+    CARD32  remainder_hi B32;
+    CARD32  remainder_lo B32;
+} xDRI2SwapBuffersReq;
+#define sz_xDRI2SwapBuffersReq  32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  target_msc_hi B32;
+    CARD32  target_msc_lo B32;
+    CARD32  divisor_hi B32;
+    CARD32  divisor_lo B32;
+    CARD32  remainder_hi B32;
+    CARD32  remainder_lo B32;
+    CARD32  source B32;
+    CARD32  x1 B32;
+    CARD32  y1 B32;
+    CARD32  x2 B32;
+    CARD32  y2 B32;
+} xDRI2SwapBuffersVidReq;
+#define sz_xDRI2SwapBuffersVidReq  52
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  swap_hi B32;
+    CARD32  swap_lo B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+} xDRI2SwapBuffersReply;
+#define sz_xDRI2SwapBuffersReply 32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+} xDRI2GetMSCReq;
+#define sz_xDRI2GetMSCReq 8
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  target_msc_hi B32;
+    CARD32  target_msc_lo B32;
+    CARD32  divisor_hi B32;
+    CARD32  divisor_lo B32;
+    CARD32  remainder_hi B32;
+    CARD32  remainder_lo B32;
+} xDRI2WaitMSCReq;
+#define sz_xDRI2WaitMSCReq 32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  target_sbc_hi B32;
+    CARD32  target_sbc_lo B32;
+} xDRI2WaitSBCReq;
+#define sz_xDRI2WaitSBCReq 16
+
+typedef struct {
+    CARD8   type;
+    CARD8   pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  ust_hi B32;
+    CARD32  ust_lo B32;
+    CARD32  msc_hi B32;
+    CARD32  msc_lo B32;
+    CARD32  sbc_hi B32;
+    CARD32  sbc_lo B32;
+} xDRI2MSCReply;
+#define sz_xDRI2MSCReply 32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  interval B32;
+} xDRI2SwapIntervalReq;
+#define sz_xDRI2SwapIntervalReq 12
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  attribute B32;
+} xDRI2SetAttributeReq;
+#define sz_xDRI2SetAttributeReq 12
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  attribute B32;
+} xDRI2GetAttributeReq;
+#define sz_xDRI2GetAttributeReq 12
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+    CARD32  pad6 B32;
+    CARD32  pad7 B32;
+} xDRI2GetAttributeReply;
+#define sz_xDRI2GetAttributeReply 32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+} xDRI2GetFormatsReq;
+#define sz_xDRI2GetFormatsReq 8
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+    CARD32  pad6 B32;
+    CARD32  pad7 B32;
+} xDRI2GetFormatsReply;
+#define sz_xDRI2GetFormatsReply 32
+
+typedef struct {
+    CARD8 type;
+    CARD8 pad;
+    CARD16 sequenceNumber B16;
+    CARD16 event_type B16;
+    CARD16 pad2;
+    CARD32 drawable B32;
+    CARD32 ust_hi B32;
+    CARD32 ust_lo B32;
+    CARD32 msc_hi B32;
+    CARD32 msc_lo B32;
+    CARD32 sbc_hi B32;
+    CARD32 sbc_lo B32;
+} xDRI2BufferSwapComplete;
+#define sz_xDRI2BufferSwapComplete 32
+
+typedef struct {
+    CARD8 type;
+    CARD8 pad;
+    CARD16 sequenceNumber B16;
+    CARD16 event_type B16;
+    CARD16 pad2;
+    CARD32 drawable B32;
+    CARD32 ust_hi B32;
+    CARD32 ust_lo B32;
+    CARD32 msc_hi B32;
+    CARD32 msc_lo B32;
+    CARD32 sbc B32;
+} xDRI2BufferSwapComplete2;
+#define sz_xDRI2BufferSwapComplete2 32
+
+typedef struct {
+    CARD8 type;
+    CARD8 pad;
+    CARD16 sequenceNumber B16;
+    CARD32 drawable B32;
+    CARD32 pad1 B32;
+    CARD32 pad2 B32;
+    CARD32 pad3 B32;
+    CARD32 pad4 B32;
+    CARD32 pad5 B32;
+    CARD32 pad6 B32;
+} xDRI2InvalidateBuffers;
+#define sz_xDRI2InvalidateBuffers 32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  param B32;
+} xDRI2GetParamReq;
+#define sz_xDRI2GetParamReq 12
+
+typedef struct {
+    BYTE    type; /*X_Reply*/
+    BOOL    is_param_recognized;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  value_hi B32;
+    CARD32  value_lo B32;
+    CARD32  pad1 B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+} xDRI2GetParamReply;
+#define sz_xDRI2GetParamReply 32
+
+#endif
Index: dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new/dri2proto.txt
===================================================================
--- dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new/dri2proto.txt	(nonexistent)
+++ dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new/dri2proto.txt	(revision 5)
@@ -0,0 +1,1173 @@
+			  The DRI2 Extension
+			      Version 2.0
+			      2008-09-04
+      
+			  Kristian Høgsberg
+			    krh@redhat.com
+			     Red Hat, Inc
+
+
+1. Introduction
+
+The DRI2 extension is designed to associate and access auxillary
+rendering buffers with an X drawable.
+
+DRI2 is a essentially a helper extension to support implementation of
+direct rendering drivers/libraries/technologies.
+
+The main consumer of this extension will be a direct rendering OpenGL
+driver, but the DRI2 extension is not designed to be OpenGL specific.
+Direct rendering implementations of OpenVG, Xv, cairo and other
+graphics APIs should find the functionality exposed by this extension
+helpful and hopefully sufficient.
+
+Relation to XF86DRI
+
+
+1.1. Acknowledgements
+
+Kevin E. Martin <kem@redhat.com>
+Keith Packard <keithp@keithp.com>
+Eric Anholt <eric@anholt.net>
+Keith Whitwell <keith@tungstengraphics.com>
+Jerome Glisse <glisse@freedesktop.org>
+Ian Romanick <ian.d.romanick@intel.com>
+Michel Dänzer <michel@tungstengraphics.com>
+Jesse Barnes <jbarnes@virtuousgeek.org>
+
+
+			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
+
+
+2. DRI2 Concepts
+
+
+2.1. Attachment points
+
+Stolen from OpenGL FBOs, I guess.
+
+
+2.2. Kernel rendering manager
+
+This specification assumes a rendering architechture, where an
+underlying kernel rendering manager that can provide 32 bit integer
+handles to video memory buffers.  These handles can be passed between
+processes, which, through a direct rendering driver, submit rendering
+to the kernel rendering manager, targeting and/or sourcing from these
+buffers.  This extension provides a means to communicate about such
+buffers as associated with an X drawable.
+
+The details of how the a direct rendering driver use the buffer names
+and submit the rendering requests is outside the scope of this
+specification.  However, Appendix B does discuss implementation of
+this specification on the Graphics Execution Manager (GEM).
+
+
+2.3. Request ordering
+
+No ordering between swap buffers and X rendering.  X rendering to src
+buffers will block if they have a vblank pending.
+
+
+2.4 Authentication model
+
+The purpose of the DRM authentication scheme is to grant access to the
+kernel rendering manager buffers created by the X server if, and only
+if, the client has access to the X server.  This is achieved in a
+three-step protocol:
+
+	1) The client gets a token from the kernel rendering manager
+	that uniquely identifies it.  The token is a 32 bit integer.
+
+	2) The client passes the token to the X server in the
+	DRI2Authenticate request.  This request is a round trip to
+	make sure the X server has received and processed the
+	authentication before the client starts accessing the DRM.
+
+	3) The X server authorizes the client by passing the token to
+	the kernel rendering manager.
+
+A kernel rendering manager can choose not to implement any
+authentication and just allow access to all buffers.
+
+
+2.5 Rendering to the X front buffer
+
+OpenGL allows the client to render to the front buffer, either by
+using a single-buffered configuration or but explicitly setting the
+draw buffer to GL_FRONT_LEFT.  Not allowed!
+
+The client must ask for a fake front buffer, render to that and then
+use DRI2CopyRegion to copy contents back and forth between the fake
+front buffer and the real front buffer.  When X and direct rendering
+to a front buffer is interleaved, it is the responsibility of the
+application to synchronize access using glXWaitGL and glXWaitX.  A
+DRI2 implementation of direct rendering GLX, should use these enty
+points to copy contents back and forth to as necessary to ensure
+consistent rendering.
+
+The client may also use the DRI2SwapBuffers function to request a swap
+of the front and back buffers.  If the display server supports it, this
+operation may be preferred, since it may be easier and/or more performant
+for the server to perform a simple buffer swap rather than a blit.
+
+2.6 Synchronizing rendering
+
+DRI2 provides several methods for synchronizing drawing with various events.
+The protocol for these methods is based on the SGI_video_sync and
+OML_sync_control GLX extensions.  Using the DRI2WaitMSC request, a client
+can wait for a specific frame count or divisor/remainder before continuing
+its processing.  With the DRI2WaitSBC request, clients can block until a given
+swap count is reached (as incremented by DRI2SwapBuffers).  Finally, using
+DRI2SwapBuffers, clients can limit their frame rate by specifying a swap
+interval using the swap interval call (currently only available through GLX)
+or by using the OML swap buffers routine.
+
+2.7 Events
+
+DRI2 provides an event to indicate when a DRI2SwapBuffers request has
+been completed.  This can be used to throttle drawing on the client
+side and tie into application main loops.
+
+Another event is generated when the validity of the requested buffers
+changes.
+
+			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
+
+
+3. Data Types
+
+The server side region support specified in the Xfixes extension
+version 2 is used in the CopyRegion request.
+
+
+			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
+
+
+4. Errors
+
+No errors are defined by the DRI2 extension.
+
+
+			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
+
+5. Events
+
+The only events provided by DRI2 are DRI2_BufferSwapComplete
+and DRI2InvalidateBuffers.
+
+
+			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
+
+
+6. Protocol Types
+
+DRI2DRIVER { DRI2DriverDRI
+	     DRI2DriverVDPAU,
+	     DRI2DriverXV }
+
+	These values describe the type of driver the client will want
+	to load.  The server sends back the name of the driver to use
+	for the screen in question.
+
+DRI2ATTACHMENT { DRI2BufferFrontLeft
+	       	 DRI2BufferBackLeft
+	       	 DRI2BufferFrontRight
+	       	 DRI2BufferBackRight
+	       	 DRI2BufferDepth
+	       	 DRI2BufferStencil
+	       	 DRI2BufferAccum
+		 DRI2BufferFakeFrontLeft
+		 DRI2BufferFakeFrontRight
+		 DRI2BufferDepthStencil
+		 DRI2BufferHiz }
+
+	These values describe various attachment points for DRI2
+	buffers.
+
+	In the case of video driver (DRI2DriverXV) the attachment,
+	other than DRI2BufferFrontLeft, just indicates buffer
+	number and has no other special significance.  There is no
+	automatic maintenance of DRI2BufferFakeFrontLeft.
+
+DRI2BUFFER { attachment: CARD32
+    	     name: CARD32
+	     pitch: CARD32
+    	     cpp: CARD32
+	     flags: CARD32 }
+
+	The DRI2BUFFER describes an auxillary rendering buffer
+	associated with an X drawable.  'attachment' describes the
+	attachment point for the buffer, 'name' is the name of the
+	underlying kernel buffer.
+
+
+DRI2ATTACH_FORMAT { attachment: CARD32
+		    format:     CARD32 }
+
+	The DRI2ATTACH_FORMAT describes an attachment and the associated
+	format.  'attachment' describes the attachment point for the buffer,
+	'format' describes an opaque, device-dependent format for the buffer,
+	or a fourcc for non-device-dependent formats.
+
+			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
+
+
+7. Extension Initialization
+
+The name of this extension is "DRI2".
+
+┌───
+    DRI2QueryVersion
+	client-major-version:	CARD32
+	client-minor-version:	CARD32
+      ▶
+	major-version:		CARD32
+	minor-version:		CARD32
+└───
+
+	The client sends the highest supported version to the server
+	and the server sends the highest version it supports, but no
+	higher than the requested version. Major versions changes can
+	introduce incompatibilities in existing functionality, minor
+	version changes introduce only backward compatible changes.
+	It is the clients responsibility to ensure that the server
+	supports a version which is compatible with its expectations.
+
+	Backwards compatible changes included addition of new
+	requests, but also new value types in the DRI2CopyRegion
+	request.  When new values are introduced, the minor version
+	will be increased so the client can know which values the X
+	server understands from the version number.
+
+
+			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
+
+
+8. Extension Requests
+
+┌───
+    DRI2Connect
+	window: WINDOW
+	driverType: DRI2DRIVER
+      ▶
+	driver: STRING
+	device: STRING
+└───
+
+	Returns the driver name and device file to use for the
+	specified driver type for the screen associated with 'window'.
+
+	'type' identifies the type of driver to query for.
+
+	'driver' is the name of the driver to load.  The client is
+	assumed to know where to look for the drivers and what to do
+	with it.
+
+	'device' is the filename of the DRM device file.
+
+	If the client is not local, or the request driver type is
+	unknown or not available, 'driver' and 'device' will be empty
+	strings.  We are not using an regular X
+	error here to indicate failure, which will allow the client
+	fall back to other options more easily.
+
+	ISSUE: We could add the list of supported attachments and the
+	supported DRI2CopyRegion values here (just the bitmask of all
+	supported values).
+	
+┌───
+    DRI2Authenticate
+	window: WINDOW
+	token: CARD32
+      ▶
+        authenticated: CARD32
+└───
+	Errors: Window
+
+	Request that the X server authenticates 'token', allowing the
+	client to access the DRM buffers created by the X server on
+	the screen associated with 'window'.
+
+	Authentication shouldn't fail at this point, except if an
+	invalid token is passed, in which case authenticated is False.
+
+┌───
+    DRI2GetBuffers
+	drawable: DRAWABLE
+	attachments: LISTofDRI2ATTACHMENTS
+      ▶	
+	width, height: CARD32
+	buffers: LISTofDRI2BUFFER
+└───
+	Errors: Window
+
+	Get buffers for the provided attachment points for the given
+	drawable.
+
+	If the DDX driver does not support one or more of the
+	specified attachment points, a Value error is generated, with
+	the first unsupported attachment point as the error value.
+
+	'width' and 'height' describes the dimensions of the drawable.
+
+	'buffers' is a list of DRI2BUFFER for the given DRI2
+	attachment points.
+
+┌───
+    DRI2CopyRegion
+	drawable: DRAWABLE
+	region: REGION
+	source: DRI2ATTACHMENT
+	destination: DRI2ATTACHMENT
+      ▶	
+└───
+	Errors: Window, Value
+
+	Schedule a copy from one DRI2 buffer to another.
+
+	The DRICopyRegion request has a reply but it is empty.  The
+	reply is there to let the direct rendering client wait until
+	the server has seen the request before proceeding with
+	rendering the next frame.
+
+┌───
+    DRI2SwapBuffers
+	drawable: DRAWABLE
+	target_msc: two CARD32s
+	divisor: two CARD32s
+	remainder: two CARD32s
+      ▶	
+	count: two CARD32s
+└───
+	Errors: Window
+
+	Schedule a swap of the front and back buffers with the display
+	server.
+
+	Returns the swap count value when the swap will actually occur (e.g.
+	the last queued swap count + (pending swap count * swap interval)).
+
+	This request is only available with protocol version 1.2 or
+	later.
+
+┌───
+    DRI2SwapBuffersVid
+	drawable: DRAWABLE
+	target_msc: two CARD32s
+	divisor: two CARD32s
+	remainder: two CARD32s
+	source: CARD32
+	x1: CARD32
+	y1: CARD32
+	x2: CARD32
+	y2: CARD32
+      ▶
+	count: two CARD32s
+└───
+	Errors: Window
+
+	Schedule a swap of the front and back buffers with the display
+	server.
+
+	Returns the swap count value when the swap will actually occur (e.g.
+	the last queued swap count + (pending swap count * swap interval)).
+
+	This request is only available with protocol version 1.4 or
+	later.
+
+┌───
+    DRI2GetBuffersWithFormat
+	drawable: DRAWABLE
+	attachments: LISTofDRI2ATTACH_FORMAT
+      ▶
+	width, height: CARD32
+	buffers: LISTofDRI2BUFFER
+└───
+	Errors: Window
+
+	Get buffers for the provided attachment points with the specified
+	formats for the given drawable.
+
+	If the DDX driver does not support one or more of the
+	specified attachment points or formats, a Value error is generated,
+	with the first unsupported attachment point as the error value.
+
+	'width' and 'height' describes the dimensions of the drawable.
+
+	'buffers' is a list of DRI2BUFFER for the given DRI2
+	attachment points.
+
+	This request is only available with protocol version 1.1 or
+	later.
+
+┌───
+    DRI2GetBuffersVid
+	drawable: DRAWABLE
+	width, height: CARD32
+	attachments: LISTofDRI2ATTACH_FORMAT
+      ▶
+	width, height: CARD32
+	buffers: LISTofDRI2BUFFER
+└───
+	Errors: Window
+
+	Get buffers for the provided attachment points with the specified
+	formats for the given drawable.  Like DRI2GetBuffersWithFormat,
+	but allows the client to specify a buffer size that differs from
+	the target drawable, for example to deal with decoded video which
+	is scaled as it is blit to the front buffer (or rendered via hw
+	overlay).
+
+	The DRI2BufferFrontLeft attachment point cannot be requested.  But
+	for video buffers, the client can dynamically allocate more buffers
+	by just requesting new attachment point id's.  Or release a buffer
+	by requesting it with 0,0 size.  If the same attachment point is
+	re-requested, then the previous buffer is deallocated and a new
+	buffer is allocated.  This allows for dynamic resolution changes
+	during playback.
+
+	This request is only available with protocol version 1.4 or
+	later.
+
+:	Note: originally I was not going to add a new DRI2GetBuffers variant,
+:	but instead use attributes to communicate width/height.  But the
+:	problem is that the client blindly picks up DRI2_MINOR from dri2proto.h
+:	and so there is otherwise no reliable way for the server to know if
+:	client supports extra_buffers..
+
+┌───
+    DRI2GetMSC
+	drawable: DRAWABLE
+      ▶
+	ust, msc, sbc: CARD64
+└───
+	Errors: Window
+
+	Get the current media stamp counter (MSC) and swap buffer count (SBC)
+	along with the unadjusted system time (UST) when the MSC was last
+	incremented.
+
+	This request is only available with protocol version 1.2 or
+	later.
+
+┌───
+    DRI2WaitMSC
+	drawable: DRAWABLE
+	target_msc: two CARD32s
+	divisor: two CARD32s
+	remainder: two CARD32s
+      ▶
+	ust, msc, sbc: CARD64
+└───
+	Errors: Window
+
+	Blocks the client until either the frame count reaches target_msc or,
+	if the frame count is already greater than target_msc when the request
+	is received, until the frame count % divisor = remainder.  If divisor
+	is 0, the client will be unblocked if the frame count is greater than
+	or equal to the target_msc.
+
+	Returns the current media stamp counter (MSC) and swap buffer count
+	(SBC) along with the unadjusted system time (UST) when the MSC was last
+	incremented.
+
+	This request is only available with protocol version 1.2 or
+	later.
+
+┌───
+    DRI2WaitSBC
+	drawable: DRAWABLE
+	target_sbc: two CARD32s
+      ▶
+	ust, msc, sbc: CARD64
+└───
+	Errors: Window
+
+	Blocks the client until the swap buffer count reaches target_sbc.  If
+	the swap buffer count is already greater than or equal to target_sbc
+	when the request is recieved, this request will return immediately.
+
+	If target_sbc is 0, this request will block the client until all
+	previous DRI2SwapBuffers requests have completed.
+
+	Returns the current media stamp counter (MSC) and swap buffer count
+	(SBC) along with the unadjusted system time (UST) when the MSC was last
+	incremented.
+
+	This request is only available with protocol version 1.2 or
+	later.
+
+┌───
+    DRI2SwapInterval
+	drawable: DRAWABLE
+	interval: CARD32
+      ▶
+└───
+	Errors: Window
+
+	Sets the swap interval for DRAWABLE.  This will throttle
+	DRI2SwapBuffers requests to swap at most once per interval frames,
+	which is useful useful for limiting the frame rate.
+
+┌───
+    DRI2GetParam
+	drawable: DRAWABLE
+	param: CARD32
+      ▶
+	is_param_recognized: BOOL
+	value: CARD64
+└───
+	Errors: Drawable
+
+	Get the value of a parameter.  The parameter's value is looked up on
+	the screen associated with 'drawable'.
+
+	Parameter names in which the value of the most significant byte is
+	0 are reserved for the X server. Currently, no such parameter names
+	are defined. (When any such names are defined, they will be defined in
+	this extension specification and its associated headers).
+
+	Parameter names in which the byte's value is 1 are reserved for the
+	DDX. Such names are private to each driver and shall be defined in the
+	respective driver's headers.
+
+	Parameter names in which the byte's value is neither 0 nor 1 are
+	reserved for future use.
+
+	Possible values of 'is_param_recognized' are true (1) and false (0).
+	If false, then 'value' is undefined.
+
+	This request is only available with protocol version 1.4 or later.
+
+┌───
+    DRI2SetAttribute
+	drawable: DRAWABLE
+	attribute: ATOM
+	value: LISTofCARD32
+      ▶
+└───
+	Errors: Window, Match, Value
+
+	The DRI2SetAttribute request sets the value of a drawable attribute.
+	The drawable attribute is identified by the attribute atom.  The
+	following strings are guaranteed to generate valid atoms using the
+	InternAtom request.
+
+	String                Size     Type
+	-----------------------------------------------------------------
+
+	"XV_CSC_MATRIX"       48       4x3 matrix of floats
+	"XV_OSD"              4        XID
+
+	If the given attribute doesn't match an attribute supported by the
+	drawable a Match error is generated.  The supplied encoding
+	must be one of the encodings listed for the adaptor, otherwise an
+	Encoding error is generated.
+
+	The XV_CSC_MATRIX attribute is defined to match the VDPAU
+	VdpCSCMatrix:
+
+	    ┌   ┐   ┌                 ┐   ┌     ┐
+	    │ R │   │ m00 m01 m02 m03 │   │  Y  │
+	    │ G │ = │ m10 m11 m12 m13 │ * │  Cb │
+	    │ B │   │ m20 m21 m22 m23 │   │  Cr │
+	    └   ┘   └                 ┘   │ 1.0 │
+	                                  └     ┘
+
+	If the adaptor doesn't support the specified CSC matrix, the closest
+	values supported are assumed.  The DRI2GetAttribute request can be used
+	to query the resulting values.
+
+	The "XV_OSD" attribute specifies the XID of a drawable containing
+	ARGB data to be non-destructively overlayed over the video.  This
+	could be used to implement subtiles, on-screen-menus, etc.  Note
+	that a DRI2DriverDRI driver could be connected to this drawable, to
+	enable GPU rendered OSD content, or alternatively normal indirect
+	X11 draw primitives can be used.
+
+	This request is only available with protocol version 1.4 or
+	later.
+
+┌───
+    DRI2GetAttribute
+	drawable: DRAWABLE
+	attribute: ATOM
+      ▶
+	value: LISTofCARD32
+└───
+	Errors: Window, Match
+
+	The DRI2GetAttribute request returns the current value of the
+	attribute identified by the given atom.  If the given atom
+	doesn't match an attribute supported by the adaptor a Match
+	error is generated.
+
+	This request is only available with protocol version 1.4 or
+	later.
+
+┌───
+    DRI2GetFormats
+	drawable: DRAWABLE
+      ▶
+	formats: LISTofCARD32
+└───
+	Errors: Window
+
+	Query the driver for supported formats, which can be used with
+	DRI2GetBuffersWithFormat.  The 'format' describes an opaque,
+	device-dependent format for the buffer,	or a fourcc for
+	non-device-dependent formats.  For device-dependent formats, use
+	at least one '\0' or non 7-bit ascii character.
+
+	This request is only available with protocol version 1.4 or
+	later.
+
+			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
+
+9. Extension Events
+
+┌───
+    DRI2BufferSwapComplete
+      ▶
+      	event_type: CARD16
+	drawable: CARD32
+	ust: CARD64
+	msc: CARD64
+	sbc: CARD64
+└───
+
+	This event reports the status of the last DRI2SwapBuffers event to
+	the client.  The event type should be one of DRI2_EXCHANGE_COMPLETE,
+	indicating a successful buffer exchange, DRI2_BLIT_COMPLETE, indicating
+	the swap was performed with a blit, and DRI2_FLIP_COMPLETE, indicating
+	a full page flip was completed.
+
+┌───
+    DRI2InvalidateBuffers
+      ▶
+	drawable: CARD32
+└───
+
+	This event is generated when the buffers the client had
+	requested for 'drawable' (with DRI2GetBuffers or
+	DRI2GetBuffersWithFormat) become inappropriate because they
+	don't match the drawable dimensions anymore, or a buffer swap
+	has been performed.
+
+	Note that the server is only required to warn the client once
+	about this condition, until the client takes care of bringing
+	them back up-to-date with another GetBuffers request.
+
+			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
+
+10. Extension Versioning
+
+The DRI2 extension has undergone a number of revisions before
+
+	1.0: Released, but never used.  Relied on a number of
+		constructs from the XF86DRI extension, such as a
+		shared memory area (SAREA) to communicate changes in
+		cliprects and window sizes, and
+
+	1.99.1: Move the swap buffer functionality into the X server,
+		introduce SwapBuffer request to copy back buffer
+		contents to the X drawable.
+
+	1.99.2: Rethink the SwapBuffer request as an asynchronous
+		request to copy a region between DRI2 buffers.  Drop
+		CreateDrawable and DestroyDrawable, update Connect to
+		support different driver types and to send the
+		authentication group.
+
+	1.99.3: Drop the bitmask argument intended to indicate
+		presence of optional arguments for CopyRegion.
+
+	2.0: Awesomeness!
+
+	2.1: True excellence.  Added DRI2GetBuffersWithFormat to allow
+             more flexible object creation.
+
+	2.2: Approaching perfection.  Added requests for swapbuffers,
+             MSC and SBC related requests, and events.
+
+	2.3: Added the DRI2InvalidateBuffers event.
+
+	2.6: Enlightenment attained.  Added the DRI2BufferHiz attachment.
+
+	2.7: Added the DRI2GetParam request.
+
+Compatibility up to 2.0 is not preserved, but was also never released.
+
+
+			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
+
+
+11. Relationship with other extensions
+
+As an extension designed to support other extensions, there is
+naturally some interactions with other extensions.
+
+
+11.1 GLX
+
+The GL auxilary buffers map directly to the DRI2 buffers... eh
+
+
+11.2 DBE
+
+The DBE back buffer must correspond to the DRI2_BUFFER_FRONT_LEFT
+DRI2 buffer for servers that support both DBE and DRI2.
+
+
+11.3 XvMC / Xv
+
+We might add a DRI2_BUFFER_YUV to do vsynced colorspace conversion
+blits.  Maybe... not really sure.
+
+
+			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
+
+
+Appendix A. Protocol Encoding
+
+Syntactic Conventions
+
+This document uses the same syntactic conventions as the core X
+protocol encoding document.
+
+
+A.1 Common Types
+
+┌───
+    DRI2DRIVER
+	0x0	DRI2DriverDRI
+	0x1	DRI2DriverVDPAU
+└───
+
+┌───
+    DRI2ATTACHMENT
+	0x0	DRI2BufferFrontLeft
+	0x1	DRI2BufferBackLeft
+	0x2	DRI2BufferFrontRight
+	0x3	DRI2BufferBackRight
+	0x4	DRI2BufferDepth
+	0x5	DRI2BufferStencil
+	0x6	DRI2BufferAccum
+	0x7	DRI2BufferFakeFrontLeft
+	0x8	DRI2BufferFakeFrontRight
+	0x9	DRI2BufferDepthStencil
+	0xa	DRI2BufferHiz
+└───
+	Used to encode the possible attachment points.  The attachment
+	DRI2BufferDepthStencil is only available with protocol version 1.1 or
+	later.
+
+┌───
+    DRI2BUFFER  (in response to DRI2GetBuffers & DRI2GetBuffersWithFormat)
+	4	CARD32	attachment
+	4	CARD32	name
+	4	CARD32	pitch
+	4	CARD32	cpp
+	4	CARD32	flags
+└───
+	A DRI2 buffer specifies the attachment, the kernel memory
+	manager name, the pitch and chars per pixel for a buffer
+	attached to a given drawable.
+
+┌───
+    DRI2BUFFER  (in response to DRI2GetBuffersVid)
+	4	CARD32	attachment
+	4	CARD32	name
+	4	CARD32	pitch
+	4	CARD32	cpp
+	4	CARD32	flags
+	4	n	extra names length
+	8n	LISTof	extra name, pitch
+└───
+	A DRI2 buffer specifies the attachment, the kernel memory manager
+	name and the pitch for a buffer attached to a given drawable.
+	Note that cpp is unused (it is a bit difficult to represent values
+	like 1.5 bytes/pixel as an integer).
+
+	In case of multi-planar video formats, 'extra names' will give the
+	list of additional buffer names (and their pitch) if there is one
+	buffer per plane.  For example, I420 has one Y plane in with a 8bit
+	luma value per pixel, followed by one U plane subsampled 2x2 (with
+	one 8bit U value per 2x2 pixel block), followed by one V plane
+	subsampled 2x2.  This could either be represented as a single buffer
+	name, or three separate buffer names, one each for Y, U, and V.
+
+┌───
+    DRI2ATTACH_FORMAT
+	4	CARD32	attachment
+	4	CARD32	format
+└───
+	Used to describe the attachment and format requested from the server.
+	This data type is only available with protocol version 1.1 or
+	later.
+
+A.2 Protocol Requests
+
+┌───
+    DRI2QueryVersion
+	1	CARD8			major opcode
+	1	0			DRI2 opcode
+	2	3			length
+	4	CARD32			major version
+	4	CARD32			minor version
+      ▶
+	1	1			Reply
+        1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	4	CARD32			major version
+        4	CARD32			minor version
+	16				unused	
+└───
+
+┌───
+    DRI2Connect
+	1	CARD8			major opcode
+	1	1			DRI2 opcode
+	2	3			length
+	4	WINDOW			window
+	4	CARD32			driver type
+      ▶
+	1	1			Reply
+        1				unused
+	2	CARD16			sequence number
+	4	(n+m+p+q)/4		reply length
+	4	n			driver name length
+	4	m			device name length
+	16				unused
+	n	CARD8			driver name
+	p				unused, p=pad(n)
+	m	CARD8			device name
+	q				unused, q=pad(m)
+└───
+
+┌───
+    DRI2Authenticate
+	1	CARD8			major opcode
+	1	2			DRI2 opcode
+	2	3			length
+	4	WINDOW			window
+	4	CARD32			authentication token
+      ▶
+	1	1			Reply
+        1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	4	CARD32			authenticated
+	20				unused	
+└───
+
+┌───
+    DRI2GetBuffers
+	1	CARD8			major opcode
+	1	5			DRI2 opcode
+	2	3			length
+	4	DRAWABLE		drawable
+	4	n			number of attachments
+	4n	LISTofDRI2ATTACHMENTS	attachments
+      ▶	
+	1	1			Reply
+        1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	4	CARD32			width of drawable
+	4	CARD32			height of drawable
+	4	CARD32			buffer count
+	12				unused	
+	5n	LISTofDRI2BUFFER	buffers
+└───
+
+┌───
+    DRI2CopyRegion
+	1	CARD8			major opcode
+	1	6			DRI2 opcode
+	2	3			length
+	4	DRAWABLE		drawable
+	4	REGION			region
+	4	DRI2ATTACHMENT		source
+	4	DRI2ATTACHMENT		destination
+      ▶	
+	1	1			Reply
+        1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	24				unused	
+└───
+
+┌───
+    DRI2GetBuffersWithFormat
+	1	CARD8			major opcode
+	1	7			DRI2 opcode
+	2	3			length
+	4	DRAWABLE		drawable
+	4	n			number of attachments
+	8n	LISTofDRI2ATTACH_FORMAT	attachments and formats
+      ▶
+	1	1			Reply
+       1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	4	CARD32			width of drawable
+	4	CARD32			height of drawable
+	4	CARD32			buffer count
+	12				unused	
+	5n	LISTofDRI2BUFFER	buffers
+└───
+
+┌───
+    DRI2GetBuffersVid
+	1	CARD8			major opcode
+	1	3			DRI2 opcode
+	2	3			length
+	4	DRAWABLE		drawable
+	4	CARD32			width
+	4	CARD32			height
+	4	n			number of attachments
+	4n	LISTofDRI2ATTACHMENTS	attachments
+      ▶
+	1	1			Reply
+        1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	4	CARD32			width of drawable
+	4	CARD32			height of drawable
+	4	CARD32			buffer count
+	12				unused
+	5n	LISTofDRI2BUFFER	buffers
+└───
+
+┌───
+    DRI2SwapBuffers
+	1	CARD8			major opcode
+	1	8			DRI2 opcode
+	2	8			length
+	4	DRAWABLE		drawable
+	4	CARD32			target_msc_hi
+	4	CARD32			target_msc_lo
+	4	CARD32			divisor_hi
+	4	CARD32			divisor_lo
+	4	CARD32			remainder_hi
+	4	CARD32			remainder_lo
+      ▶	
+	1	1			Reply
+        1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	4	CARD32			swap_hi
+	4	CARD32			swap_lo
+	5n	LISTofDRI2BUFFER	buffers
+└───
+
+┌───
+    DRI2SwapBuffersVid
+	1	CARD8			major opcode
+	1	8			DRI2 opcode
+	2	8			length
+	4	DRAWABLE		drawable
+	4	CARD32			target_msc_hi
+	4	CARD32			target_msc_lo
+	4	CARD32			divisor_hi
+	4	CARD32			divisor_lo
+	4	CARD32			remainder_hi
+	4	CARD32			remainder_lo
+	4	DRI2ATTACHMENT		source
+	4	CARD32			x1
+	4	CARD32			y1
+	4	CARD32			x2
+	4	CARD32			y2
+      ▶	
+	1	1			Reply
+        1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	4	CARD32			swap_hi
+	4	CARD32			swap_lo
+	5n	LISTofDRI2BUFFER	buffers
+└───
+
+┌───
+    DRI2GetMSC
+	1	CARD8			major opcode
+	1	9			DRI2 opcode
+	2	8			length
+	4	DRAWABLE		drawable
+      ▶
+	1	1			Reply
+        1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	4	CARD32			ust_hi
+	4	CARD32			ust_lo
+	4	CARD32			msc_hi
+	4	CARD32			msc_lo
+	4	CARD32			sbc_hi
+	4	CARD32			sbc_lo
+└───
+
+┌───
+    DRI2WaitMSC
+	1	CARD8			major opcode
+	1	10			DRI2 opcode
+	2	8			length
+	4	DRAWABLE		drawable
+	4	CARD32			target_msc_hi
+	4	CARD32			target_msc_lo
+	4	CARD32			divisor_hi
+	4	CARD32			divisor_lo
+	4	CARD32			remainder_hi
+	4	CARD32			remainder_lo
+      ▶
+	1	1			Reply
+        1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	4	CARD32			ust_hi
+	4	CARD32			ust_lo
+	4	CARD32			msc_hi
+	4	CARD32			msc_lo
+	4	CARD32			sbc_hi
+	4	CARD32			sbc_lo
+└───
+
+┌───
+    DRI2WaitSBC
+	1	CARD8			major opcode
+	1	11			DRI2 opcode
+	2	8			length
+	4	DRAWABLE		drawable
+ 	4	CARD32			swap_hi
+	4	CARD32			swap_lo
+     ▶
+	1	1			Reply
+        1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	4	CARD32			ust_hi
+	4	CARD32			ust_lo
+	4	CARD32			msc_hi
+	4	CARD32			msc_lo
+	4	CARD32			sbc_hi
+	4	CARD32			sbc_lo
+└───
+
+┌───
+    DRI2SwapInterval
+	1	CARD8			major opcode
+	1	12			DRI2 opcode
+	2	8			length
+	4	DRAWABLE		drawable
+ 	4	CARD32			interval
+     ▶
+└───
+
+┌───
+    DRI2GetParam
+	1	CARD8			major opcode
+	1	13			DRI2 opcode
+	2	8			length
+	4	DRAWABLE		drawable
+	4	CARD32			param
+     ▶
+	1	1			Reply
+	1	BOOL			is_param_recognized
+	2	CARD16			sequence number
+	4	0			reply length
+	4	CARD32			value_hi
+	4	CARD32			value_lo
+	16				unused
+└───
+
+┌───
+    DRI2SetAttribute
+	1	CARD8			major opcode
+	1	7			DRI2 opcode
+	2	8			length
+	4	DRAWABLE		drawable
+	4	ATOM			attribute
+	4n	LISTofCARD32		value
+      ▶
+└───
+
+┌───
+    DRI2GetAttribute
+	1	CARD8			major opcode
+	1	7			DRI2 opcode
+	2	8			length
+	4	DRAWABLE		drawable
+	4	ATOM			attribute
+      ▶
+	1	1			Reply
+	1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	24				unused
+	4n	LISTofCARD32		value
+└───
+
+┌───
+    DRI2GetFormats
+	1	CARD8			major opcode
+	1	7			DRI2 opcode
+	2	8			length
+	4	DRAWABLE		drawable
+      ▶
+	1	1			Reply
+	1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	24				unused
+	4n	LISTofCARD32		formats
+└───
+
+A.3 Protocol Events
+
+The DRI2 extension specifies DRI2_BufferSwapComplete and
+DRI2_InvalidateBuffers events.
+
+┌───
+    DRI2_BufferSwapComplete
+	1	CARD8			type
+	1	CARD8			extension
+	2	CARD16			sequenceNumber
+	2	CARD16			event_type
+	4	DRAWABLE		drawable
+	4	CARD32			ust_hi
+	4	CARD32			ust_lo
+	4	CARD32			msc_hi
+	4	CARD32			msc_lo
+	4	CARD32			sbc_hi
+	4	CARD32			sbc_lo
+└───
+
+
+┌───
+    DRI2_InvalidateBuffers
+	1	CARD8			type
+	1	CARD8			extension
+	2	CARD16			sequenceNumber
+	4	DRAWABLE		drawable
+	4	CARD32			unused
+	4	CARD32			unused
+	4	CARD32			unused
+	4	CARD32			unused
+	4	CARD32			unused
+	4	CARD32			unused
+└───
+
+A.4 Protocol Errors
+
+The DRI2 extension specifies no errors.
+
+
+			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
+
+
+Appendix B. Implementation on GEM
+
+Where to begin...
Index: dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new/dri2tokens.h
===================================================================
--- dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new/dri2tokens.h	(nonexistent)
+++ dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new/dri2tokens.h	(revision 5)
@@ -0,0 +1,62 @@
+/*
+ * Copyright © 2008 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Soft-
+ * ware"), to deal in the Software without restriction, including without
+ * limitation the rights to use, copy, modify, merge, publish, distribute,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, provided that the above copyright
+ * notice(s) and this permission notice appear in all copies of the Soft-
+ * ware and that both the above copyright notice(s) and this permission
+ * notice appear in supporting documentation.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
+ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
+ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
+ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
+ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
+ * MANCE OF THIS SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder shall
+ * not be used in advertising or otherwise to promote the sale, use or
+ * other dealings in this Software without prior written authorization of
+ * the copyright holder.
+ *
+ * Authors:
+ *   Kristian Høgsberg (krh@redhat.com)
+ */
+
+#ifndef _DRI2_TOKENS_H_
+#define _DRI2_TOKENS_H_
+
+#define DRI2BufferFrontLeft		0
+#define DRI2BufferBackLeft		1
+#define DRI2BufferFrontRight		2
+#define DRI2BufferBackRight		3
+#define DRI2BufferDepth			4
+#define DRI2BufferStencil		5
+#define DRI2BufferAccum			6
+#define DRI2BufferFakeFrontLeft		7
+#define DRI2BufferFakeFrontRight	8
+#define DRI2BufferDepthStencil		9
+#define DRI2BufferHiz			10
+
+/* keep bits 16 and above for prime IDs */
+#define DRI2DriverPrimeMask             7 /* 0 - 7 - allows for 6 devices*/
+#define DRI2DriverPrimeShift           16
+#define DRI2DriverPrimeId(x)         (((x) >> DRI2DriverPrimeShift) & (DRI2DriverPrimeMask))
+
+#define DRI2DriverDRI			0
+#define DRI2DriverVDPAU			1
+#define DRI2DriverXV			2
+
+/* Event sub-types for the swap complete event */
+#define DRI2_EXCHANGE_COMPLETE		0x1
+#define DRI2_BLIT_COMPLETE		0x2
+#define DRI2_FLIP_COMPLETE		0x3
+
+#endif
Index: dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new
===================================================================
--- dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new	(nonexistent)
+++ dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new	(revision 5)

Property changes on: dri2proto/create-2.8-ti-glsdk-patch/dri2proto-2.8-new
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: dri2proto/create-2.8-ti-glsdk-patch/file.list
===================================================================
--- dri2proto/create-2.8-ti-glsdk-patch/file.list	(nonexistent)
+++ dri2proto/create-2.8-ti-glsdk-patch/file.list	(revision 5)
@@ -0,0 +1,3 @@
+dri2proto-2.8/dri2proto.h
+dri2proto-2.8/dri2proto.txt
+dri2proto-2.8/dri2tokens.h
Index: dri2proto/create-2.8-ti-glsdk-patch
===================================================================
--- dri2proto/create-2.8-ti-glsdk-patch	(nonexistent)
+++ dri2proto/create-2.8-ti-glsdk-patch	(revision 5)

Property changes on: dri2proto/create-2.8-ti-glsdk-patch
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: dri2proto/patches/README
===================================================================
--- dri2proto/patches/README	(nonexistent)
+++ dri2proto/patches/README	(revision 5)
@@ -0,0 +1,6 @@
+
+/* begin *
+
+   TODO: Leave some comment here.
+
+ * end */
Index: dri2proto/patches
===================================================================
--- dri2proto/patches	(nonexistent)
+++ dri2proto/patches	(revision 5)

Property changes on: dri2proto/patches
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: dri2proto
===================================================================
--- dri2proto	(nonexistent)
+++ dri2proto	(revision 5)

Property changes on: dri2proto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: dri3proto/Makefile
===================================================================
--- dri3proto/Makefile	(nonexistent)
+++ dri3proto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/dri3proto
+
+versions    = 1.0
+pkgname     = dri3proto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: dri3proto
===================================================================
--- dri3proto	(nonexistent)
+++ dri3proto	(revision 5)

Property changes on: dri3proto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: evieext/Makefile
===================================================================
--- evieext/Makefile	(nonexistent)
+++ evieext/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/evieext
+
+versions    = 1.1.1
+pkgname     = evieext
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: evieext
===================================================================
--- evieext	(nonexistent)
+++ evieext	(revision 5)

Property changes on: evieext
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: fixesproto/Makefile
===================================================================
--- fixesproto/Makefile	(nonexistent)
+++ fixesproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/fixesproto
+
+versions    = 5.0
+pkgname     = fixesproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: fixesproto
===================================================================
--- fixesproto	(nonexistent)
+++ fixesproto	(revision 5)

Property changes on: fixesproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: fontcacheproto/Makefile
===================================================================
--- fontcacheproto/Makefile	(nonexistent)
+++ fontcacheproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/fontcacheproto
+
+versions    = 0.1.3
+pkgname     = fontcacheproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: fontcacheproto
===================================================================
--- fontcacheproto	(nonexistent)
+++ fontcacheproto	(revision 5)

Property changes on: fontcacheproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: fontsproto/Makefile
===================================================================
--- fontsproto/Makefile	(nonexistent)
+++ fontsproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/fontsproto
+
+versions    = 2.1.3
+pkgname     = fontsproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: fontsproto
===================================================================
--- fontsproto	(nonexistent)
+++ fontsproto	(revision 5)

Property changes on: fontsproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: glproto/Makefile
===================================================================
--- glproto/Makefile	(nonexistent)
+++ glproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/glproto
+
+versions    = 1.4.17
+pkgname     = glproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: glproto
===================================================================
--- glproto	(nonexistent)
+++ glproto	(revision 5)

Property changes on: glproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: inputproto/Makefile
===================================================================
--- inputproto/Makefile	(nonexistent)
+++ inputproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/inputproto
+
+versions    = 2.3.2
+pkgname     = inputproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: inputproto
===================================================================
--- inputproto	(nonexistent)
+++ inputproto	(revision 5)

Property changes on: inputproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: kbproto/Makefile
===================================================================
--- kbproto/Makefile	(nonexistent)
+++ kbproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/kbproto
+
+versions    = 1.0.7
+pkgname     = kbproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: kbproto
===================================================================
--- kbproto	(nonexistent)
+++ kbproto	(revision 5)

Property changes on: kbproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: presentproto/Makefile
===================================================================
--- presentproto/Makefile	(nonexistent)
+++ presentproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/presentproto
+
+versions    = 1.1
+pkgname     = presentproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: presentproto
===================================================================
--- presentproto	(nonexistent)
+++ presentproto	(revision 5)

Property changes on: presentproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: printproto/Makefile
===================================================================
--- printproto/Makefile	(nonexistent)
+++ printproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/printproto
+
+versions    = 1.0.5
+pkgname     = printproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: printproto
===================================================================
--- printproto	(nonexistent)
+++ printproto	(revision 5)

Property changes on: printproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: randrproto/Makefile
===================================================================
--- randrproto/Makefile	(nonexistent)
+++ randrproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/randrproto
+
+versions    = 1.5.0
+pkgname     = randrproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: randrproto
===================================================================
--- randrproto	(nonexistent)
+++ randrproto	(revision 5)

Property changes on: randrproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: recordproto/Makefile
===================================================================
--- recordproto/Makefile	(nonexistent)
+++ recordproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/recordproto
+
+versions    = 1.14.2
+pkgname     = recordproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: recordproto
===================================================================
--- recordproto	(nonexistent)
+++ recordproto	(revision 5)

Property changes on: recordproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: renderproto/Makefile
===================================================================
--- renderproto/Makefile	(nonexistent)
+++ renderproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/renderproto
+
+versions    = 0.11.1
+pkgname     = renderproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: renderproto
===================================================================
--- renderproto	(nonexistent)
+++ renderproto	(revision 5)

Property changes on: renderproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: resourceproto/Makefile
===================================================================
--- resourceproto/Makefile	(nonexistent)
+++ resourceproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/resourceproto
+
+versions    = 1.2.0
+pkgname     = resourceproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: resourceproto
===================================================================
--- resourceproto	(nonexistent)
+++ resourceproto	(revision 5)

Property changes on: resourceproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: scrnsaverproto/Makefile
===================================================================
--- scrnsaverproto/Makefile	(nonexistent)
+++ scrnsaverproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/scrnsaverproto
+
+versions    = 1.2.2
+pkgname     = scrnsaverproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: scrnsaverproto
===================================================================
--- scrnsaverproto	(nonexistent)
+++ scrnsaverproto	(revision 5)

Property changes on: scrnsaverproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: videoproto/Makefile
===================================================================
--- videoproto/Makefile	(nonexistent)
+++ videoproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/videoproto
+
+versions    = 2.3.3
+pkgname     = videoproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: videoproto
===================================================================
--- videoproto	(nonexistent)
+++ videoproto	(revision 5)

Property changes on: videoproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: windowswmproto/Makefile
===================================================================
--- windowswmproto/Makefile	(nonexistent)
+++ windowswmproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/windowswmproto
+
+versions    = 1.0.4
+pkgname     = windowswmproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: windowswmproto
===================================================================
--- windowswmproto	(nonexistent)
+++ windowswmproto	(revision 5)

Property changes on: windowswmproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xcmiscproto/Makefile
===================================================================
--- xcmiscproto/Makefile	(nonexistent)
+++ xcmiscproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/xcmiscproto
+
+versions    = 1.2.2
+pkgname     = xcmiscproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: xcmiscproto
===================================================================
--- xcmiscproto	(nonexistent)
+++ xcmiscproto	(revision 5)

Property changes on: xcmiscproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xextproto/Makefile
===================================================================
--- xextproto/Makefile	(nonexistent)
+++ xextproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/xextproto
+
+versions    = 7.3.0
+pkgname     = xextproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: xextproto
===================================================================
--- xextproto	(nonexistent)
+++ xextproto	(revision 5)

Property changes on: xextproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xf86bigfontproto/Makefile
===================================================================
--- xf86bigfontproto/Makefile	(nonexistent)
+++ xf86bigfontproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/xf86bigfontproto
+
+versions    = 1.2.0
+pkgname     = xf86bigfontproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: xf86bigfontproto
===================================================================
--- xf86bigfontproto	(nonexistent)
+++ xf86bigfontproto	(revision 5)

Property changes on: xf86bigfontproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xf86dgaproto/Makefile
===================================================================
--- xf86dgaproto/Makefile	(nonexistent)
+++ xf86dgaproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/xf86dgaproto
+
+versions    = 2.1
+pkgname     = xf86dgaproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: xf86dgaproto
===================================================================
--- xf86dgaproto	(nonexistent)
+++ xf86dgaproto	(revision 5)

Property changes on: xf86dgaproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xf86driproto/Makefile
===================================================================
--- xf86driproto/Makefile	(nonexistent)
+++ xf86driproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/xf86driproto
+
+versions    = 2.1.1
+pkgname     = xf86driproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: xf86driproto
===================================================================
--- xf86driproto	(nonexistent)
+++ xf86driproto	(revision 5)

Property changes on: xf86driproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xf86miscproto/Makefile
===================================================================
--- xf86miscproto/Makefile	(nonexistent)
+++ xf86miscproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/xf86miscproto
+
+versions    = 0.9.3
+pkgname     = xf86miscproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: xf86miscproto
===================================================================
--- xf86miscproto	(nonexistent)
+++ xf86miscproto	(revision 5)

Property changes on: xf86miscproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xf86vidmodeproto/Makefile
===================================================================
--- xf86vidmodeproto/Makefile	(nonexistent)
+++ xf86vidmodeproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/xf86vidmodeproto
+
+versions    = 2.3.1
+pkgname     = xf86vidmodeproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: xf86vidmodeproto
===================================================================
--- xf86vidmodeproto	(nonexistent)
+++ xf86vidmodeproto	(revision 5)

Property changes on: xf86vidmodeproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xineramaproto/Makefile
===================================================================
--- xineramaproto/Makefile	(nonexistent)
+++ xineramaproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/xineramaproto
+
+versions    = 1.2.1
+pkgname     = xineramaproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: xineramaproto
===================================================================
--- xineramaproto	(nonexistent)
+++ xineramaproto	(revision 5)

Property changes on: xineramaproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xorgproto/Makefile
===================================================================
--- xorgproto/Makefile	(nonexistent)
+++ xorgproto/Makefile	(revision 5)
@@ -0,0 +1,56 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/xorgproto
+
+versions    = 2022.2
+pkgname     = xorgproto
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+patches     = $(CURDIR)/patches/xorgproto-2022.2-docbook.patch
+
+.NOTPARALLEL: $(patches)
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s) $(patches)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+$(patches): $(sha1s)
+	@echo -e "\n======= Create Patches =======\n" ; \
+	 ( cd create-2022.2-docbook-patch ; ./create.patch.sh ) ; \
+	 echo -e "\n"
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s) $(patches)
Index: xorgproto/create-2022.2-docbook-patch/create.patch.sh
===================================================================
--- xorgproto/create-2022.2-docbook-patch/create.patch.sh	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/create.patch.sh	(revision 5)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=2022.2
+
+tar --files-from=file.list -xJvf ../xorgproto-$VERSION.tar.xz
+mv xorgproto-$VERSION xorgproto-$VERSION-orig
+
+cp -rf ./xorgproto-$VERSION-new ./xorgproto-$VERSION
+
+diff --unified -Nr  xorgproto-$VERSION-orig  xorgproto-$VERSION > xorgproto-$VERSION-docbook.patch
+
+mv xorgproto-$VERSION-docbook.patch ../patches
+
+rm -rf ./xorgproto-$VERSION
+rm -rf ./xorgproto-$VERSION-orig

Property changes on: xorgproto/create-2022.2-docbook-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: xorgproto/create-2022.2-docbook-patch/file.list
===================================================================
--- xorgproto/create-2022.2-docbook-patch/file.list	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/file.list	(revision 5)
@@ -0,0 +1,5 @@
+xorgproto-2022.2/specs/bigreqsproto/bigreq.xml
+xorgproto-2022.2/specs/fontsproto/fsproto.xml
+xorgproto-2022.2/specs/scrnsaverproto/saver.xml
+xorgproto-2022.2/specs/xextproto/dpms.xml
+xorgproto-2022.2/specs/xextproto/xtest.xml
Index: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/bigreqsproto/bigreq.xml
===================================================================
--- xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/bigreqsproto/bigreq.xml	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/bigreqsproto/bigreq.xml	(revision 5)
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+                   "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+<!ENTITY % defs SYSTEM "defs.ent"> %defs;
+]>
+
+<!-- lifted from troff+ms+XMan by doclifter -->
+<book id="bigreq">
+
+<bookinfo>
+   <title>Big Requests Extension</title>
+   <subtitle>X Consortium Standard</subtitle>
+   <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo>
+   <releaseinfo>Version 2.0</releaseinfo>
+   <authorgroup>
+      <author>
+         <firstname>Bob</firstname><surname>Scheifler</surname>
+         <affiliation><orgname>X Consortium</orgname></affiliation>
+      </author>
+   </authorgroup>
+   <copyright><year>1993</year><year>1994</year><holder>X Consortium</holder></copyright>
+
+<legalnotice>
+<para>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &ldquo;Software&rdquo;), 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:</para>
+
+<para>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</para>
+
+<para>THE SOFTWARE IS PROVIDED &ldquo;AS IS&rdquo;, 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 X CONSORTIUM 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.</para>
+
+<para>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</para>
+
+<para>X Window System is a trademark of The Open Group.</para>
+</legalnotice>
+
+</bookinfo>
+
+<chapter id='Overview'>
+<title>Overview</title>
+
+<para>This extension enables the use of protocol requests that exceed 262140 bytes in length.</para>
+
+<para>The core protocol restricts the maximum length of a protocol request to 262140 bytes, in that it uses a 16-bit length field specifying the number of 4-byte units in the request.  This is a problem in the core protocol when joining large numbers of lines (<symbol role='Pn'>PolyLine</symbol>) or arcs (<symbol role='Pn'>PolyArc</symbol>), since these requests cannot be broken up into smaller requests without disturbing the rendering of the join points.  It is also much more of a problem for protocol extensions, such as the PEX extension for 3D graphics and the XIE extension for imaging, that need to send long data lists in output commands.</para>
+
+<para>This extension defines a mechanism for extending the length field beyond 16 bits.  If the normal 16-bit length field of the protocol request is zero, then an additional 32-bit field containing the actual length (in 4-byte units) is inserted into the request, immediately following the 16-bit length field.</para>
+
+<para>For example, a normal <function>PolyLine</function> encoding is:</para>
+
+<informaltable id='PolyLine' frame='none'>
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='4' align='left' colsep='0' rowsep='0'>
+    <colspec colname='c1' colwidth='1.0*'/>
+    <colspec colname='c2' colwidth='3.0*'/>
+    <colspec colname='c3' colwidth='2.0*'/>
+    <colspec colname='c4' colwidth='11.0*'/>
+    <thead>
+      <row>
+        <entry namest="c1" nameend="c4"><function>PolyLine</function></entry>
+      </row>
+    </thead>
+    <tbody>
+      <row>
+        <entry>1</entry>
+        <entry>65</entry>
+        <entry></entry>
+        <entry>opcode</entry>
+      </row>
+      <row>
+        <entry>1</entry>
+        <entry></entry>
+        <entry></entry>
+        <entry>coordinate-mode</entry>
+      </row>
+      <row>
+        <entry></entry>
+        <entry>0</entry>
+        <entry>Origin</entry>
+        <entry></entry>
+      </row>
+      <row>
+        <entry></entry>
+        <entry>1</entry>
+        <entry>Previous</entry>
+        <entry></entry>
+      </row>
+      <row>
+        <entry>2</entry>
+        <entry>3+n</entry>
+        <entry></entry>
+        <entry></entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>DRAWABLE</entry>
+        <entry></entry>
+        <entry>drawable</entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>GCONTEXT</entry>
+        <entry></entry>
+        <entry>gc</entry>
+      </row>
+      <row>
+        <entry>4n</entry>
+        <entry>LISTofPOINT</entry>
+        <entry></entry>
+        <entry>points</entry>
+      </row>
+     </tbody>
+  </tgroup>
+</informaltable>
+
+<para>An extended-length <function>PolyLine</function> encoding is:</para>
+
+<informaltable frame='none'>
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='4' align='left' colsep='0' rowsep='0'>
+    <colspec colname='c1' colwidth='1.0*'/>
+    <colspec colname='c2' colwidth='3.0*'/>
+    <colspec colname='c3' colwidth='2.0*'/>
+    <colspec colname='c4' colwidth='11.0*'/>
+    <thead>
+      <row>
+        <entry namest="c1" nameend="c4"><function>PolyLine</function></entry>
+      </row>
+    </thead>
+    <tbody>
+      <row>
+        <entry>1</entry>
+        <entry>65</entry>
+        <entry></entry>
+        <entry>opcode</entry>
+      </row>
+      <row>
+        <entry>1</entry>
+        <entry></entry>
+        <entry></entry>
+        <entry>coordinate-mode</entry>
+      </row>
+      <row>
+        <entry></entry>
+        <entry>0</entry>
+        <entry>Origin</entry>
+        <entry></entry>
+      </row>
+      <row>
+        <entry></entry>
+        <entry>1</entry>
+        <entry>Previous</entry>
+        <entry></entry>
+      </row>
+      <row>
+        <entry>2</entry>
+        <entry>0</entry>
+        <entry></entry>
+        <entry>extended length flag</entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>4+n</entry>
+        <entry></entry>
+        <entry>request length</entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>DRAWABLE</entry>
+        <entry></entry>
+        <entry>drawable</entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>GCONTEXT</entry>
+        <entry></entry>
+        <entry>gc</entry>
+      </row>
+      <row>
+        <entry>4n</entry>
+        <entry>LISTofPOINT</entry>
+        <entry></entry>
+        <entry>points</entry>
+      </row>
+     </tbody>
+  </tgroup>
+</informaltable>
+
+<para>Extended-length protocol encodings, once enabled, can be used on all protocol requests, including all extensions.</para>
+</chapter>
+
+<chapter id='Requests'>
+<title>Requests</title>
+
+<para><function>BigReqEnable</function></para>
+
+<para>   =&gt;</para>
+
+<para><emphasis remap='I'>maximum-request-length</emphasis>: CARD32</para>
+
+<para>This request enables extended-length protocol requests for the requesting client.  It also returns the maximum length of a request, in 4-byte units, that can be used in extended-length protocol requests.  This value will always be greater than the maximum-request-length returned in the connection setup information.</para>
+</chapter>
+
+<chapter id='Events_and_Errors'>
+<title>Events and Errors</title>
+
+<para>No new events or errors are defined by this extension.</para>
+</chapter>
+
+<chapter id='Encoding'>
+<title>Encoding</title>
+
+<para>Please refer to the X11 Protocol Encoding document as this document uses conventions established there.</para>
+
+<para>The name of this extension is &ldquo;BIG-REQUESTS&rdquo;.</para>
+
+<informaltable frame='none'>
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+    <colspec colname='c1' colwidth='1.0*'/>
+    <colspec colname='c2' colwidth='2.0*'/>
+    <colspec colname='c3' colwidth='15.0*'/>
+    <thead>
+      <row>
+        <entry namest="c1" nameend="c3">BigReqEnable</entry>
+      </row>
+    </thead>
+    <tbody>
+      <row>
+        <entry>1</entry>
+        <entry>Card8</entry>
+        <entry>opcode</entry>
+      </row>
+      <row>
+        <entry>1</entry>
+        <entry>0</entry>
+        <entry>bigreq opcode</entry>
+      </row>
+      <row>
+        <entry>2</entry>
+        <entry>1</entry>
+        <entry>request length</entry>
+      </row>
+     </tbody>
+  </tgroup>
+  <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+    <colspec colname='c1' colwidth='1.0*'/>
+    <colspec colname='c2' colwidth='2.0*'/>
+    <colspec colname='c3' colwidth='15.0*'/>
+    <thead>
+      <row>
+        <entry namest="c1" nameend="c3">=&gt;</entry>
+      </row>
+    </thead>
+    <tbody>
+      <row>
+        <entry>1</entry>
+        <entry>1</entry>
+        <entry>Reply</entry>
+      </row>
+      <row>
+        <entry>1</entry>
+        <entry></entry>
+        <entry>unused</entry>
+      </row>
+      <row>
+        <entry>2</entry>
+        <entry>CARD16</entry>
+        <entry>sequence number</entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>0</entry>
+        <entry>length</entry>
+      </row>
+      <row>
+        <entry>4</entry>
+        <entry>CARD32</entry>
+        <entry>maximum-request-length</entry>
+      </row>
+      <row>
+        <entry>20</entry>
+        <entry></entry>
+        <entry>unused</entry>
+      </row>
+     </tbody>
+  </tgroup>
+</informaltable>
+
+</chapter>
+
+<chapter id='C_Language_Binding'>
+<title>C language binding</title>
+
+<para>It is desirable for core Xlib, and other extensions, to use this extension internally when necessary.
+It is also desirable to make the use of this extension as transparent as possible to the X client.
+For example, if enabling of the extension were delayed until the first time it was needed, an application that used
+<function>XNextRequest</function> to determine the sequence number of a request would no longer get the correct sequence number.  As such,
+<function>XOpenDisplay</function> will determine if the extension is supported by the server and, if it is, enable extended-length
+encodings.</para>
+
+<para>The core Xlib functions <function>XDrawLines</function>, <function>XDrawArcs</function>, <function>XFillPolygon</function>, <function>XChangeProperty</function>, <function>XSetClipRectangles</function>, and <function>XSetRegion</function>
+are required to use extended-length encodings when necessary, if supported by the server.  Use of extended-length encodings
+in other core Xlib functions (<function>XDrawPoints</function>, <function>XDrawRectangles</function>, <function>XDrawSegments</function>). <function>XFillArcs</function>, <function>XFillRectangles</function>, <function>XPutImage</function>
+is permitted but not required; an Xlib implementation may choose to split the data across multiple smaller requests
+instead.</para>
+
+<para>To permit clients to know what the maximum-request-length for extended-length encodings is, the following function is added to Xlib:
+
+<funcsynopsis id='XExtendedMaxRequestSize'>
+<funcprototype>
+  <funcdef>long <function>XExtendedMaxRequestSize</function></funcdef>
+    <paramdef>Display <parameter> *display</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+Returns zero (0) if the specified display does not support this extension, otherwise returns the maximum-request-length (in 4-byte units) supported by the server through the extended-length encoding.</para>
+</chapter>
+
+<chapter id='Acknowledgements'>
+<title>Acknowledgements</title>
+
+<para>Clive Feather (IXI) originated the extended-length encoding used in this extension proposal.</para>
+</chapter>
+</book>
Index: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/bigreqsproto
===================================================================
--- xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/bigreqsproto	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/bigreqsproto	(revision 5)

Property changes on: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/bigreqsproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/fontsproto/fsproto.xml
===================================================================
--- xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/fontsproto/fsproto.xml	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/fontsproto/fsproto.xml	(revision 5)
@@ -0,0 +1,4414 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+                   "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+<!ENTITY % defs SYSTEM "defs.ent"> %defs;
+]>
+
+
+<book id="fsproto">
+
+<bookinfo>
+   <title>The X Font Service Protocol</title>
+   <subtitle>X Consortium Standard</subtitle>
+   <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo>
+   <releaseinfo>Version 2.0</releaseinfo>
+   <authorgroup>
+      <author>
+         <firstname>Jim</firstname><surname>Fulton</surname>
+         <affiliation><orgname>Network Computing Devices, Inc.</orgname></affiliation>
+      </author>
+   </authorgroup>
+   <edition>Revised May 2, 1994</edition>
+   <copyright><year>1991</year><holder>Network Computing Devices, Inc.</holder></copyright>
+
+<legalnotice>
+<para>
+Permission to use, copy, modify, distribute, and sell this
+documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice and this permission
+notice appear in all copies.  Network Computing Devices, Inc.
+makes no representations about the suitability for any purpose
+of the information in this document.  This documentation is
+provided &ldquo;as is&rdquo; without express or implied warranty.
+</para>
+</legalnotice>
+
+<legalnotice>
+<para role="multiLicensing">Copyright © 1994 X Consortium</para>
+<para>
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &ldquo;Software&rdquo;), 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:
+</para>
+<para>
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+</para>
+<para>
+THE SOFTWARE IS PROVIDED &ldquo;AS IS&rdquo;, 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
+X CONSORTIUM 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.
+</para>
+<para>
+Except as contained in this notice, the name of the X Consortium 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 X Consortium.
+</para>
+</legalnotice>
+</bookinfo>
+
+<chapter id='Introduction'>
+<title>Introduction</title>
+<para>
+The management of fonts in large, heterogeneous environments is one of the
+hardest aspects of using the X Window System
+<footnote id='footnote1'><para>
+<firstterm><trademark>X Window System</trademark></firstterm>
+is a trademark of The Open Group.
+</para></footnote>
+.  Multiple formats and the lack of
+a consistent mechanism for exporting font data to all displays on a network
+prevent the transparent use of applications across different display platforms.
+The X Font Service protocol is designed to address this and other issues, with
+specific emphasis on the needs of the core X protocol.  Upward-compatible
+changes (typically in the form of new requests) are expected as consensus is
+reached on new features (particularly outline font support).
+</para>
+<para>
+Currently, most X displays use network file protocols such as
+<acronym>NFS</acronym> and <acronym>TFTP</acronym> to
+obtain raw font data which they parse directly.  Since a common binary format
+for this data doesn't exist, displays must be able to interpret a variety of
+formats if they are to be used with different application hosts.  This leads to
+wasted code and data space and a loss of interoperability as displays are used
+in unforeseen environments.
+</para>
+<para>
+By moving the interpretation of font data out of the X server into a separate
+service on the network, these problems can be greatly reduced.  In addition,
+new technologies, such as dynamically generating bitmaps from scaled or outline
+fonts, can be provided to all displays transparently.  For horizontal text,
+caching techniques and increased processor power can potentially make
+rasterization more efficient on large, centralized hosts than on individual
+displays.
+</para>
+<para>
+Each font server provides sets of fonts that may be listed and queried for
+header, property, glyph extents, and bitmap information.  This data is
+transmitted over the network using a binary format (with variations to support
+different bit- and byte-orders) designed to minimize the amount of processing
+required by the display.  Since the font server, rather than the display, is
+responsible for parsing the raw font data, new formats can be used by all
+displays by modifying a single font server.
+</para>
+<para>
+From the user's point of view, font servers are simply a new type of name in
+the X font path.  Network name services allow descriptive names (such as
+DEPARTMENT-FONTS or APPLICATION-FONTS) to be translated into proper network
+addresses.  X displays send requests to and read replies from the font server
+rather than reading directly from files.  Since the X Font Service protocol is
+designed to allow subsets of the font data to be requested, displays may easily
+implement a variety of strategies for fine-grained demand-loading of glyphs.
+</para>
+</chapter>
+
+<chapter id='Architectural_Model'>
+<title>Architectural Model</title>
+<!-- .XS -->
+<!-- (SN Architectural Model -->
+<!-- .XE -->
+<para>
+In this document, the words <firstterm>client</firstterm> and
+<firstterm>server</firstterm> refer to the consumer and
+provider of a font, respectively, unless otherwise indicated.  It is important
+to note that in this context, the X server is also a font client.
+</para>
+<para>
+The X Font Service protocol does not require any changes to the core X protocol
+or to any applications.  To the user, font servers are simply additional types
+of font path elements.  As such, X servers may connect to multiple font
+servers, as shown in Figure 2.1.  Although the font protocol is geared towards
+the X Window System, it may be also used by other consumers of font data (such
+as printer drivers).
+</para>
+
+<figure id="figure2.1" label="2.1"><title>Connecting to a Font Server</title>
+<literallayout class="monospaced">
+ ┌────────┐              ┌───────────────┐
+ │   X1   ├──────────────┤               │
+ │ Server │              │  Font Server  │
+ └────────┘      ┌───────┤      1        │
+                 │       └───────────────┘
+ ┌────────┐      │
+ │   X2   ├──────┘       ┌───────────────┐
+ │ Server ├──────────────┤               │
+ └────────┘              │  Font Server  │
+                 ┌───────┤      2        │
+┌─────────┐      │       └───────────────┘
+│  other  │      │
+│ clients ├──────┘
+└─────────┘
+</literallayout>
+</figure>
+
+<para>
+Clients communicate with the font server using the request/reply/event model
+over any mutually-understood virtual stream connection (such as
+<acronym>TCP/IP</acronym>, DECnet,
+<footnote id='footnote2'><para>
+<firstterm><trademark>DECnet</trademark></firstterm> is a trademark
+of Digital Equipment Corporation.
+</para></footnote>
+etc.).  Font servers are responsible for providing data in the bit and byte
+orders requested by the client.  The set of requests and events provided in the
+first version of the X Font Service protocol is limited to supporting the needs
+of the bitmap-oriented core X Window System protocol.  Extensions are expected
+as new needs evolve.
+</para>
+<para>
+A font server reads raw font data from a variety of sources (possibly
+including other font servers) and converts it into a common format that is
+transmitted to the client using the protocol described in
+<link linkend='Protocol'>Section 4</link>.  New font
+formats are handled by adding new converters to a font server, as shown in
+Figure 2.2.
+</para>
+
+<figure id="figure2.2" label="2.2"><title>Where Font Data Comes From</title>
+<literallayout class="monospaced">
+                ┌────────────┐
+                │   client   │
+                │ (X server) │
+                └─────┬──────┘
+                      │
+                   network
+                      │
+┌─────────────────────┴──────────────────────┐
+│                                            │
+│                font server 1               │
+│                                            │
+├─────┬─────┬─────┬─────┬────┬─────┬───┬─────┤
+│ bdf │ snf │ pcf │ atm │ f3 │ dwf │ │ │ ... │
+└─────┴─────┴─────┴─────┴────┴─────┴─│─┴─────┘
+                                     │
+                                  network
+                                     │
+                               ┌─────┴────┐
+                               │   font   │
+                               │ server 2 │
+                               └──────────┘
+</literallayout>
+</figure>
+
+<para>
+The server may choose to provide named sets of fonts called
+<firstterm>catalogues</firstterm>.
+Clients may specify which of the sets should be used in listing or opening a
+font.
+</para>
+
+<para>
+An event mechanism similar to that used in the X protocol is provided for
+asynchronous notification of clients by the server.
+</para>
+
+<para>
+Clients may provide authorization data for the server to be used in determining
+(according to the server's licensing policy) whether or not access should be
+granted to particular fonts.  This is particularly useful for clients whose
+authorization changes over time (such as an X server that can verify the
+identity of the user).
+</para>
+<para>
+Implementations that wish to provide additional requests or events may use the
+extension mechanism.  Adding to the core font service protocol (with the
+accompanying change in the major or minor version numbers) is reserved to the X
+Consortium.
+</para>
+</chapter>
+
+<chapter id='Font_Server_Naming'>
+<title>Font Server Naming</title>
+<!-- .XS -->
+<!-- (SN Font Server Naming -->
+<!-- .XE -->
+<para>
+Font clients that expose font server names to the user are encouraged to
+provide ways of naming font servers symbolically (e.g. DEPARTMENT-FONTS).
+However, for environments that lack appropriate name services
+transport-specific names are necessary.  Since these names do occur in the
+protocol, clients and servers should support at least the applicable formats
+described below.  Formats for additional transports may be registered with the
+X Consortium.
+</para>
+
+<section id='TCPIP_Names'>
+<title>TCP/IP Names</title>
+<!-- .XS -->
+<!-- (SN TCP/IP Names -->
+<!-- .XE -->
+<para>
+The following syntax should be used for TCP/IP names:
+
+<literallayout class="monospaced">
+    <replaceable>TCP name</replaceable>  ::=  <literal>tcp/</literal> <replaceable>hostname</replaceable> <literal>:</literal> <replaceable>ipportnumber</replaceable> <optional><literal>/</literal> <replaceable>cataloguelist</replaceable></optional>
+</literallayout>
+
+where <replaceable>hostname</replaceable> is either symbolic (such as
+<systemitem class="systemname">expo.lcs.mit.edu</systemitem>) or numeric
+decimal (such as <systemitem class="ipaddress">18.30.0.212</systemitem>).
+The <replaceable>ipportnumber</replaceable> is the port on which the
+font server is listening for connections.
+The <replaceable>cataloguelist</replaceable> string at
+the end is optional and specifies a plus-separated list of catalogues
+that may be requested.  For example:
+<literallayout class="monospaced">
+     tcp/expo.lcs.mit.edu:8012/available+special
+     tcp/18.30.0.212:7890
+</literallayout>
+</para>
+</section>
+
+<section id='DECnet_Names'>
+<title>DECnet Names</title>
+<!-- .XS -->
+<!-- (SN DECnet Names -->
+<!-- .XE -->
+<para>
+The following syntax should be used for DECnet names:
+
+<literallayout class="monospaced">
+    <replaceable>DECnet name</replaceable>  ::=  <literal>decnet/</literal> <replaceable>nodename</replaceable> <literal>::font$</literal> <replaceable>objname</replaceable> <optional><literal>/</literal> <replaceable>cataloguelist</replaceable></optional>
+</literallayout>
+
+where <replaceable>nodename</replaceable> is either symbolic (such as
+<systemitem class="systemname">SRVNOD</systemitem>) or the
+numeric decimal form of the DECnet address (such as
+<systemitem class="ipaddress">44.70</systemitem>).
+The <replaceable>objname</replaceable> is normal, case-insensitive DECnet
+object name.  The <replaceable>cataloguelist</replaceable> string
+at the end is
+optional and specifies a plus-separated list of catalogues that may be
+requested.  For example:
+
+<literallayout class="monospaced">
+     DECNET/SRVNOD::FONT$DEFAULT/AVAILABLE
+     decnet/44.70::font$other
+</literallayout>
+</para>
+</section>
+</chapter>
+
+<chapter id='Protocol'>
+<title>Protocol</title>
+<!-- .XS -->
+<!-- (SN Protocol -->
+<!-- .XE -->
+<para>
+The protocol described below uses the request/reply/error model and is
+specified using the same conventions outlined in
+Section 2 of the core X Window System protocol
+<xref linkend="References:x11proto"/>:
+</para>
+<itemizedlist>
+  <listitem>
+    <para>
+<!-- .IP \(bu 5 -->
+Data type names are spelled in upper case with no word separators,
+as in:  <link linkend="Data_Types:FONTID"><type>FONTID</type></link>
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+<!-- .IP \(bu 5 -->
+Alternate values are capitalized with no word separators,
+as in:  <constant>MaxWidth</constant>
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+<!-- .IP \(bu 5 -->
+Structure element declarations are in lower case with hyphens
+as word separators, as in:  <structfield>byte-order-msb</structfield>
+    </para>
+    <note>
+      <para>
+Structure element names are referred to in
+upper case (e.g. <structfield>BYTE-ORDER-MSB</structfield>) when used in
+descriptions to set them off from the surrounding
+text.  When this document is typeset they will be
+printed in lower case in a distinct font.
+      </para>
+    </note>
+  </listitem>
+  <listitem>
+    <para>
+Type declarations have the form <quote><type>name</type>: type</quote>,
+as in:  <type>CARD8</type>: 8-bit byte
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+Comma-separated lists of alternate values are enclosed in
+braces, as in:  { <constant>Min</constant>, <constant>MaxWidth</constant>,
+<constant>Max</constant> }
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+Comma-separated lists of structure elements are enclosed in
+brackets, as in:  [ <structfield>byte1</structfield>: <type>CARD8</type>,
+<structfield>byte2</structfield>: <type>CARD8</type> ]
+    </para>
+  </listitem>
+</itemizedlist>
+
+<para>
+A type with a prefix <quote>LISTof</quote> represents a counted list of
+elements of that type, as in:  <type>LISTofCARD8</type>
+</para>
+
+<section id='Data_Types'>
+<title>Data Types</title>
+<!-- .XS -->
+<!-- (SN Data Types -->
+<!-- .XE -->
+<para>
+The following data types are used in the core X Font Server protocol:
+</para>
+
+<section id="Data_Types:ACCESSCONTEXT">
+  <title><type>ACCESSCONTEXT</type></title>
+  <indexterm zone="Data_Types:ACCESSCONTEXT" significance="preferred"><primary>ACCESSCONTEXT</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>ACCESSCONTEXT</type>:</entry><entry><link linkend="Data_Types:ID"><type>ID</type></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+<para>
+This value is specified in the CreateAC request as the identifier
+to be used when referring to a particular AccessContext resource
+within the server.  These resources are used by the server to
+store client-specified authorization information.  This
+information may be used by the server to determine whether or not
+the client should be granted access to particular font data.
+</para>
+<para>
+In order to preserve the integrity of font licensing being performed by
+the font server, care must be taken by a client to properly represent the
+identity of the true user of the font.  Some font clients will in fact
+be servers (for example, X servers) requesting fonts for their own clients.
+Other font clients may be doing work on behalf of a number of different
+users over time (for example, print spoolers).
+</para>
+<para>
+<type>AccessContext</type>s
+must be created (with
+<link linkend="Requests:CreateAC"><function>CreateAC</function></link>)
+and switched among (with
+<link linkend="Requests:SetAuthorization"><function>SetAuthorization</function></link>)
+to represent all of these <quote>font users</quote> properly.
+    </para>
+</section>
+
+<section id="Data_Types:ALTERNATESERVER">
+  <title><type>ALTERNATESERVER</type></title>
+  <indexterm zone="Data_Types:ALTERNATESERVER" significance="preferred"><primary>ALTERNATESERVER</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry morerows="1"><type>ALTERNATESERVER</type>:</entry>
+          <entry> [ <structfield>name</structfield>:</entry><entry>  <link linkend="Data_Types:STRING8"><type>STRING8</type></link>,</entry></row>
+          <row><entry>&emsp;<structfield>subset</structfield>:</entry><entry>  <link linkend="Data_Types:BOOL"><type>BOOL</type></link> ]</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>
+This structure specifies the <structfield>NAME</structfield>,
+encoded in <acronym>ISO</acronym> 8859-1 according
+to <link linkend='Font_Server_Naming'>Section 3</link>,
+of another font server that may be useful as a
+substitute for this font server.
+The <structfield>SUBSET</structfield> field indicates
+whether or not the alternate server is likely to only contain a
+subset of the fonts available from this font server.  This
+information is returned during the initial connection setup and
+may be used by the client to find a backup server in case of
+failure.
+    </para>
+</section>
+
+<section id="Data_Types:AUTH">
+  <title><type>AUTH</type></title>
+  <indexterm zone="Data_Types:AUTH" significance="preferred"><primary>AUTH</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry morerows="1"><type>AUTH</type>:</entry><entry>[ <structfield>name</structfield>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link>,</entry></row>
+          <row><entry>&emsp;<structfield>data</structfield>:</entry><entry><link linkend="Data_Types:BYTE"><type>LISTofBYTE</type></link> ]</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+<para>
+This structure specifies the name of an authorization protocol and
+initial data for that protocol.  It is used in the authorization
+negotiation in the initial connection setup and in the CreateAC
+request.
+</para>
+</section>
+
+<section id="Data_Types:BITMAPFORMAT">
+  <title><type>BITMAPFORMAT</type></title>
+  <indexterm zone="Data_Types:BITMAPFORMAT" significance="preferred"><primary>BITMAPFORMAT</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>BITMAPFORMAT</type>:</entry><entry><type>CARD32</type></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>
+   <type>CARD32</type> containing the following fields defined by the
+   sets of values given further below
+    </para>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+        <row><entry>[</entry></row>
+          <row><entry>&emsp;<structfield>byte-order-msb</structfield>:</entry><entry>      1 bit,</entry></row>
+          <row><entry>&emsp;<structfield>bit-order-msb</structfield>:</entry><entry>       1 bit,</entry></row>
+          <row><entry>&emsp;<structfield>image-rect</structfield>:</entry><entry>          2 bits</entry><entry>{ <constant>Min</constant>,
+                          <constant>MaxWidth</constant>,
+                          <constant>Max</constant> },</entry></row>
+          <row><entry>&emsp;<structfield>zero-pad</structfield>:</entry><entry>            4 bits,</entry></row>
+          <row><entry>&emsp;<structfield>scanline-pad</structfield>:</entry><entry>        2 bits</entry><entry>{ <constant>ScanlinePad8</constant>,
+                          <constant>ScanlinePad16</constant>,
+                          <constant>ScanlinePad32</constant>,
+                          <constant>ScanlinePad64</constant> },</entry></row>
+          <row><entry>&emsp;<structfield>zero-pad</structfield>:</entry><entry>            2 bits,</entry></row>
+          <row><entry>&emsp;<structfield>scanline-unit</structfield>:</entry><entry>       2 bits</entry><entry>{ <constant>ScanlineUnit8</constant>,
+                          <constant>ScanlineUnit16</constant>,
+                          <constant>ScanlineUnit32</constant>,
+                          <constant>ScanlineUnit64</constant> },</entry></row>
+          <row><entry>&emsp;<structfield>zero-pad</structfield>:</entry><entry>            2 bits,</entry></row>
+          <row><entry>&emsp;<structfield>zero-pad</structfield>:</entry><entry>            16 bits,</entry></row>
+          <row><entry>]</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+<para>
+This structure specifies how glyph images are transmitted in
+response to
+<link linkend="Requests:QueryXBitmaps8"><function>QueryXBitmaps8</function></link>
+and
+<link linkend="Requests:QueryXBitmaps16"><function>QueryXBitmaps16</function></link>
+requests.
+</para>
+<para>
+If the <structfield>BYTE-ORDER-MSB</structfield> bit
+<literal>(1 &lt;&lt; 0)</literal> is set, the Most Significant
+Byte of each scanline unit is returned first.  Otherwise, the
+Least Significant Byte is returned first.
+</para>
+<para>
+If the <structfield>BIT-ORDER-MSB</structfield> bit
+<literal>(1 &lt;&lt; 1)</literal> is set, the left-most bit in
+each glyph scanline unit is stored in the Most Significant Bit of
+each transmitted scanline unit.  Otherwise, the left-most bit is
+stored in the Least Significant Bit.
+</para>
+<para>
+The <structfield>IMAGE-RECT</structfield> field specifies a rectangle of
+pixels within the
+glyph image.  It contains one of the following alternate values:
+
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><constant>ImageRectMin</constant></entry><entry><literal>(0 &lt;&lt; 2)</literal></entry></row>
+          <row><entry><constant>ImageRectMaxWidth</constant></entry><entry><literal>(1 &lt;&lt; 2)</literal></entry></row>
+          <row><entry><constant>ImageRectMax</constant></entry><entry><literal>(2 &lt;&lt; 2)</literal></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+</para>
+<para>
+For a glyph with extents <link linkend="Data_Types:XCHARINFO"><type>XCHARINFO</type></link> in a font with header
+information <link linkend="Data_Types:XFONTINFO"><type>XFONTINFO</type></link>, the <structfield>IMAGE-RECT</structfield>
+values have the following meanings:
+<variablelist>
+  <varlistentry id="Constant:ImageRectMin">
+    <term><constant>ImageRectMin</constant></term>
+    <listitem>
+      <indexterm zone="Constant:ImageRectMin" significance="preferred"><primary>ImageRectMin</primary></indexterm>
+      <para>
+This refers to the minimal bounding rectangle
+surrounding the inked pixels in the glyph.  This is the
+most compact representation.  The edges of the rectangle
+are:
+<literallayout class="monospaced">
+         left:     <structfield>XCHARINFO.LBEARING</structfield>
+         right:    <structfield>XCHARINFO.RBEARING</structfield>
+         top:      <structfield>XCHARINFO.ASCENT</structfield>
+         bottom:   <structfield>XCHARINFO.DESCENT</structfield>
+</literallayout>
+      </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry id="Constant:ImageRectMaxWidth">
+    <term><constant>ImageRectMaxWidth</constant></term>
+    <listitem>
+      <indexterm zone="Constant:ImageRectMaxWidth" significance="preferred"><primary>ImageRectMaxWidth</primary></indexterm>
+      <para>
+This refers to the scanlines between the
+glyph's ascent and descent, padded on the left to the minimum
+left-bearing (or 0, whichever is less) and on the right to
+the maximum right-bearing (or logical-width, whichever is
+greater).  All glyph images share a common horizontal
+origin.  This is a combination of <constant>ImageRectMax</constant> in the
+horizontal direction and <constant>ImageRectMin</constant> in the vertical
+direction.  The edges of the rectangle are:
+
+<literallayout class="monospaced">
+left:         min (<structfield>XFONTINFO.MIN-BOUNDS.LBEARING</structfield>, 0)
+right:        max (<structfield>XFONTINFO.MAX-BOUNDS.RBEARING</structfield>,
+                   <structfield>XFONTINFO.MAX-BOUNDS.WIDTH</structfield>)
+top:               <structfield>XCHARINFO.ASCENT</structfield>
+bottom:            <structfield>XCHARINFO.DESCENT</structfield>
+</literallayout>
+      </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry id="Constant:ImageRectMax">
+    <term><constant>ImageRectMax</constant></term>
+    <listitem>
+      <indexterm zone="Constant:ImageRectMax" significance="preferred"><primary>ImageRectMax</primary></indexterm>
+      <para>
+This refers to all scanlines, from the maximum
+ascent (or the font ascent, whichever is greater) to the
+maximum descent (or the font descent, whichever is greater),
+padded to the same horizontal extents as <constant>MaxWidth</constant>.
+All glyph images have the same sized bitmap and share a
+common origin.  This is the least compact representation,
+but may be the easiest or most efficient (particularly for
+character cell fonts) for some clients to use.  The edges of
+the rectangle are:
+
+<literallayout class="monospaced">
+left:         min (<structfield>XFONTINFO.MIN-BOUNDS.LBEARING</structfield>, 0)
+right:        max (<structfield>XFONTINFO.MAX-BOUNDS.RBEARING</structfield>,
+                   <structfield>XFONTINFO.MAX-BOUNDS.WIDTH</structfield>)
+top:          max (<structfield>XFONTINFO.FONT-ASCENT</structfield>,
+                   <structfield>XFONTINFO.MAX-BOUNDS.ASCENT</structfield>)
+bottom:       max (<structfield>XFONTINFO.FONT-DESCENT</structfield>,
+                   <structfield>XFONTINFO.MAX-BOUNDS.DESCENT</structfield>)
+</literallayout>
+      </para>
+    </listitem>
+  </varlistentry>
+</variablelist>
+</para>
+<para>
+The <structfield>SCANLINE-PAD</structfield> field specifies the number of
+bits (8, 16, 32,
+or 64) to which each glyph scanline is padded before transmitting.
+It contains one of the following alternate values:
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><constant>ScanlinePad8</constant></entry><entry><literal>(0 &lt;&lt; 8)</literal></entry></row>
+          <row><entry><constant>ScanlinePad16</constant></entry><entry><literal>(1 &lt;&lt; 8)</literal></entry></row>
+          <row><entry><constant>ScanlinePad32</constant></entry><entry><literal>(2 &lt;&lt; 8)</literal></entry></row>
+          <row><entry><constant>ScanlinePad64</constant></entry><entry><literal>(3 &lt;&lt; 8)</literal></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+</para>
+<para>
+The <structfield>SCANLINE-UNIT</structfield> field specifies the number of
+bits (8, 16, 32, or 64) that should be treated as a unit for swapping.
+This value must be less than or equal to the number of bits specified by the
+<structfield>SCANLINE-PAD</structfield>.  It contains one of the following
+alternate values:
+
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><constant>ScanlineUnit8</constant></entry><entry><literal>(0 &lt;&lt; 12)</literal></entry></row>
+          <row><entry><constant>ScanlineUnit16</constant></entry><entry><literal>(1 &lt;&lt; 12)</literal></entry></row>
+          <row><entry><constant>ScanlineUnit32</constant></entry><entry><literal>(2 &lt;&lt; 12)</literal></entry></row>
+          <row><entry><constant>ScanlineUnit64</constant></entry><entry><literal>(3 &lt;&lt; 12)</literal></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+</para>
+<para>
+<link linkend="Data_Types:BITMAPFORMAT"><type>BITMAPFORMAT</type></link>s are byte-swapped as <type>CARD32</type>s.
+All unspecified bits must be zero.
+</para>
+<para>
+Use of an invalid <link linkend="Data_Types:BITMAPFORMAT"><type>BITMAPFORMAT</type></link> causes a
+<link linkend="Errors:Format"><errorname>Format</errorname></link> error to be returned.
+</para>
+</section>
+
+<section id="Data_Types:BITMAPFORMATMASK">
+  <title><type>BITMAPFORMATMASK</type></title>
+  <indexterm zone="Data_Types:BITMAPFORMATMASK" significance="preferred"><primary>BITMAPFORMATMASK</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>BITMAPFORMATMASK</type>:</entry><entry>     <type>CARD32</type> mask</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+<para>
+This is a mask of bits representing the fields in a <link linkend="Data_Types:BITMAPFORMAT"><type>BITMAPFORMAT</type></link>:
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><constant>ByteOrderMask</constant></entry><entry><literal>(1 &lt;&lt; 0)</literal></entry></row>
+          <row><entry><constant>BitOrderMask</constant></entry><entry><literal>(1 &lt;&lt; 1)</literal></entry></row>
+          <row><entry><constant>ImageRectMask</constant></entry><entry><literal>(1 &lt;&lt; 2)</literal></entry></row>
+          <row><entry><constant>ScanlinePadMask</constant></entry><entry><literal>(1 &lt;&lt; 3)</literal></entry></row>
+          <row><entry><constant>ScanlineUnitMask</constant></entry><entry><literal>(1 &lt;&lt; 4)</literal></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+</para>
+<para>
+Unspecified bits are required to be zero or else a
+<link linkend="Errors:Format"><errorname>Format</errorname></link> error is returned.
+</para>
+</section>
+
+<section id="Data_Types:BOOL">
+  <title><type>BOOL</type></title>
+  <indexterm zone="Data_Types:BOOL" significance="preferred"><primary>BOOL</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>BOOL</type>:</entry><entry>  <type>CARD8</type></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+<para>
+This is a boolean value containing one of the following alternate
+values:
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><constant>False</constant></entry><entry><literal>0</literal></entry></row>
+          <row><entry><constant>True</constant></entry><entry><literal>1</literal></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+</para>
+</section>
+
+<section id="Data_Types:BYTE">
+  <title><type>BYTE</type></title>
+  <indexterm zone="Data_Types:BYTE" significance="preferred"><primary>BYTE</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>BYTE</type>:</entry><entry>  8-bit value</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+<para>
+This is an unsigned byte of data whose encoding
+is determined by the context in which it is used.
+</para>
+
+</section>
+
+<section id="Data_Types:CARDn">
+  <title><type>CARD8</type>, <type>CARD16</type>, <type>CARD32</type></title>
+  <indexterm zone="Data_Types:CARDn" significance="preferred"><primary>CARD8</primary></indexterm>
+  <indexterm zone="Data_Types:CARDn" significance="preferred"><primary>CARD16</primary></indexterm>
+  <indexterm zone="Data_Types:CARDn" significance="preferred"><primary>CARD32</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>CARD8</type>:</entry><entry>  8-bit unsigned integer</entry></row>
+          <row><entry><type>CARD16</type>:</entry><entry>  16-bit unsigned integer</entry></row>
+          <row><entry><type>CARD32</type>:</entry><entry>  32-bit unsigned integer</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+<para>
+These are unsigned numbers.  The latter two are byte-swapped when
+the server and client have different byte orders.
+</para>
+
+</section>
+
+<section id="Data_Types:CHAR2B">
+  <title><type>CHAR2B</type></title>
+  <indexterm zone="Data_Types:CHAR2B" significance="preferred"><primary>CHAR2B</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>CHAR2B</type>:</entry><entry>[ <structfield>byte1</structfield>, <structfield>byte2</structfield>:</entry><entry><type>CARD8</type> ]</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+<para>
+This structure specifies an individual character code within
+either a 2-dimensional matrix (using <structfield>BYTE1</structfield>
+and <structfield>BYTE2</structfield> as the row and column indices,
+respectively) or a vector (using <structfield>BYTE1</structfield> and
+<structfield>BYTE2</structfield> as most- and least-significant bytes,
+respectively).  This data type is treated as a pair of 8-bit values and
+is never byte-swapped.  Therefore, the client should always transmit
+<structfield>BYTE1</structfield> first.
+</para>
+
+</section>
+
+<section id="Data_Types:EVENTMASK">
+  <title><type>EVENTMASK</type></title>
+  <indexterm zone="Data_Types:EVENTMASK" significance="preferred"><primary>EVENTMASK</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>EVENTMASK</type>:</entry><entry>  <type>CARD32</type> mask</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+<para>
+This is a mask of bits indicating which of an extension's (or the
+core's) maskable events the client would like to receive.  Each
+bit indicates one or more events, and a bit value of one indicates
+interest in a corresponding set of events.  The following bits are
+defined for event masks specified for the core protocol (i.e. an
+<parameter>EXTENSION-OPCODE</parameter> of zero in
+<link linkend="Requests:SetEventMask"><function>SetEventMask</function></link>
+and
+<link linkend="Requests:GetEventMask"><function>GetEventMask</function></link>
+requests):
+
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><constant>CatalogueListChangeMask</constant></entry><entry><literal>(1 &lt;&lt; 0)</literal></entry></row>
+          <row><entry><constant>FontListChangeMask</constant></entry><entry><literal>(1 &lt;&lt; 1)</literal></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+</para>
+
+<para>
+If
+<constant>CatalogueListChangeMask</constant>
+is set, client is interested in
+receiving
+<link linkend="Events:CatalogueListNotify"><function>CatalogueListNotify</function></link>
+events.  If
+<constant>FontListChangeMask</constant>
+is set, the client is interested in
+receiving
+<link linkend="Events:FontListNotify"><function>FontListNotify</function></link>
+events.
+</para>
+<para>
+Extensions that provide additional events may define their own
+event masks.  These event masks have their own scope and may use
+the same bit values as the core or other extensions.
+    </para>
+    <para>
+All unused bits must be set to zero.  In
+<link linkend="Requests:SetEventMask"><function>SetEventMask</function></link>
+requests, if
+any bits are set that are not defined for the extension (or core)
+for which this <type>EVENTMASK</type> is intended (according to the
+<parameter>EXTENSION-OPCODE</parameter> given in the
+<link linkend="Requests:SetEventMask"><function>SetEventMask</function></link>
+request), an
+<link linkend="Errors:EventMask"><errorname>EventMask</errorname></link>
+error is generated.
+    </para>
+    <para>
+This value is swapped as a <type>CARD32</type>.
+    </para>
+
+</section>
+
+<section id="Data_Types:FONTID">
+  <title><type>FONTID</type></title>
+  <indexterm zone="Data_Types:FONTID" significance="preferred"><primary>FONTID</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>FONTID</type>:</entry><entry>     <link linkend="Data_Types:ID"><type>ID</type></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+<para>
+This is specified by the client in the request
+<link linkend="Requests:OpenBitmapFont"><function>OpenBitmapFont</function></link>
+as the identifier to be used when referring to a particular open
+font.
+</para>
+
+</section>
+
+<section id="Data_Types:ID">
+  <title><type>ID</type></title>
+  <indexterm zone="Data_Types:ID" significance="preferred"><primary>ID</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>ID</type>:</entry><entry>  <type>CARD32</type></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+<para>
+This is a 32-bit value in which the top 3 bits must be clear, and
+at least 1 other bit must be set (yielding a range of 1 through
+2<superscript>29</superscript>-1).
+It is specified by the client to represent objects in
+the server.  Identifiers are scoped according to their type are
+private to the client; thus, the same identifier may be used for
+both a <link linkend="Data_Types:FONTID"><type>FONTID</type></link> and an <link linkend="Data_Types:ACCESSCONTEXT"><type>ACCESSCONTEXT</type></link>
+as well as by multiple clients.
+</para>
+<para>
+An <type>ID</type> of zero is referred to as <constant>None</constant>.
+</para>
+</section>
+
+<section id="Data_Types:INTn">
+  <title><type>INT8</type>, <type>INT16</type>, <type>INT32</type></title>
+  <indexterm zone="Data_Types:INTn" significance="preferred"><primary>INT8</primary></indexterm>
+  <indexterm zone="Data_Types:INTn" significance="preferred"><primary>INT16</primary></indexterm>
+  <indexterm zone="Data_Types:INTn" significance="preferred"><primary>INT32</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>INT8</type>:</entry><entry>  8-bit signed integer</entry></row>
+          <row><entry><type>INT16</type>:</entry><entry>  16-bit signed integer</entry></row>
+          <row><entry><type>INT32</type>:</entry><entry>  32-bit signed integer</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+<para>
+These are signed numbers.  The latter two are byte-swapped when
+the client and server have different byte orders.
+</para>
+</section>
+
+<section id="Data_Types:OFFSET32">
+  <title><type>OFFSET32</type></title>
+  <indexterm zone="Data_Types:OFFSET32" significance="preferred"><primary>OFFSET32</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry morerows='1'><type>OFFSET32</type>:</entry>
+          <entry>[ <structfield>position</structfield>:</entry><entry><type>CARD32</type>,</entry></row>
+          <row><entry>&emsp;<structfield>length</structfield>:</entry><entry><type>CARD32</type> ]</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This structure indicates a position and length within a block of
+data.
+    </para>
+</section>
+
+<section id="Data_Types:PROPINFO">
+  <title><type>PROPINFO</type></title>
+  <indexterm zone="Data_Types:PROPINFO" significance="preferred"><primary>PROPINFO</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry morerows='1'><type>PROPINFO</type>:</entry>
+          <entry>[ <structfield>offsets</structfield>:</entry><entry><link linkend="Data_Types:PROPOFFSET"><type>LISTofPROPOFFSET</type></link>,</entry></row>
+          <row><entry>&emsp;<structfield>data</structfield>:</entry><entry><link linkend="Data_Types:BYTE"><type>LISTofBYTE</type></link> ]</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>
+This structure describes the list of properties provided by a
+font.  Strings for all of the properties names and values are
+stored within the data block and are located using a table of
+offsets and lengths.
+    </para>
+    <para>
+This structure is padded to 32-bit alignment.
+    </para>
+
+</section>
+
+<section id="Data_Types:PROPOFFSET">
+  <title><type>PROPOFFSET</type></title>
+  <indexterm zone="Data_Types:PROPOFFSET" significance="preferred"><primary>PROPOFFSET</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry morerows='3'><type>PROPOFFSET</type>:</entry>
+          <entry>[ <structfield>name</structfield>:</entry><entry><link linkend="Data_Types:OFFSET32"><type>OFFSET32</type></link>,</entry></row>
+          <row><entry>&emsp;<structfield>value</structfield>:</entry><entry><link linkend="Data_Types:OFFSET32"><type>OFFSET32</type></link>,</entry></row>
+          <row><entry>&emsp;<structfield>type</structfield>:</entry><entry><type>CARD8</type>,</entry></row>
+          <row><entry>&emsp;<structfield>zero-pad3</structfield>:</entry><entry><link linkend="Data_Types:BYTE"><type>BYTE</type></link>, <link linkend="Data_Types:BYTE"><type>BYTE</type></link>, <link linkend="Data_Types:BYTE"><type>BYTE</type></link> ]</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>
+This structure specifies the position, length, and type of
+of data for a property.
+    </para>
+    <para>
+The <structfield>NAME</structfield> field specifies the position and length
+(which must be
+greater than zero) of the property name relative to the beginning
+of the <structfield>PROPINFO.DATA</structfield> block for this font.
+The interpretation of
+the position and length of the <structfield>VALUE</structfield> field is
+determined by the <structfield>TYPE</structfield> field, which contains
+one of the following alternate values:
+
+     <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><constant>String</constant></entry><entry><literal>0</literal></entry></row>
+          <row><entry><constant>Unsigned</constant></entry><entry><literal>1</literal></entry></row>
+          <row><entry><constant>Signed</constant></entry><entry><literal>2</literal></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+which have the following meanings:
+<variablelist>
+  <varlistentry id="Constant:String">
+    <term><constant>String</constant></term>
+    <listitem>
+      <indexterm zone="Constant:String" significance="preferred"><primary>String</primary></indexterm>
+      <para>
+This property contains a counted string of bytes.  The
+data is stored in the <structfield>PROPINFO.DATA</structfield>
+block beginning at
+relative byte VALUE.POSITION (beginning with zero), extending
+for VALUE.LENGTH (at least zero) bytes.
+      </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry id="Constant:Unsigned">
+    <term><constant>Unsigned</constant></term>
+    <listitem>
+      <indexterm zone="Constant:Unsigned" significance="preferred"><primary>Unsigned</primary></indexterm>
+    <para>
+This property contains a unsigned, 32-bit number stored
+as a <type>CARD32</type> in VALUE.POSITION (VALUE.LENGTH is zero).
+    </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry id="Constant:Signed">
+    <term><constant>Signed</constant></term>
+    <listitem>
+      <indexterm zone="Constant:Signed" significance="preferred"><primary>Signed</primary></indexterm>
+      <para>
+This property contains a signed, 32-bit number stored as
+an <type>INT32</type> in VALUE.POSITION (VALUE.LENGTH is zero).
+      </para>
+    </listitem>
+  </varlistentry>
+</variablelist>
+This structure is zero-padded to 32-bit alignment.
+</para>
+
+</section>
+
+<section id="Data_Types:RANGE">
+  <title><type>RANGE</type></title>
+  <indexterm zone="Data_Types:RANGE" significance="preferred"><primary>RANGE</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>RANGE</type>:</entry>
+          <entry>[ <structfield>min-char</structfield>, <structfield>max-char</structfield>:</entry><entry><link linkend="Data_Types:CHAR2B"><type>CHAR2B</type></link> ]</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+  <para>
+This structure specifies a range of character codes.  A single
+character is represented by <structfield>MIN-CHAR</structfield> equals
+<structfield>MAX-CHAR</structfield>.  If the linear interpretation of
+<structfield>MAX-CHAR</structfield> is less than that of
+<structfield>MIN-CHAR</structfield>, or if
+<structfield>MIN-CHAR</structfield> is less than the font's
+<structfield>XFONTINFO.CHAR-RANGE.MIN-CHAR</structfield>, or if
+<structfield>MAX-CHAR</structfield> is greater than the
+font's <structfield>XFONTINFO.CHAR-RANGE.MAX-CHAR</structfield>,
+the range is invalid.
+  </para>
+
+</section>
+
+<section id="Data_Types:RESOLUTION">
+  <title><type>RESOLUTION</type></title>
+  <indexterm zone="Data_Types:RESOLUTION" significance="preferred"><primary>RESOLUTION</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry morerows='2'><type>RESOLUTION</type>:</entry>
+          <entry>[ <structfield>x-resolution</structfield>:</entry><entry><type>CARD16</type>,</entry></row>
+          <row><entry>&emsp;<structfield>y-resolution</structfield>:</entry><entry><type>CARD16</type>,</entry></row>
+          <row><entry>&emsp;<structfield>decipoint-size</structfield>:</entry><entry><type>CARD16</type> ]</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+  <para>
+This structure specifies resolution and point size to be used in
+resolving partially-specified scaled font names.  The
+<structfield>X-RESOLUTION</structfield> and
+<structfield>Y-RESOLUTION</structfield> are measured in
+pixels-per-inch and must be greater than zero.
+The <structfield>DECIPOINT-SIZE</structfield> is the preferred font
+size, measured in tenths of a point, and must be greater than zero.
+  </para>
+
+</section>
+
+<section id="Data_Types:STRING8">
+  <title><type>STRING8</type></title>
+  <indexterm zone="Data_Types:STRING8" significance="preferred"><primary>STRING8</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>STRING8</type>:</entry><entry>          <type>LISTofCARD8</type></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+  <para>
+This is a counted list of 1-byte character codes, typically
+encoded in <acronym>ISO</acronym> 8859-1.  A character code
+<quote><literal>c</literal></quote> is equivalent to a
+<link linkend="Data_Types:CHAR2B"><type>CHAR2B</type></link> structure whose <structfield>BYTE1</structfield>
+is zero and whose <structfield>BYTE2</structfield> is
+<quote><literal>c</literal></quote>.
+  </para>
+
+</section>
+
+<section id="Data_Types:TIMESTAMP">
+  <title><type>TIMESTAMP</type></title>
+  <indexterm zone="Data_Types:TIMESTAMP" significance="preferred"><primary>TIMESTAMP</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><type>TIMESTAMP</type>:</entry><entry>     <type>CARD32</type></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+  <para>
+This is the number of milliseconds that have passed since a
+server-dependent origin.  It is provided in errors and events and is
+permitted to wrap.
+  </para>
+</section>
+
+<section id="Data_Types:XCHARINFO">
+  <title><type>XCHARINFO</type></title>
+  <indexterm zone="Data_Types:XCHARINFO" significance="preferred"><primary>XCHARINFO</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry morerows='3'><type>XCHARINFO</type>:</entry>
+          <entry>[ <structfield>lbearing</structfield>, <structfield>rbearing</structfield>:</entry><entry><type>INT16</type>,</entry></row>
+          <row><entry>&emsp;<structfield>width</structfield>:</entry><entry><type>INT16</type>,</entry></row>
+          <row><entry>&emsp;<structfield>ascent</structfield>, <structfield>descent</structfield>:</entry><entry><type>INT16</type>,</entry></row>
+          <row><entry>&emsp;<structfield>attributes</structfield>:</entry><entry><type>CARD16</type> ]</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+  <para>
+This structure specifies the ink extents and horizontal escapement
+(also known as the set- or logical width) of an individual
+character.  The first five values represent directed distances in
+a coordinate system whose origin is aligned with the lower-left
+edge of the left-most pixel of the glyph baseline (i.e. the
+baseline falls between two pixels as shown in Figure 3-1 of the
+<citetitle>Bitmap Distribution Format 2.1</citetitle> Consortium standard
+<xref linkend="References:bdf-spec"/>).
+  </para>
+  <para>
+The <structfield>LBEARING</structfield> field specifies the
+directed distance measured to the
+right from the origin to the left edge of the left-most inked
+pixel in the glyph.
+  </para>
+  <para>
+The <structfield>RBEARING</structfield> field specifies the
+directed distance (measured to
+the right) from the origin to the right edge of the right-most
+inked pixel in the glyph.
+  </para>
+  <para>
+The <structfield>WIDTH</structfield> field specifies the
+directed distance (measured to the
+right) from the origin to the position where the next character
+should appear (called the <firstterm>escapement point</firstterm>). This
+distance includes any whitespace used for intercharacter padding and is
+also referred to as the <firstterm>logical width</firstterm> or
+<firstterm>horizontal escapement</firstterm>.
+<indexterm zone="Data_Types:XCHARINFO" significance="preferred"><primary>horizontal escapement</primary></indexterm>
+  </para>
+  <para>
+The <structfield>ASCENT</structfield> field specifies the
+directed distance (measured up)
+from the baseline to the top edge of the top-most inked pixel
+in the glyph.
+  </para>
+  <para>
+The <structfield>DESCENT</structfield> field specifies the
+directed distance (measured
+down) from the baseline to the bottom edge of the bottom-most
+inked pixel.
+  </para>
+  <para>
+The <structfield>ATTRIBUTES</structfield> field specifies
+glyph-specific information that
+is passed through the application.  If this value is not being
+used, it should be zero.
+  </para>
+  <para>
+The ink bounding box of a glyph is defined to be the smallest
+rectangle that encloses all of the inked pixels.  This box has
+a width of
+<structfield>RBEARING</structfield> &minus; <structfield>LBEARING</structfield>
+pixels and a height of
+<structfield>ASCENT</structfield> + <structfield>DESCENT</structfield> pixels.
+  </para>
+</section>
+
+<section id="Data_Types:XFONTINFO">
+  <title><type>XFONTINFO</type></title>
+  <indexterm zone="Data_Types:XFONTINFO" significance="preferred"><primary>XFONTINFO</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry morerows='8'><type>XFONTINFO</type>:</entry>
+          <entry>[ <structfield>flags</structfield>:</entry><entry><type>CARD32</type>,</entry></row>
+          <row><entry>&emsp;<structfield>drawing-direction</structfield>:</entry><entry>{ <constant>LeftToRight</constant>, <constant>RightToLeft</constant> }</entry></row>
+          <row><entry>&emsp;<structfield>char-range</structfield>:</entry><entry><link linkend="Data_Types:RANGE"><type>RANGE</type></link>,</entry></row>
+          <row><entry>&emsp;<structfield>default-char</structfield>:</entry><entry><link linkend="Data_Types:CHAR2B"><type>CHAR2B</type></link>,</entry></row>
+          <row><entry>&emsp;<structfield>min-bounds</structfield>:</entry><entry><link linkend="Data_Types:XCHARINFO"><type>XCHARINFO</type></link>,</entry></row>
+          <row><entry>&emsp;<structfield>max-bounds</structfield>:</entry><entry><link linkend="Data_Types:XCHARINFO"><type>XCHARINFO</type></link>,</entry></row>
+          <row><entry>&emsp;<structfield>font-ascent</structfield>:</entry><entry><type>INT16</type>,</entry></row>
+          <row><entry>&emsp;<structfield>font-descent</structfield>:</entry><entry><type>INT16</type>,</entry></row>
+          <row><entry>&emsp;<structfield>properties</structfield>:</entry><entry><link linkend="Data_Types:PROPINFO"><type>PROPINFO</type></link> ]</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+  <para>
+This structure specifies attributes related to the font as a
+whole.
+  </para>
+  <para>
+The <structfield>FLAGS</structfield> field is a bit mask containing zero
+or more of the following boolean values (unspecified bits must be zero):
+
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><constant>AllCharactersExist</constant></entry><entry><literal>(1 &lt;&lt; 0)</literal></entry></row>
+          <row><entry><constant>InkInside</constant></entry><entry><literal>(1 &lt;&lt; 1)</literal></entry></row>
+          <row><entry><constant>HorizontalOverlap</constant></entry><entry><literal>(1 &lt;&lt; 2)</literal></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+which have the following meanings:
+<variablelist>
+  <varlistentry id="Constant:AllCharactersExist">
+    <term><constant>AllCharactersExist</constant></term>
+    <listitem>
+      <indexterm zone="Constant:AllCharactersExist" significance="preferred"><primary>AllCharactersExist</primary></indexterm>
+    <para>
+If this bit is set, all of the characters in the range given by
+<structfield>CHAR-RANGE</structfield> have glyphs encoded in
+the font.  If this bit is clear, some of the characters
+may not have encoded glyphs.
+    </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry id="Constant:InkInside">
+    <term><constant>InkInside</constant></term>
+    <listitem>
+      <indexterm zone="Constant:InkInside" significance="preferred"><primary>InkInside</primary></indexterm>
+    <para>
+If this bit is set, the inked pixels of each glyph
+fall within the rectangle described by the font's ascent,
+descent, origin, and the glyph's escapement point.  If
+this bit is clear, there may be glyphs whose ink extends
+outside this rectangle.
+    </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry id="Constant:HorizontalOverlap">
+    <term><constant>HorizontalOverlap</constant></term>
+    <listitem>
+      <indexterm zone="Constant:HorizontalOverlap" significance="preferred"><primary>HorizontalOverlap</primary></indexterm>
+    <para>
+If this bit is set, the two ink bounding
+boxes (smallest rectangle enclosing the inked pixels) of
+some pairs of glyphs in the font may overlap when displayed
+side-by-side (i.e. the second character is imaged at the
+escapement point of the first) on a common baseline.  If
+this bit is clear, there are no pairs of glyphs whose ink
+bounding boxes overlap.
+    </para>
+    </listitem>
+  </varlistentry>
+</variablelist>
+</para>
+<para id="Data_Types:XFONTINFO.DRAWING-DIRECTION">
+  <indexterm zone="Data_Types:XFONTINFO.DRAWING-DIRECTION" significance="preferred"><primary>LeftToRight</primary></indexterm>
+  <indexterm zone="Data_Types:XFONTINFO.DRAWING-DIRECTION" significance="preferred"><primary>RightToLeft</primary></indexterm>
+The <structfield>DRAWING-DIRECTION</structfield> field contains a hint
+indicating whether most of the character metrics have a positive (or
+<quote><constant>LeftToRight</constant></quote>) logical width or a
+negative (<quote><constant>RightToLeft</constant></quote>) logical width.  It
+contains the following alternate values:
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><constant>LeftToRight</constant></entry><entry><literal>0</literal></entry></row>
+          <row><entry><constant>RightToLeft</constant></entry><entry><literal>1</literal></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+</para>
+<para>
+The <structfield>CHAR-RANGE.MIN-CHAR</structfield>
+and <structfield>CHAR-RANGE.MAX-CHAR</structfield> fields specify the
+first and last character codes that have glyphs encoded in this font.
+All fonts must have at least one encoded glyph (in which case the
+<structfield>MIN-CHAR</structfield> and <structfield>MAX-CHAR</structfield>
+are equal), but are not required to have glyphs
+encoded at all positions between the first and last characters.
+</para>
+<para>
+The <structfield>DEFAULT-CHAR</structfield> field specifies
+the character code of the glyph
+that the client should substitute for unencoded characters.  Requests
+for extents or bitmaps for an unencoded character generate zero-filled
+metrics and a zero-length glyph bitmap, respectively.
+</para>
+<para>
+The <structfield>MIN-BOUNDS</structfield> and
+<structfield>MAX-BOUNDS</structfield> fields contain the minimum and maximum
+values of each of the extents field of all encoded characters in the
+font (i.e. non-existent characters are ignored).
+</para>
+<para>
+The <structfield>FONT-ASCENT</structfield> and
+<structfield>FONT-DESCENT</structfield> fields specify the font designer's
+logical height of the font, above and below the baseline,
+respectively.  The sum of the two values is often used as the
+vertical line spacing of the font.  Individual glyphs are permitted
+to have ascents and descents that are greater than these values.
+</para>
+<para>
+The <structfield>PROPERTIES</structfield> field contains the
+property data associated with this font.
+</para>
+<para>
+This structure is padded to 32-bit alignment.
+</para>
+</section>
+</section>
+
+<section id='Requests'>
+<title>Requests</title>
+<!-- .XS -->
+<!-- (SN Requests -->
+<!-- .XE -->
+<para>
+This section describes the requests that may be sent by the client and the
+replies or errors that are generated in response.  Versions of the protocol
+with the same major version are required to be upward-compatible.
+</para>
+<para>
+Every request on a given connection is implicitly assigned a sequence number,
+starting with 1, that is used in replies, error, and events.  Servers are
+required to generate replies and errors in the order in which the corresponding
+requests are received.  Servers are permitted to add or remove fonts to the
+list visible to the client between any two requests, but requests must be
+processed atomically.  Each request packet is at least 4 bytes long and
+contains the following fields:
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>major-opcode</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry><parameter>minor-opcode</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry><parameter>length</parameter>:</entry><entry><type>CARD16</type></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+</para>
+<para>
+
+The <parameter>MAJOR-OPCODE</parameter> specifies which core request or
+extension package this packet represents.  If the
+<parameter>MAJOR-OPCODE</parameter> corresponds to a core request, the
+<parameter>MINOR-OPCODE</parameter> contains 8 bits of request-specific data.
+Otherwise, the <parameter>MINOR-OPCODE</parameter> specifies which extension
+request this packet represents.  The <parameter>LENGTH</parameter> field
+specifies the number of 4-byte units contained within the packet
+and must be at least one.  If this field contains a value greater than one it
+is followed by (<parameter>LENGTH</parameter> - 1) * 4 bytes
+of request-specific data.  Unless
+otherwise specified, unused bytes are not required to be zero.
+</para>
+<para>
+If a request packet contains too little or too much data, the server returns
+a <link linkend="Errors:Length"><errorname>Length</errorname></link> error.
+If the server runs out of internal
+resources (such as memory) while processing a request, it returns an
+<link linkend="Errors:Alloc"><errorname>Alloc</errorname></link> error.
+If a server is deficient (and therefore non-compliant) and is unable to
+process a request, it may return an
+<link linkend="Errors:Implementation"><errorname>Implementation</errorname></link> error.
+If a client uses an extension request without previously having issued a
+<link linkend="Requests:QueryExtension"><function>QueryExtension</function></link>
+request for that extension, the server responds with a
+<link linkend="Errors:Request"><errorname>Request</errorname></link>
+error.  If the server encounters a request with an unknown
+<parameter>MAJOR-OPCODE</parameter> or <parameter>MINOR-OPCODE</parameter>,
+it responds with a
+<link linkend="Errors:Request"><errorname>Request</errorname></link>
+error.
+At most one error is generated per request.  If more than one error condition
+is encountered in processing a requests, the choice of which error is returned
+is server-dependent.
+</para>
+<para>
+Core requests have <parameter>MAJOR-OPCODE</parameter> values between 0 and
+127, inclusive.  Extension requests have <parameter>MAJOR-OPCODE</parameter>
+values between 128 and 255, inclusive, that are assigned by by the server.
+All <parameter>MINOR-OPCODE</parameter> values in extension requests are
+between 0 and 255, inclusive.
+</para>
+<para>
+Each reply is at least 8 bytes long and contains the following fields:
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>type</parameter>:</entry><entry><type>CARD8</type></entry><entry>value of 0</entry></row>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry><parameter>sequence-number</parameter>:</entry><entry><type>CARD16</type></entry></row>
+          <row><entry><parameter>length</parameter>:</entry><entry><type>CARD32</type></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+</para>
+<para>
+The <parameter>TYPE</parameter> field has a value of zero.
+The <parameter>DATA-OR-UNUSED</parameter> field may be used to
+encode one byte of reply-specific data (see
+<link linkend="Encoding::Requests">Section 5.2 on request encoding</link>).
+The least-significant 16 bits of the sequence number of the request that
+generated the reply are stored in the <parameter>SEQUENCE-NUMBER</parameter>
+field.  The <parameter>LENGTH</parameter> field specifies the number of
+4-byte units in this reply packet, including the fields described above,
+and must be at least two.  If <parameter>LENGTH</parameter> is greater
+than two, the fields described above are followed by
+(<parameter>LENGTH</parameter> - 2) * 4 bytes of additional data.
+</para>
+<para>
+Requests that have replies are described using the following syntax:
+  <blockquote><para>
+    <emphasis role="bold"><function>RequestName</function></emphasis>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>arg1</parameter>:</entry><entry><type>type1</type></entry></row>
+          <row><entry><parameter>arg2</parameter>:</entry><entry><type>type2</type></entry></row>
+          <row><entry> ...</entry></row>
+          <row><entry><parameter>argN</parameter>:</entry><entry><type>typeN</type></entry></row>
+          <row><entry> ▶</entry></row>
+          <row><entry><parameter>result1</parameter>:</entry><entry><type>type1</type></entry></row>
+          <row><entry><parameter>result2</parameter>:</entry><entry><type>type2</type></entry></row>
+          <row><entry> ...</entry></row>
+          <row rowsep="1"><entry><parameter>resultM</parameter>:</entry><entry><type>typeM</type></entry></row>
+          <row><entry>Errors:</entry><entry><errorname>kind1</errorname>, <errorname>kind2</errorname> ..., <errorname>kindK</errorname></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    Description
+  </para></blockquote>
+</para>
+<para>
+If a request does not generate a reply, the ▶ and result lines are
+omitted.  If a request may generate multiple replies, the ▶ is replaced by
+a ▶+.  In the authorization data exchanges in the initial connection setup
+and the CreateAC request, ◀ indicates data sent by the client in response
+to data sent by the server.
+</para>
+<para>
+The protocol begins with the establishment of a connection over a
+mutually-understood virtual stream:
+</para>
+
+<section id="Requests:open_connection">
+    <title>open connection</title>
+    <indexterm zone="Requests:open_connection" significance="preferred"><primary>open connection</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='2.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>byte-order</parameter>:</entry><entry><link linkend="Data_Types:BYTE"><type>BYTE</type></link></entry></row>
+          <row><entry><parameter>client-major-protocol-version</parameter>:</entry><entry><type>CARD16</type></entry></row>
+          <row><entry><parameter>client-minor-protocol-version</parameter>:</entry><entry><type>CARD16</type></entry></row>
+          <row><entry><parameter>authorization-protocols</parameter>:</entry><entry><link linkend="Data_Types:AUTH"><type>LISTofAUTH</type></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+<para>
+The initial byte of the connection specifies the
+<parameter>BYTE-ORDER</parameter> in
+which subsequent 16-bit and 32-bit numeric values are to be
+transmitted.  The octal value <literal>102</literal>
+(<acronym>ASCII</acronym> uppercase <quote><literal>B</literal></quote>)
+indicates that the most-significant byte is to be transmitted
+first; the octal value <literal>154</literal>
+(<acronym>ASCII</acronym> lowercase <quote><literal>l</literal></quote>)
+indicates that the least-significant byte is to be transmitted first.
+If any other value is encountered the server closes the
+connection without any response.
+</para>
+  <para>
+The <parameter>CLIENT-MAJOR-PROTOCOL-VERSION</parameter> and
+<parameter>CLIENT-MINOR-PROTOCOL-VERSION</parameter> specify
+which version of the
+font service protocol the client would like to use.  If the
+client can support multiple versions, the highest version
+should be given.  This version of the protocol has a
+major version of 2 and a minor version of 0.
+  </para>
+  <para>
+The <parameter>AUTHORIZATION-PROTOCOLS</parameter>
+contains a list of protocol names and
+optional initial data for which the client can provide
+information.  The server may use this to determine which
+protocol to use or as part of the initial exchange of
+authorization data.
+  </para>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='2.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry>▶</entry></row>
+          <row><entry><parameter>status</parameter>:</entry><entry>{ <constant>Success</constant>, <constant>Continue</constant>,
+                                  <constant>Busy</constant>, <constant>Denied</constant> }</entry></row>
+          <row><entry><parameter>server-major-protocol-version</parameter>:</entry><entry><type>CARD16</type></entry></row>
+          <row><entry><parameter>server-minor-protocol-version</parameter>:</entry><entry><type>CARD16</type></entry></row>
+          <row><entry><parameter>alternate-servers-hint</parameter>:</entry><entry><link linkend="Data_Types:ALTERNATESERVER"><type>LISTofALTERNATESERVER</type></link></entry></row>
+          <row><entry><parameter>authorization-index</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry><parameter>authorization-data</parameter>:</entry><entry><link linkend="Data_Types:BYTE"><type>LISTofBYTE</type></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+  <para>
+The <parameter>SERVER-MAJOR-PROTOCOL-VERSION</parameter> and
+<parameter>SERVER-MINOR-PROTOCOL-VERSION</parameter> specify
+the version of the font
+service protocol that the server expects from the client.  If
+the server supports the version specified by the client, this
+version number should be returned.  If the client has
+requested a higher version than is supported by the server,
+the server's highest version should be returned.  Otherwise,
+if the client has requested a lower version than is supported
+by the server, the server's lowest version should be returned.
+It is the client's responsibility to decide whether or not it
+can match this version of the protocol.
+  </para>
+  <para>
+The <parameter>ALTERNATE-SERVERS-HINT</parameter>
+is a list of other font servers
+that may have related sets of fonts (determined by means
+outside this protocol, typically by the system administrator).
+Clients may choose to contact these font servers if the
+connection is rejected or lost.
+  </para>
+  <para>
+The <parameter>STATUS</parameter> field indicates whether the server accepted,
+rejected, or would like more information about the connection.
+It has one of the following alternate values:
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='2.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><constant>Success</constant></entry><entry><literal>0</literal></entry></row>
+          <row><entry><constant>Continue</constant></entry><entry><literal>1</literal></entry></row>
+          <row><entry><constant>Busy</constant></entry><entry><literal>2</literal></entry></row>
+          <row><entry><constant>Denied</constant></entry><entry><literal>3</literal></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+  </para>
+  <para>
+If <parameter>STATUS</parameter> is <constant>Denied</constant>,
+the server has rejected the client's authorization information.
+If <parameter>STATUS</parameter> is <constant>Busy</constant>, the server has
+simply decided that it cannot provide fonts to this client at
+this time (it may be able to at a later time).  In both cases,
+<parameter>AUTHORIZATION-INDEX</parameter> is set to zero,
+no authorization-data is
+returned, and the server closes the connection after sending
+the data described so far.
+  </para>
+  <para>
+Otherwise the <parameter>AUTHORIZATION-INDEX</parameter> is set to the index
+(beginning with 1) into the <parameter>AUTHORIZATION-PROTOCOLS</parameter>
+list of the protocol that the server will use for this connection.  If
+the server does not want to use any of the given protocols,
+this value is set to zero.  The <parameter>AUTHORIZATION-DATA</parameter>
+field is used to send back authorization protocol-dependent data to the
+client (such as a challenge, authentication of the server,
+etc.).
+  </para>
+<para>
+If <parameter>STATUS</parameter> is <constant>Success</constant>,
+the following section of protocol is omitted.  Otherwise, if
+<parameter>STATUS</parameter> is <constant>Continue</constant>,
+the server expects
+more authorization data from the client (i.e. the connection
+setup is not finished, so no requests or events may be sent):
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry>◀</entry></row>
+          <row><entry><parameter>more-authorization-data</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+          <row><entry>▶</entry></row>
+          <row><entry><parameter>status</parameter>:</entry><entry>{ <constant>Success</constant>, <constant>Continue</constant>, <constant>Busy</constant>, <constant>Denied</constant> }</entry></row>
+          <row><entry><parameter>more-authorization-data</parameter>:</entry><entry><link linkend="Data_Types:BYTE"><type>LISTofBYTE</type></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+</para>
+<para>
+The values in <parameter>STATUS</parameter> have the same meanings as described
+above.  This section of protocol is repeated until the server
+either accepts (sets <parameter>STATUS</parameter> to
+<constant>Success</constant>) or rejects (sets <parameter>STATUS</parameter>
+to <constant>Denied</constant> or <constant>Busy</constant>) the connection.
+</para>
+<para>
+Once the connection has been accepted and <parameter>STATUS</parameter>
+is <constant>Success</constant>,
+an implicit AccessContext is created for the authorization
+data and the protocol continues with the following data sent
+from the server:
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry>▶</entry></row>
+          <row><entry><parameter>remaining-length</parameter>:</entry><entry><type>CARD32</type></entry></row>
+          <row><entry><parameter>maximum-request-length</parameter>:</entry><entry><type>CARD16</type></entry></row>
+          <row><entry><parameter>release-number</parameter>:</entry><entry><type>CARD32</type></entry></row>
+          <row><entry><parameter>vendor</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+</para>
+<para>
+The <parameter>REMAINING-LENGTH</parameter> specifies the length in 4-byte
+units of the remaining data to be transmitted to the client.  The
+<parameter>MAXIMUM-REQUEST-LENGTH</parameter> specifies the largest request
+size in 4-byte units that is accepted by the server and must have a
+value of at least 4096.  Requests with a length field larger
+than this value are ignored and a
+<link linkend="Errors:Length"><errorname>Length</errorname></link>
+error is returned.
+The <parameter>VENDOR</parameter> string specifies the name of the
+manufacturer of the font server.  The
+<parameter>RELEASE-NUMBER</parameter> specifies the particular
+release of the server in a manufacturer-dependent manner.
+</para>
+</section>
+<section><title />
+<para>
+After the connection is established and the setup information has been
+exchanged, the client may issue any of requests described below:
+</para>
+</section>
+<section id="Requests:NoOp">
+    <title><function>NoOp</function></title>
+    <indexterm zone="Requests:NoOp" significance="preferred"><primary>NoOp</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request does nothing.  It is typically used in response
+to a
+<link linkend="Events:KeepAlive"><function>KeepAlive</function></link>
+event.
+    </para>
+</section>
+
+<section id="Requests:ListExtensions">
+    <title><function>ListExtensions</function></title>
+    <indexterm zone="Requests:ListExtensions" significance="preferred"><primary>ListExtensions</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry>▶</entry></row>
+          <row rowsep='1'><entry><parameter>names</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>LISTofSTRING8</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+  <para>
+This request returns the names of the extension packages
+that are supported by the server.  Extension names are
+case-sensitive and are encoded in <acronym>ISO</acronym> 8859-1.
+  </para>
+
+</section>
+
+<section id="Requests:QueryExtension">
+    <title><function>QueryExtension</function></title>
+    <indexterm zone="Requests:QueryExtension" significance="preferred"><primary>QueryExtension</primary></indexterm>
+
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>name</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+          <row><entry>▶</entry></row>
+          <row><entry><parameter>present</parameter>:</entry><entry><link linkend="Data_Types:BOOL"><type>BOOL</type></link></entry></row>
+          <row><entry><parameter>major-version</parameter>:</entry><entry><type>CARD16</type></entry></row>
+          <row><entry><parameter>minor-version</parameter>:</entry><entry><type>CARD16</type></entry></row>
+          <row><entry><parameter>major-opcode</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry><parameter>first-event</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry><parameter>number-events</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry><parameter>first-error</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row rowsep='1'><entry><parameter>number-errors</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+  <para>
+This request determines whether or not the extension package specified by
+<parameter>NAME</parameter> (encoded in <acronym>ISO</acronym> 8859-1) is
+supported by the server and that there is sufficient number of major opcode,
+event, and error codes available.  If so, then <parameter>PRESENT</parameter>
+is set to <constant>True</constant>, <parameter>MAJOR-VERSION</parameter>
+and <parameter>MINOR-VERSION</parameter> are set to the
+respective major and minor version numbers of the protocol
+that the server would prefer; <parameter>MAJOR-OPCODE</parameter> is set to
+the value to use in extension requests; <parameter>FIRST-EVENT</parameter>
+is set to the value of the first extension-specific event code or zero if the
+extension does not have any events; <parameter>NUMBER-EVENTS</parameter> is
+set to the number of new events that the event defines;
+<parameter>FIRST-ERROR</parameter>
+is set to the value of the first extension-specific error code
+or zero if the extension does not define any new errors; and
+<parameter>NUMBER-ERRORS</parameter> is set to the number of
+new errors the extension defines.
+  </para>
+  <para>
+Otherwise, <parameter>PRESENT</parameter> is set to
+<constant>False</constant> and the remaining fields are
+set to zero.
+  </para>
+  <para>
+The server is free to return different values to different
+clients.  Therefore, clients must use this request before
+issuing any of the requests in the named extension package or
+using the
+<link linkend="Requests:SetEventMask"><function>SetEventMask</function></link> request to express interest in any of
+this extension's events.  Otherwise, a
+<link linkend="Errors:Request"><errorname>Request</errorname></link>
+error is returned.
+  </para>
+</section>
+
+<section id="Requests:ListCatalogues">
+    <title><function>ListCatalogues</function></title>
+    <indexterm zone="Requests:ListCatalogues" significance="preferred"><primary>ListCatalogues</primary></indexterm>
+
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>pattern</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+          <row><entry><parameter>max-names</parameter>:</entry><entry><type>CARD32</type></entry></row>
+          <row><entry>▶+</entry></row>
+          <row><entry><parameter>replies-following-hint</parameter>:</entry><entry><type>CARD32</type></entry></row>
+          <row rowsep='1'><entry><parameter>names</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>LISTofSTRING8</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request returns a list of at most <parameter>MAX-NAMES</parameter> names
+of collections (called catalogues) of fonts that match
+the specified <parameter>PATTERN</parameter>.  In the pattern (which is encoded
+in <acronym>ISO</acronym> 8859-1), the
+<quote><literal>?</literal></quote> character (octal <literal>77</literal>)
+matches any single character; the
+<quote><literal>*</literal></quote> character (octal <literal>52</literal>)
+matches any series of zero or more characters; and alphabetic
+characters match either upper- or lowercase.  The
+returned <parameter>NAMES</parameter> are encoded in
+<acronym>ISO</acronym> 8859-1 and may contain
+mixed character cases.
+    </para>
+    <para>
+If <parameter>PATTERN</parameter> is of zero length or
+<parameter>MAX-NAMES</parameter> is equal to zero,
+one reply containing a zero-length list of names is returned.
+This may be used to synchronize the client with the server.
+    </para>
+    <para>
+Servers are free to add or remove catalogues to the set returned by
+<function>ListCatalogues</function>
+between any two requests.  This request is not
+cumulative; repeated uses are processed in isolation and do
+result in an iteration through the list.
+    </para>
+    <para>
+To reduce the amount of buffering needed by the server, the
+list of names may be split across several reply packets, so
+long as the names arrive in the same order that they would
+have appeared had they been in a single packet.  The
+<parameter>REPLIES-FOLLOWING-HINT</parameter> field in all but the last reply
+contains a positive value that specifies the number of
+replies that are likely, but not required, to follow.  In the
+last reply, which may contain zero or more names, this field
+is set to zero.
+    </para>
+</section>
+
+<section id="Requests:SetCatalogues">
+    <title><function>SetCatalogues</function></title>
+    <indexterm zone="Requests:SetCatalogues" significance="preferred"><primary>SetCatalogues</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row rowsep='1'><entry><parameter>names</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>LISTofSTRING8</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Alloc"><errorname>Alloc</errorname></link>,
+<link linkend="Errors:Name"><errorname>Name</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request sets the list of catalogues whose fonts should be
+visible to the client.  The union of the fonts provided by
+each of the named catalogues forms the set of fonts whose
+names match patterns in
+<link linkend="Requests:ListFonts"><function>ListFonts</function></link>,
+<link linkend="Requests:ListFontsWithXInfo"><function>ListFontsWithXInfo</function></link>,
+and
+<link linkend="Requests:OpenBitmapFont"><function>OpenBitmapFont</function></link>
+requests.  The catalogue names are
+case-insensitive and are encoded in <acronym>ISO</acronym> 8859-1.  A zero-length
+list resets the client's catalogue list to the
+server-dependent default.
+    </para>
+    <para>
+If any of the catalogue names are invalid, a
+<link linkend="Errors:Name"><errorname>Name</errorname></link>
+error is returned and the request is ignored.
+    </para>
+</section>
+
+<section id="Requests:GetCatalogues">
+    <title><function>GetCatalogues</function></title>
+    <indexterm zone="Requests:GetCatalogues" significance="preferred"><primary>GetCatalogues</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry>▶</entry></row>
+          <row rowsep='1'><entry><parameter>names</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>LISTofSTRING8</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request returns the current list of catalogue names
+(encoded in <acronym>ISO</acronym> 8859-1) associated with the client.  These
+catalogues determine the set of fonts that are visible
+to
+<link linkend="Requests:ListFonts"><function>ListFonts</function></link>,
+<link linkend="Requests:ListFontsWithXInfo"><function>ListFontsWithXInfo</function></link>,
+and
+<link linkend="Requests:OpenBitmapFont"><function>OpenBitmapFont</function></link>.
+A zero-length list indicates the server's default set of
+fonts.  Catalogue names are case-insensitive and may be
+returned in mixed case.
+    </para>
+</section>
+
+<section id="Requests:SetEventMask">
+    <title><function>SetEventMask</function></title>
+    <indexterm zone="Requests:SetEventMask" significance="preferred"><primary>SetEventMask</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>extension-opcode</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row rowsep='1'><entry><parameter>event-mask</parameter>:</entry><entry><link linkend="Data_Types:EVENTMASK"><type>EVENTMASK</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:EventMask"><errorname>EventMask</errorname></link>,
+<link linkend="Errors:Request"><errorname>Request</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request specifies the set of maskable events that the
+extension indicated by <parameter>EXTENSION-OPCODE</parameter>
+(or zero for the core)
+should generate for the client.  Event masks are limited in
+scope to the extension (or core) for which they are defined,
+so expressing interest in events from one or more extensions
+requires multiple uses of this request.
+    </para>
+    <para>
+The default event mask if
+<function>SetEventMask</function>
+has not been called
+is zero, indicating no interest in any maskable events.
+Some events are not maskable and cannot be blocked.
+    </para>
+    <para>
+If <parameter>EXTENSION-OPCODE</parameter> is not a valid extension
+opcode previously returned by
+<link linkend="Requests:QueryExtension"><function>QueryExtension</function></link>
+or zero, a
+<link linkend="Errors:Request"><errorname>Request</errorname></link>
+error is
+returned.  If <parameter>EVENT-MASK</parameter> contains any bits that do not
+correspond to valid events for the specified extension (or
+core), an
+<link linkend="Errors:EventMask"><errorname>EventMask</errorname></link>
+error is returned and the request is
+ignored.
+    </para>
+</section>
+
+<section id="Requests:GetEventMask">
+    <title><function>GetEventMask</function></title>
+    <indexterm zone="Requests:GetEventMask" significance="preferred"><primary>GetEventMask</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>extension-opcode</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry>▶</entry></row>
+          <row rowsep='1'><entry><parameter>event-mask</parameter>:</entry><entry><link linkend="Data_Types:EVENTMASK"><type>EVENTMASK</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Request"><errorname>Request</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request returns the set of maskable core events the
+extension indicated by <parameter>EXTENSION-OPCODE</parameter>
+(or the core if zero)
+should generate for the client.  Non-maskable events are
+always sent to the client.
+    </para>
+    <para>
+If <parameter>EXTENSION-OPCODE</parameter> is not a valid extension opcode
+previously returned by
+<link linkend="Requests:QueryExtension"><function>QueryExtension</function></link>
+or zero, a
+<link linkend="Errors:Request"><errorname>Request</errorname></link>
+error is returned.
+    </para>
+</section>
+
+<section id="Requests:CreateAC">
+    <title><function>CreateAC</function></title>
+    <indexterm zone="Requests:CreateAC" significance="preferred"><primary>CreateAC</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>ac</parameter>:</entry><entry><link linkend="Data_Types:ACCESSCONTEXT"><type>ACCESSCONTEXT</type></link></entry></row>
+          <row><entry><parameter>authorization-protocols</parameter>:</entry><entry><link linkend="Data_Types:AUTH"><type>LISTofAUTH</type></link></entry></row>
+          <row><entry>▶</entry></row>
+          <row><entry><parameter>status</parameter>:</entry><entry>{ <constant>Success</constant>, <constant>Continue</constant>, <constant>Denied</constant> }</entry></row>
+          <row><entry><parameter>authorization-index</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row rowsep='1'><entry><parameter>authorization-data</parameter>:</entry><entry><link linkend="Data_Types:BYTE"><type>LISTofBYTE</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:IDChoice"><errorname>IDChoice</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request creates a new
+<type>AccessContext</type>
+object within the
+server containing the specified authorization data.  When
+this
+<type>AccessContext</type>
+is selected by the client using the
+<link linkend="Requests:SetAuthorization"><function>SetAuthorization</function></link>
+request, the data may be used by the server
+to determine whether or not the client should be granted
+access to particular font information.
+    </para>
+    <para>
+If <parameter>STATUS</parameter> is <constant>Denied</constant>, the server
+rejects the client's authorization information and does not associate
+<parameter>AC</parameter> with any valid <type>AccessContext</type>.
+In this case, <parameter>AUTHORIZATION-INDEX</parameter> is set
+to zero, and zero bytes of <parameter>AUTHORIZATION-DATA</parameter>
+is returned.
+    </para>
+    <para>
+Otherwise, <parameter>AUTHORIZATION-INDEX</parameter> is set to the index
+(beginning with 1) into the <parameter>AUTHORIZATION-PROTOCOLS</parameter>
+list of the protocol
+that the server will use for this connection.  If the server
+does not want to use any of the given protocols, this value is
+set to zero.  The <parameter>AUTHORIZATION-DATA</parameter> field is used
+to send back authorization protocol-dependent data to the client (such
+as a challenge, authentication of the server, etc.).
+    </para>
+    <para>
+If <parameter>STATUS</parameter> is <constant>Continue</constant>,
+the client is expected to continue
+the request by sending the following protocol and receiving
+the indicated response from the server.  This continues
+until <parameter>STATUS</parameter> is set to either
+<constant>Success</constant> or <constant>Denied</constant>.
+    </para>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry>     ◀</entry></row>
+          <row><entry><parameter>     more-authorization-data</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+          <row><entry>     ▶</entry></row>
+          <row><entry><parameter>status</parameter>:</entry><entry>{ <constant>Success</constant>, <constant>Continue</constant>, <constant>Denied</constant> }</entry></row>
+          <row><entry><parameter>    more-authorization-data</parameter>:</entry><entry><link linkend="Data_Types:BYTE"><type>LISTofBYTE</type></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+Once the connection has been accepted and <parameter>STATUS</parameter>
+is <constant>Success</constant>, the request is complete.
+    </para>
+    <para>
+If <parameter>AC</parameter> is not in the range
+[1..2<superscript>29</superscript>-1] or is already associated
+with an access context, an <link linkend="Errors:IDChoice"><errorname>IDChoice</errorname></link> error is returned.
+    </para>
+</section>
+
+<section id="Requests:FreeAC">
+    <title><function>FreeAC</function></title>
+    <indexterm zone="Requests:FreeAC" significance="preferred"><primary>FreeAC</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>ac</parameter>:</entry><entry><link linkend="Data_Types:ACCESSCONTEXT"><type>ACCESSCONTEXT</type></link></entry></row>
+          <row rowsep='1'><entry>Errors:</entry><entry><link linkend="Errors:AccessContext"><errorname>AccessContext</errorname></link>,
+<link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request indicates that the specified <parameter>AC</parameter> should
+no longer be associated with a valid access context.
+If <parameter>AC</parameter> is also the current
+<type>AccessContext</type>
+(as set by the
+<link linkend="Requests:SetAuthorization"><function>SetAuthorization</function></link>
+request), an implicit
+<link linkend="Requests:SetAuthorization"><function>SetAuthorization</function></link>
+of <constant>None</constant> is done to
+restore the
+<type>AccessContext</type>
+established for the initial
+connection setup.  Operations on fonts that were opened under
+<parameter>AC</parameter> are not affected.  The client may reuse the
+value of <parameter>AC</parameter> in a subsequent
+<link linkend="Requests:CreateAC"><function>CreateAC</function></link>
+request.
+    </para>
+    <para>
+If <parameter>AC</parameter> isn't associated with any valid authorization
+previously created by
+<link linkend="Requests:CreateAC"><function>CreateAC</function></link>, an
+<link linkend="Errors:AccessContext"><errorname>AccessContext</errorname></link>
+error is returned.
+    </para>
+</section>
+
+<section id="Requests:SetAuthorization">
+    <title><function>SetAuthorization</function></title>
+    <indexterm zone="Requests:SetAuthorization" significance="preferred"><primary>SetAuthorization</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>ac</parameter>:</entry><entry><link linkend="Data_Types:ACCESSCONTEXT"><type>ACCESSCONTEXT</type></link></entry></row>
+          <row rowsep='1'><entry>Errors:</entry><entry><link linkend="Errors:AccessContext"><errorname>AccessContext</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request sets the
+<type>AccessContext</type>
+to be used for subsequent
+requests (except for
+<link linkend="Requests:QueryXInfo"><function>QueryXInfo</function></link>,
+<link linkend="Requests:QueryXExtents8"><function>QueryXExtents8</function></link>,
+<link linkend="Requests:QueryXExtents16"><function>QueryXExtents16</function></link>,
+<link linkend="Requests:QueryXBitmaps8"><function>QueryXBitmaps8</function></link>,
+<link linkend="Requests:QueryXBitmaps16"><function>QueryXBitmaps16</function></link>
+and
+<link linkend="Requests:CloseFont"><function>CloseFont</function></link>
+which are done under the
+<type>AccessContext</type>
+of the
+corresponding
+<link linkend="Requests:OpenBitmapFont"><function>OpenBitmapFont</function></link>
+).
+An <parameter>AC</parameter> of <constant>None</constant> restores the
+<type>AccessContext</type>
+established for the initial connection setup.
+    </para>
+    <para>
+If <parameter>AC</parameter> is neither <constant>None</constant>
+nor a value associated with a valid <type>AccessContext</type>
+previously created by
+<link linkend="Requests:CreateAC"><function>CreateAC</function></link>,
+an
+<link linkend="Errors:AccessContext"><errorname>AccessContext</errorname></link>
+error is returned.
+    </para>
+</section>
+
+<section id="Requests:SetResolution">
+    <title><function>SetResolution</function></title>
+    <indexterm zone="Requests:SetResolution" significance="preferred"><primary>SetResolution</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row rowsep='1'><entry><parameter>resolutions</parameter>:</entry><entry><link linkend="Data_Types:RESOLUTION"><type>LISTofRESOLUTION</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Resolution"><errorname>Resolution</errorname></link>,
+<link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request provides a hint as to the resolution and
+preferred point size of the drawing surfaces for which the
+client will be requesting fonts.  The server may use this
+information to set the RESOLUTION_X and RESOLUTION_Y fields
+of scalable <acronym>XLFD</acronym> font names, to order sets of names based on
+their resolutions, and to choose the server-dependent
+instance that is used when a partially-specified scalable
+fontname is opened.
+    </para>
+    <para>
+If a zero-length list of <link linkend="Data_Types:RESOLUTION"><type>RESOLUTION</type></link>s is given, the
+server-dependent default value is restored.  Otherwise, if
+elements of all of the specified <link linkend="Data_Types:RESOLUTION"><type>RESOLUTION</type></link>s are non-zero, the
+default resolutions for this client are changed.
+    </para>
+    <para>
+If a <link linkend="Data_Types:RESOLUTION"><type>RESOLUTION</type></link> entry contains a zero,
+a <link linkend="Errors:Resolution"><errorname>Resolution</errorname></link> error is
+returned and the default resolutions are not changed.
+    </para>
+</section>
+
+<section id="Requests:GetResolution">
+    <title><function>GetResolution</function></title>
+    <indexterm zone="Requests:GetResolution" significance="preferred"><primary>GetResolution</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry>▶</entry></row>
+          <row rowsep='1'><entry><parameter>resolutions</parameter>:</entry><entry><link linkend="Data_Types:RESOLUTION"><type>LISTofRESOLUTION</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request returns the current list of default resolutions.
+If a client has not performed a
+<link linkend="Requests:SetResolution"><function>SetResolution</function></link>,
+a server-dependent default value is returned.
+    </para>
+</section>
+
+<section id="Requests:ListFonts">
+    <title><function>ListFonts</function></title>
+    <indexterm zone="Requests:ListFonts" significance="preferred"><primary>ListFonts</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>pattern</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+          <row><entry><parameter>max-names</parameter>:</entry><entry><type>CARD32</type></entry></row>
+          <row><entry>▶+</entry></row>
+          <row><entry><parameter>replies-following-hint</parameter>:</entry><entry><type>CARD32</type></entry></row>
+          <row rowsep='1'><entry><parameter>names</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>LISTofSTRING8</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request returns a list of at most <parameter>MAX-NAMES</parameter>
+font names that match the specified <parameter>PATTERN</parameter>,
+according to matching rules
+of the <citetitle>X Logical Font Description Conventions</citetitle>
+<xref linkend="References:xlfd-spec"/>.
+In the pattern (which is encoded in <acronym>ISO</acronym> 8859-1) the
+<quote><literal>?</literal></quote> character (octal <literal>77</literal>)
+matches any single character; the
+<quote><literal>*</literal></quote> character (octal <literal>52</literal>)
+matches any series of zero or more characters; and
+alphabetic characters match either upper- or lowercase.  The
+returned <parameter>NAMES</parameter> are encoded in
+<acronym>ISO</acronym> 8859-1 and may contain mixed
+character cases.  Font names are not required to be in <acronym>XLFD</acronym>
+format.
+    </para>
+    <para>
+If <parameter>PATTERN</parameter> is of zero length or
+<parameter>MAX-NAMES</parameter> is equal to zero,
+one reply containing a zero-length list of names is returned.
+This may be used to synchronize the client with the server.
+    </para>
+    <para>
+Servers are free to add or remove fonts to the set returned by
+<function>ListFonts</function>
+between any two requests.  This request is not
+cumulative; repeated uses are processed in isolation and do
+result in an iteration through the list.
+    </para>
+    <para>
+To reduce the amount of buffering needed by the server, the
+list of names may be split across several reply packets, so
+long as the names arrive in the same order that they would
+have appeared had they been in a single packet.  The
+<parameter>REPLIES-FOLLOWING-HINT</parameter> field in all but the last reply
+contains a positive value that specifies the number of
+replies that are likely, but not required, to follow.  In the
+last reply, which may contain zero or more names, this field
+is set to zero.
+    </para>
+</section>
+
+<section id="Requests:ListFontsWithXInfo">
+    <title><function>ListFontsWithXInfo</function></title>
+    <indexterm zone="Requests:ListFontsWithXInfo" significance="preferred"><primary>ListFontsWithXInfo</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>pattern</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+          <row><entry><parameter>pattern</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+          <row><entry><parameter>pattern</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+          <row><entry><parameter>max-names</parameter>:</entry><entry><type>CARD32</type></entry></row>
+          <row><entry>▶+</entry></row>
+          <row><entry><parameter>replies-following-hint</parameter>:</entry><entry><type>CARD32</type></entry></row>
+          <row><entry><parameter>info</parameter>:</entry><entry><link linkend="Data_Types:XFONTINFO"><type>XFONTINFO</type></link></entry></row>
+          <row rowsep='1'><entry><parameter>name</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request is similar to
+<link linkend="Requests:ListFonts"><function>ListFonts</function></link>
+except that a separate
+reply containing the name, header, and property data is
+generated for each matching font name.  Following these
+replies, if any, a final reply containing a zero-length
+<parameter>NAME</parameter> and no <parameter>INFO</parameter> is sent.
+    </para>
+    <para>
+The <parameter>REPLIES-FOLLOWING-HINT</parameter> field in all but the
+last reply contains a positive value that specifies the number of replies
+that are likely, but not required, to follow.  In the last
+reply, this field is set to zero.
+    </para>
+    <para>
+If <parameter>PATTERN</parameter> is of zero length or if
+<parameter>MAX-NAMES</parameter> is equal to zero, only the final reply
+containing a zero-length <parameter>NAME</parameter> and no
+<parameter>INFO</parameter> is returned. This may be used to synchronize the
+client with the server.
+    </para>
+</section>
+
+<section id="Requests:OpenBitmapFont">
+    <title><function>OpenBitmapFont</function></title>
+    <indexterm zone="Requests:OpenBitmapFont" significance="preferred"><primary>OpenBitmapFont</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>fontid</parameter>:</entry><entry><link linkend="Data_Types:FONTID"><type>FONTID</type></link></entry></row>
+          <row><entry><parameter>pattern</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+          <row><entry><parameter>format-mask</parameter>:</entry><entry><link linkend="Data_Types:BITMAPFORMATMASK"><type>BITMAPFORMATMASK</type></link></entry></row>
+          <row><entry><parameter>format-hint</parameter>:</entry><entry><link linkend="Data_Types:BITMAPFORMAT"><type>BITMAPFORMAT</type></link></entry></row>
+          <row><entry>▶</entry></row>
+          <row><entry><parameter>otherid</parameter>:</entry><entry><link linkend="Data_Types:FONTID"><type>FONTID</type></link> or <constant>None</constant></entry></row>
+          <row><entry><parameter>otherid-valid</parameter>:</entry><entry><link linkend="Data_Types:BOOL"><type>BOOL</type></link></entry></row>
+          <row rowsep='1'><entry><parameter>cachable</parameter>:</entry><entry><link linkend="Data_Types:BOOL"><type>BOOL</type></link></entry></row>
+          <row><entry>Errors:</entry><entry>
+<link linkend="Errors:IDChoice"><errorname>IDChoice</errorname></link>,
+<link linkend="Errors:Name"><errorname>Name</errorname></link>,
+<link linkend="Errors:Format"><errorname>Format</errorname></link>,
+<link linkend="Errors:AccessContext"><errorname>AccessContext</errorname></link>,
+<link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request looks for a server-dependent choice of the
+font names that match the specified <parameter>PATTERN</parameter>
+according to the rules described for
+<link linkend="Requests:ListFonts"><function>ListFonts</function></link>.
+If no matches are found, a
+<link linkend="Errors:Name"><errorname>Name</errorname></link>
+error is returned.  Otherwise, the server attempts to
+open the font associated with the chosen name.
+    </para>
+    <para>
+Permission to access the font is determined by the server
+according the licensing policy used for this font.  The server
+may use the client's current
+<type>AccessContext</type>
+(as set by the most
+recent
+<link linkend="Requests:SetAuthorization"><function>SetAuthorization</function></link>
+request or the original connection
+setup) to determine any client-specific sets of permissions.
+After the font has been opened, the client is allowed to
+specify a new
+<type>AccessContext</type>
+with
+<link linkend="Requests:SetAuthorization"><function>SetAuthorization</function></link>
+or release
+the
+<type>AccessContext</type>
+using
+<link linkend="Requests:FreeAC"><function>FreeAC</function></link>
+.  Subsequent
+<link linkend="Requests:QueryXInfo"><function>QueryXInfo</function></link>,
+<link linkend="Requests:QueryXExtents8"><function>QueryXExtents8</function></link>,
+<link linkend="Requests:QueryXExtents16"><function>QueryXExtents16</function></link>,
+<link linkend="Requests:QueryXBitmaps8"><function>QueryXBitmaps8</function></link>,
+<link linkend="Requests:QueryXBitmaps16"><function>QueryXBitmaps16</function></link>
+and
+<link linkend="Requests:CloseFont"><function>CloseFont</function></link>
+requests on this <link linkend="Data_Types:FONTID"><type>FONTID</type></link> are
+performed according to permissions granted at the time of the
+<function>OpenBitmapFont</function>
+request.
+    </para>
+    <para>
+If the server is willing and able to detect that the client
+has already opened the font successfully (possibly under a
+different name), the <parameter>OTHERID</parameter> field
+may be set to one of the
+identifiers previously used to open the font.  The
+<parameter>OTHERID-VALID</parameter> field indicates whether or not
+<parameter>OTHERID</parameter> is still associated with an open font:
+if it is <constant>True</constant>, the client may use
+<parameter>OTHERID</parameter> as an alternative to
+<parameter>FONTID</parameter>. Otherwise, if
+<parameter>OTHERID-VALID</parameter> is <constant>False</constant>,
+<parameter>OTHERID</parameter> is no longer
+open but has not been reused by a subsequent
+<function>OpenBitmapFont</function>
+request.
+    </para>
+    <para>
+If <parameter>OTHERID</parameter> is set to <constant>None</constant>,
+then <parameter>OTHERID-VALID</parameter> should be set
+to <constant>False</constant>.
+    </para>
+    <para>
+The <parameter>FORMAT-MASK</parameter> indicates which fields in
+<parameter>FORMAT-HINT</parameter>
+the client is likely to use in subsequent
+<function>GetXBitmaps8</function>
+and
+<function>GetXBitmaps16</function>
+requests.  Servers may wish to use
+this information to precompute certain values.
+    </para>
+    <para>
+If <parameter>CACHABLE</parameter> is set to <constant>True</constant>,
+the client may cache the font
+(so that redundant opens of the same font may be avoided)
+and use it with all
+<type>AccessContext</type>s
+during the life of the
+client without violating the font's licensing policy.  This
+flag is typically set whenever a font is unlicensed or is
+licensed on a per-display basis.  If <parameter>CACHABLE</parameter>
+is <constant>False</constant>, the
+client should reopen the font for each
+<type>AccessContext</type>.
+    </para>
+    <para>
+The server is permitted to add to or remove from the set of
+fonts returned by
+<link linkend="Requests:ListFonts"><function>ListFonts</function></link>
+between any two requests, though
+mechanisms outside the protocol.  Therefore, it is possible
+for this request (which is atomic) to return a different font
+than would result from separate a
+<link linkend="Requests:ListFonts"><function>ListFonts</function></link>
+followed by an
+<function>OpenBitmapFont</function>
+with a non-wildcarded font name.
+    </para>
+    <para>
+If <parameter>FONTID</parameter> is not in the range
+[1..2<superscript>29</superscript>-1] or if it is already
+associated with an open font, an
+<link linkend="Errors:IDChoice"><errorname>IDChoice</errorname></link>
+error is returned.
+If no font is available that matches the specified
+<parameter>PATTERN</parameter>, a
+<link linkend="Errors:Name"><errorname>Name</errorname></link>
+error is returned.  If the font is present but the client
+is not permitted access, an
+<link linkend="Errors:AccessContext"><errorname>AccessContext</errorname></link>
+error is returned.
+If <parameter>FORMAT-MASK</parameter> has any unspecified bits set or if any
+of the fields in <parameter>FORMAT-HINT</parameter> indicated by
+<parameter>FORMAT-MASK</parameter> are invalid, a
+<link linkend="Errors:Format"><errorname>Format</errorname></link>
+error is returned.
+    </para>
+</section>
+
+<section id="Requests:QueryXInfo">
+    <title><function>QueryXInfo</function></title>
+    <indexterm zone="Requests:QueryXInfo" significance="preferred"><primary>QueryXInfo</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>fontid</parameter>:</entry><entry><link linkend="Data_Types:FONTID"><type>FONTID</type></link></entry></row>
+          <row><entry>▶</entry></row>
+          <row rowsep='1'><entry><parameter>info</parameter>:</entry><entry><link linkend="Data_Types:XFONTINFO"><type>XFONTINFO</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Font"><errorname>Font</errorname></link>,
+<link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request returns the font header and property information
+for the open font associated with <parameter>FONTID</parameter>.
+    </para>
+    <para>
+If <parameter>FONTID</parameter> is not associated with any open fonts, a
+<link linkend="Errors:Font"><errorname>Font</errorname></link>
+error
+is returned.
+    </para>
+</section>
+
+<section id="Requests:QueryXExtents8">
+    <title><function>QueryXExtents8</function></title>
+    <indexterm zone="Requests:QueryXExtents8" significance="preferred"><primary>QueryXExtents8</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>fontid</parameter>:</entry><entry><link linkend="Data_Types:FONTID"><type>FONTID</type></link></entry></row>
+          <row><entry><parameter>range</parameter>:</entry><entry><link linkend="Data_Types:BOOL"><type>BOOL</type></link></entry></row>
+          <row><entry><parameter>chars</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+          <row><entry>▶</entry></row>
+          <row rowsep='1'><entry><parameter>extents</parameter>:</entry><entry><link linkend="Data_Types:XCHARINFO"><type>LISTofXCHARINFO</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Font"><errorname>Font</errorname></link>,
+<link linkend="Errors:Range"><errorname>Range</errorname></link>,
+<link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request is equivalent to
+<link linkend="Requests:QueryXExtents16"><function>QueryXExtents16</function></link>
+except that it
+uses 1-byte character codes.
+    </para>
+</section>
+
+<section id="Requests:QueryXExtents16">
+    <title><function>QueryXExtents16</function></title>
+    <indexterm zone="Requests:QueryXExtents16" significance="preferred"><primary>QueryXExtents16</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>fontid</parameter>:</entry><entry><link linkend="Data_Types:FONTID"><type>FONTID</type></link></entry></row>
+          <row><entry><parameter>range</parameter>:</entry><entry><link linkend="Data_Types:BOOL"><type>BOOL</type></link></entry></row>
+          <row><entry><parameter>chars</parameter>:</entry><entry><link linkend="Data_Types:CHAR2B"><type>LISTofCHAR2B</type></link></entry></row>
+          <row><entry>▶</entry></row>
+          <row rowsep='1'><entry><parameter>extents</parameter>:</entry><entry><link linkend="Data_Types:XCHARINFO"><type>LISTofXCHARINFO</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Font"><errorname>Font</errorname></link>,
+<link linkend="Errors:Range"><errorname>Range</errorname></link>,
+<link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request returns a list of glyph extents from the open
+font associated with FONTID for the series of characters
+specified by <parameter>RANGE</parameter> and <parameter>CHARS</parameter>.
+    </para>
+    <para>
+If <parameter>RANGE</parameter> is <constant>True</constant>,
+each succeeding pair of elements in <parameter>CHARS</parameter> is
+treated as a range of characters for which extents should be
+returned.  If <parameter>CHARS</parameter> contains an odd number of elements,
+the font's <structfield>XFONTINFO.CHAR-RANGE.MAX-CHAR</structfield>
+is implicitly appended to
+the list.  If <parameter>CHARS</parameter> contains no elements, the list is
+implicitly replaced with the font's
+<structfield>XFONTINFO.CHAR-RANGE.</structfield>  If
+any of the resulting character ranges are invalid, a
+<link linkend="Errors:Range"><errorname>Range</errorname></link>
+error is returned.  Otherwise, the character ranges are
+concatenated in the order given by <parameter>CHARS</parameter> to produce
+a set of character codes for which extents are returned.
+    </para>
+    <para>
+If <parameter>RANGE</parameter> is <constant>False</constant>,
+then <parameter>CHARS</parameter> specifies the set of character
+codes for which extents are returned.  If <parameter>CHARS</parameter> is of
+zero length, then a zero-length list of extents is returned.
+    </para>
+    <para>
+The extents for each character code in the resulting set (which
+may contain duplicates) are returned in the order in
+which the character codes appear in the set.
+At least one metric for each character shall be non-zero
+unless the character is not encoded in the font, in which case
+all-zero metrics are returned.
+A blank, zero-width character can be encoded
+with non-zero but equal left and right bearings.
+    </para>
+    <para>
+If <parameter>FONTID</parameter> is not associated with any open fonts, a
+<link linkend="Errors:Font"><errorname>Font</errorname></link>
+error is
+returned.  If <parameter>RANGE</parameter> is <constant>True</constant>
+and <parameter>CHARS</parameter> contains any invalid ranges, a
+<link linkend="Errors:Range"><errorname>Range</errorname></link>
+error is returned.
+    </para>
+</section>
+
+<section id="Requests:QueryXBitmaps8">
+    <title><function>QueryXBitmaps8</function></title>
+    <indexterm zone="Requests:QueryXBitmaps8" significance="preferred"><primary>QueryXBitmaps8</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>fontid</parameter>:</entry><entry><link linkend="Data_Types:FONTID"><type>FONTID</type></link></entry></row>
+          <row><entry><parameter>range</parameter>:</entry><entry><link linkend="Data_Types:BOOL"><type>BOOL</type></link></entry></row>
+          <row><entry><parameter>chars</parameter>:</entry><entry><link linkend="Data_Types:STRING8"><type>STRING8</type></link></entry></row>
+          <row><entry><parameter>format</parameter>:</entry><entry><link linkend="Data_Types:BITMAPFORMAT"><type>BITMAPFORMAT</type></link></entry></row>
+          <row><entry>▶+</entry></row>
+          <row><entry><parameter>replies-following-hint</parameter>:</entry><entry><type>CARD32</type></entry></row>
+          <row><entry><parameter>offsets</parameter>:</entry><entry><link linkend="Data_Types:OFFSET32"><type>LISTofOFFSET32</type></link></entry></row>
+          <row><entry><parameter>bitmaps</parameter>:</entry><entry><link linkend="Data_Types:BYTE"><type>LISTofBYTE</type></link></entry></row>
+          <row rowsep='1'><entry>Errors:</entry><entry><link linkend="Errors:Font"><errorname>Font</errorname></link>,
+<link linkend="Errors:Range"><errorname>Range</errorname></link>,
+<link linkend="Errors:Format"><errorname>Format</errorname></link>,
+<link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request is equivalent to
+<link linkend="Requests:QueryXBitmaps16"><function>QueryXBitmaps16</function></link>
+except that it
+uses 1-byte character codes.
+    </para>
+</section>
+
+<section id="Requests:QueryXBitmaps16">
+    <title><function>QueryXBitmaps16</function></title>
+    <indexterm zone="Requests:QueryXBitmaps16" significance="preferred"><primary>QueryXBitmaps16</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>fontid</parameter>:</entry><entry><link linkend="Data_Types:FONTID"><type>FONTID</type></link></entry></row>
+          <row><entry><parameter>range</parameter>:</entry><entry><link linkend="Data_Types:BOOL"><type>BOOL</type></link></entry></row>
+          <row><entry><parameter>chars</parameter>:</entry><entry><link linkend="Data_Types:CHAR2B"><type>LISTofCHAR2B</type></link></entry></row>
+          <row><entry><parameter>format</parameter>:</entry><entry><link linkend="Data_Types:BITMAPFORMAT"><type>BITMAPFORMAT</type></link></entry></row>
+          <row><entry>▶+</entry></row>
+          <row><entry><parameter>replies-following-hint</parameter>:</entry><entry><type>CARD32</type></entry></row>
+          <row><entry><parameter>offsets</parameter>:</entry><entry><link linkend="Data_Types:OFFSET32"><type>LISTofOFFSET32</type></link></entry></row>
+          <row rowsep='1'><entry><parameter>bitmaps</parameter>:</entry><entry><link linkend="Data_Types:BYTE"><type>LISTofBYTE</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Font"><errorname>Font</errorname></link>,
+          <link linkend="Errors:Range"><errorname>Range</errorname></link>,
+          <link linkend="Errors:Format"><errorname>Format</errorname></link>,
+          <link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request returns a list of glyph bitmaps from the open font associated
+with <parameter>FONTID</parameter> for the series of characters
+specified by <parameter>RANGE</parameter> and <parameter>CHARS</parameter>.
+    </para>
+    <para>
+If <parameter>RANGE</parameter> is <constant>True</constant>, each succeeding
+pair of elements in <parameter>CHARS</parameter> is
+treated as a range of characters for which bitmaps should be
+returned.  If <parameter>CHARS</parameter> contains an odd number of elements,
+the font's <structfield>XFONTINFO.CHAR-RANGE.MAX-CHAR</structfield>
+is implicitly appended to
+the list.  If <parameter>CHARS</parameter> contains no elements, the list is
+implicitly replaced with the font's
+<structfield>XFONTINFO.CHAR-RANGE.</structfield>  If
+any of the resulting character ranges are invalid, a <link linkend="Errors:Range"><errorname>Range</errorname></link>
+error is returned.  Otherwise, the character ranges are
+concatenated in the order given by <parameter>CHARS</parameter> to produce
+a set of character codes for which bitmaps are returned.
+    </para>
+    <para>
+If <parameter>RANGE</parameter> is <constant>False</constant>,
+then <parameter>CHARS</parameter> specifies the set of character
+codes for which bitmaps are returned.  If <parameter>CHARS</parameter>
+is of zero length, then a single reply containing a zero-length list of
+offsets and bitmaps is returned.
+    </para>
+    <para>
+If any of the resulting character ranges are invalid, a
+<link linkend="Errors:Range"><errorname>Range</errorname></link>
+error is returned.  Otherwise, the resulting character ranges
+are concatenated in the order given by <parameter>CHARS</parameter>
+to produce a set of character codes for which bitmaps are returned.
+    </para>
+    <para>
+The server is free to return the glyph bitmaps in multiple
+replies to reduce the amount of buffering that is necessary.
+In this situation, the set of characters obtained above is
+partitioned into an implementation-dependent number of
+ordered, non-overlapping subsets containing runs of one or
+more consecutive characters.  The global ordering of
+characters must be maintained such that concatenating the
+subsets in order that they were produced yields the original
+set.  A reply is generated for each subset, in the order that
+it was produced.
+    </para>
+    <para>
+For each character in a subset, an image of that character's
+glyph is described by a rectangle of bits corresponding to the
+pixels specified by FORMAT.IMAGE-RECT.  Within the image, set
+and clear bits represent inked and non-inked pixels,
+respectively.
+    </para>
+    <para>
+Each scanline of a glyph image, from top to bottom, is zero-padded
+on the right to a multiple of the number of bits specified by
+FORMAT.SCANLINE-PAD.  The scanline is then divided from left
+to right into a sequence of FORMAT.SCANLINE-UNIT bits.  The
+bits of each unit are then arranged such that the left-most
+pixel is stored in the most- or least-significant bit,
+according to FORMAT.BIT-ORDER-MSB.  The bytes of each unit are
+then arranged such that the most- or least-significant byte,
+according to FORMAT.BYTE-ORDER-MSB, is transmitted first.
+Finally, the units are arranged such that the left-most is
+transmitted first and the right-most is transmitted last.
+    </para>
+    <para>
+The individual images within a subset are then concatenated in
+a server-dependent order to form the <parameter>BITMAPS</parameter> data
+of the reply.  If a glyph image is duplicated within a reply, the
+server is free to return fewer (but at least one) copies of
+the image.  If a character is not encoded within the font, a
+zero-length bitmap is substituted for this character.  Each
+glyph image must begin at a bit position that is a multiple of
+the FORMAT.SCANLINE-UNIT.
+    </para>
+    <para>
+The <parameter>OFFSETS</parameter> array in a reply contains one entry
+for each character in the subset being returned, in the order that the
+characters appear in the subset.  Each entry specifies the
+starting location in bytes and size in bytes of the
+corresponding glyph image in the <parameter>BITMAPS</parameter> data of that
+reply (i.e. an offset may not refer to data in another reply).
+    </para>
+    <para>
+The <parameter>REPLIES-FOLLOWING-HINT</parameter> field in all but the
+last reply contains a positive value that specifies the number of replies
+that are likely, but not required, to follow.  In the last
+reply, which may contain data for zero or more characters,
+this field is set to zero.
+    </para>
+    <para>
+If <parameter>FONTID</parameter> is not associated with any open fonts,
+a <link linkend="Errors:Font"><errorname>Font</errorname></link>
+error is returned.  If <parameter>RANGE</parameter> is
+<constant>True</constant> and <parameter>CHARS</parameter> contains any
+invalid ranges, a
+<link linkend="Errors:Range"><errorname>Range</errorname></link> error
+is returned.  If <parameter>FORMAT</parameter> is invalid, a
+<link linkend="Errors:Format"><errorname>Format</errorname></link> error
+is returned.
+    </para>
+</section>
+
+<section id="Requests:CloseFont">
+    <title><function>CloseFont</function></title>
+    <indexterm zone="Requests:CloseFont" significance="preferred"><primary>CloseFont</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row rowsep='1'><entry><parameter>fontid</parameter>:</entry><entry><link linkend="Data_Types:FONTID"><type>FONTID</type></link></entry></row>
+          <row><entry>Errors:</entry><entry><link linkend="Errors:Font"><errorname>Font</errorname></link>, <link linkend="Errors:Alloc"><errorname>Alloc</errorname></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This request indicates that the specified <parameter>FONTID</parameter>
+should no longer be associated with an open font.  The server is free to
+release any client-specific storage or licenses allocated for
+the font.  The client may reuse the value of <parameter>FONTID</parameter>
+in a subsequent
+<link linkend="Requests:OpenBitmapFont"><function>OpenBitmapFont</function></link>
+request.
+    </para>
+    <para>
+If <parameter>FONTID</parameter> is not associated with any open fonts, a
+<link linkend="Errors:Font"><errorname>Font</errorname></link>
+error is returned.
+    </para>
+</section>
+
+<section id="Requests:close_connection">
+    <title>close connection</title>
+    <indexterm zone="Requests:close_connection" significance="preferred"><primary>close connection</primary></indexterm>
+
+    <para>
+When a connection is closed, a
+<link linkend="Requests:CloseFont"><function>CloseFont</function></link>
+is done on all fonts
+that are open on the connection.  In addition, the server is
+free to release any storage or licenses allocated on behalf of
+the client that made the connection.
+    </para>
+</section>
+</section>
+
+<section id='Errors'>
+<title>Errors</title>
+<!-- .XS -->
+<!-- (SN Errors -->
+<!-- .XE -->
+<para>
+All errors are at least 16 bytes long and contain the following fields:
+</para>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>type</parameter>:</entry><entry><type>CARD8</type></entry><entry>value of 1</entry></row>
+          <row><entry><parameter>error-code</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry><parameter>sequence-number</parameter>:</entry><entry><type>CARD16</type></entry></row>
+          <row><entry><parameter>length</parameter>:</entry><entry><type>CARD32</type></entry></row>
+          <row><entry><parameter>timestamp</parameter>:</entry><entry><link linkend="Data_Types:TIMESTAMP"><type>TIMESTAMP</type></link></entry></row>
+          <row><entry><parameter>major-opcode</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry><parameter>minor-opcode</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+<para>
+The TYPE field has a value of one.  The ERROR-CODE field specifies which error
+occurred.  Core errors codes are in the range 0 through 127, extension error
+codes are in the range 128 through 255.  The SEQUENCE-NUMBER field contains the
+least significant 16 bits of the sequence number of the request that caused the
+error.  The LENGTH field specifies the length of the error packet in 4-byte
+units and must have a value of at least 4.  The TIMESTAMP specifies the server
+time when the error occurred.  The MAJOR-OPCODE and MINOR-OPCODE (zero for core
+requests) fields specify the type of request that generated the error.  The
+DATA-OR-UNUSED field may be used for 16 bits of error-specific information.  If
+LENGTH is greater than four, these fields are followed by (LENGTH - 4) * 4
+bytes of extra data.
+</para>
+<para>
+The following errors are defined for the core protocol:
+</para>
+
+<section id="Errors:Request">
+    <title><errorname>Request</errorname></title>
+    <indexterm zone="Errors:Request" significance="preferred"><primary>Error Codes</primary><secondary><errorname>Request</errorname></secondary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry><entry>unused</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This error is generated by any request that has an unknown
+combination of major and minor request numbers, or by any
+extension request that is issued before a
+<link linkend="Requests:QueryExtension"><function>QueryExtension</function></link>
+of that extension.
+    </para>
+</section>
+
+<section id="Errors:Format">
+    <title><errorname>Format</errorname></title>
+    <indexterm zone="Errors:Format" significance="preferred"><primary>Error Codes</primary><secondary><errorname>Format</errorname></secondary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry><entry>unused</entry></row>
+          <row><entry><parameter>format</parameter>:</entry><entry><link linkend="Data_Types:BITMAPFORMAT"><type>BITMAPFORMAT</type></link></entry><entry>bad format value</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This error is generated by the use of an invalid <link linkend="Data_Types:BITMAPFORMAT"><type>BITMAPFORMAT</type></link>
+in the
+<link linkend="Requests:OpenBitmapFont"><function>OpenBitmapFont</function></link>,
+<link linkend="Requests:QueryXBitmaps8"><function>QueryXBitmaps8</function></link>, and
+<link linkend="Requests:QueryXBitmaps16"><function>QueryXBitmaps16</function></link>
+requests.
+The value that caused the error is included as extra data.
+    </para>
+</section>
+
+<section id="Errors:Font">
+    <title><errorname>Font</errorname></title>
+    <indexterm zone="Errors:Font" significance="preferred"><primary>Error Codes</primary><secondary><errorname>Font</errorname></secondary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry><entry>unused</entry></row>
+          <row><entry><parameter>fontid</parameter>:</entry><entry><link linkend="Data_Types:FONTID"><type>FONTID</type></link></entry><entry>bad font identifier</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This error is generated by an invalid <link linkend="Data_Types:FONTID"><type>FONTID</type></link> in the
+<link linkend="Requests:QueryXInfo"><function>QueryXInfo</function></link>,
+<link linkend="Requests:QueryXExtents8"><function>QueryXExtents8</function></link>,
+<link linkend="Requests:QueryXExtents16"><function>QueryXExtents16</function></link>,
+<link linkend="Requests:QueryXBitmaps8"><function>QueryXBitmaps8</function></link>,
+<link linkend="Requests:QueryXBitmaps16"><function>QueryXBitmaps16</function></link>
+and
+<link linkend="Requests:CloseFont"><function>CloseFont</function></link>
+requests.  The value that caused
+the error is included as extra data.
+    </para>
+</section>
+
+<section id="Errors:Range">
+    <title><errorname>Range</errorname></title>
+    <indexterm zone="Errors:Range" significance="preferred"><primary>Error Codes</primary><secondary><errorname>Range</errorname></secondary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry><entry>unused</entry></row>
+          <row><entry><parameter>range</parameter>:</entry><entry><link linkend="Data_Types:RANGE"><type>RANGE</type></link></entry><entry>bad range</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This error is generated by an invalid <link linkend="Data_Types:RANGE"><type>RANGE</type></link> in the
+<link linkend="Requests:QueryXExtents8"><function>QueryXExtents8</function></link>,
+<link linkend="Requests:QueryXExtents16"><function>QueryXExtents16</function></link>,
+<link linkend="Requests:QueryXBitmaps8"><function>QueryXBitmaps8</function></link>
+and
+<link linkend="Requests:QueryXBitmaps16"><function>QueryXBitmaps16</function></link>
+requests.  The
+value that caused the error is included as extra data.
+    </para>
+</section>
+
+<section id="Errors:EventMask">
+    <title><errorname>EventMask</errorname></title>
+    <indexterm zone="Errors:EventMask" significance="preferred"><primary>Error Codes</primary><secondary><errorname>EventMask</errorname></secondary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry><entry>unused</entry></row>
+          <row><entry><parameter>event-mask</parameter>:</entry><entry><link linkend="Data_Types:EVENTMASK"><type>EVENTMASK</type></link></entry><entry>bad event mask</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This error is generated by an invalid <link linkend="Data_Types:EVENTMASK"><type>EVENTMASK</type></link> in the
+<link linkend="Requests:SetEventMask"><function>SetEventMask</function></link>
+request.  The value that caused the error is
+included as extra data.
+    </para>
+</section>
+
+<section id="Errors:AccessContext">
+    <title><errorname>AccessContext</errorname></title>
+    <indexterm zone="Errors:AccessContext" significance="preferred"><primary>Error Codes</primary><secondary><errorname>AccessContext</errorname></secondary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry><entry>unused</entry></row>
+          <row><entry><parameter>ac</parameter>:</entry><entry><link linkend="Data_Types:ACCESSCONTEXT"><type>ACCESSCONTEXT</type></link></entry><entry>unaccepted <type>AccessContext</type></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This error is generated by an invalid <link linkend="Data_Types:ACCESSCONTEXT"><type>ACCESSCONTEXT</type></link> in the
+<link linkend="Requests:FreeAC"><function>FreeAC</function></link>
+or
+<link linkend="Requests:SetAuthorization"><function>SetAuthorization</function></link>
+request or by an
+<link linkend="Requests:OpenBitmapFont"><function>OpenBitmapFont</function></link>
+request performed without sufficient authorization.  In the
+first two cases, the <link linkend="Data_Types:ACCESSCONTEXT"><type>ACCESSCONTEXT</type></link> of the errant request is
+returned as extra data.  In the third case, the current
+<link linkend="Data_Types:ACCESSCONTEXT"><type>ACCESSCONTEXT</type></link> is returned as extra data.
+    </para>
+</section>
+
+<section id="Errors:IDChoice">
+    <title><errorname>IDChoice</errorname></title>
+    <indexterm zone="Errors:IDChoice" significance="preferred"><primary>Error Codes</primary><secondary><errorname>IDChoice</errorname></secondary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry><entry>unused</entry></row>
+          <row><entry><parameter>id</parameter>:</entry><entry><link linkend="Data_Types:ID"><type>ID</type></link></entry><entry>bad identifier</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This error is generated by an invalid or already associated
+<link linkend="Data_Types:ACCESSCONTEXT"><type>ACCESSCONTEXT</type></link> identifier in a
+<link linkend="Requests:CreateAC"><function>CreateAC</function></link>
+request or <link linkend="Data_Types:FONTID"><type>FONTID</type></link> identifier
+in an
+<link linkend="Requests:OpenBitmapFont"><function>OpenBitmapFont</function></link>
+request.  The value that caused the error
+is included as extra data.
+    </para>
+</section>
+
+<section id="Errors:Name">
+    <title><errorname>Name</errorname></title>
+    <indexterm zone="Errors:Name" significance="preferred"><primary>Error Codes</primary><secondary><errorname>Name</errorname></secondary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry><entry>unused</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This error is generated by a font name pattern that matches
+no fonts in an
+<link linkend="Requests:OpenBitmapFont"><function>OpenBitmapFont</function></link>
+request or no catalogue names in a
+<link linkend="Requests:SetCatalogues"><function>SetCatalogues</function></link>
+request.
+    </para>
+</section>
+
+<section id="Errors:Resolution">
+    <title><errorname>Resolution</errorname></title>
+    <indexterm zone="Errors:Resolution" significance="preferred"><primary>Error Codes</primary><secondary><errorname>Resolution</errorname></secondary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry><entry>X value of errant resolution</entry></row>
+          <row><entry><parameter>y-resolution</parameter>:</entry><entry><type>CARD16</type></entry><entry>Y value of errant resolution</entry></row>
+          <row><entry><parameter>point-size</parameter>:</entry><entry><type>CARD16</type></entry><entry>point size of errant resolution</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This error is generated in response to an invalid <link linkend="Data_Types:RESOLUTION"><type>RESOLUTION</type></link>
+structure in a
+<link linkend="Requests:SetResolution"><function>SetResolution</function></link>
+request.  The value that caused the
+error is included in the DATA-OR-UNUSED field and as extra data.
+    </para>
+</section>
+
+<section id="Errors:Alloc">
+    <title><errorname>Alloc</errorname></title>
+    <indexterm zone="Errors:Length" significance="preferred"><primary>Error Codes</primary><secondary><errorname>Alloc</errorname></secondary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry><entry>unused</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This error is generated by any request for which the server
+lacks sufficient resources (especially memory).
+    </para>
+</section>
+
+<section id="Errors:Length">
+    <title><errorname>Length</errorname></title>
+    <indexterm zone="Errors:Length" significance="preferred"><primary>Error Codes</primary><secondary><errorname>Length</errorname></secondary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry><entry>unused</entry></row>
+          <row><entry><parameter>length</parameter>:</entry><entry><type>CARD32</type></entry><entry>bad length value</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This error is generated by any request that has a length field
+greater than (MAXIMUM-REQUEST-LENGTH * 4) bytes.  The value that
+caused the error is included as extra data.
+    </para>
+</section>
+
+<section id="Errors:Implementation">
+    <title><errorname>Implementation</errorname></title>
+    <indexterm zone="Errors:Implementation" significance="preferred"><primary>Error Codes</primary><secondary><errorname>Implementation</errorname></secondary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>data-or-unused</parameter>:</entry><entry><type>CARD16</type></entry><entry>unused</entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This error may be generated in response to any request that
+the server is unable to process because it is deficient.  Use
+of this error is highly discouraged and indicates lack of
+conformance to the protocol.
+    </para>
+</section>
+<section id="Errors:Extensions">
+  <title>Extensions</title>
+    <para>
+Additional errors may be defined by extensions.
+    </para>
+</section>
+</section>
+
+<section id='Events'>
+<title>Events</title>
+<!-- .XS -->
+<!-- (SN Events -->
+<!-- .XE -->
+<para>
+Events may be generated in response to requests or at the server's discretion
+after the initial connection setup information has been exchanged.  Each event
+is at least 12 bytes long and contains the following fields:
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='3' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <colspec colname='c3' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>type</parameter>:</entry><entry><type>CARD8</type></entry><entry>value of 2</entry></row>
+          <row><entry><parameter>event-code</parameter>:</entry><entry><type>CARD8</type></entry></row>
+          <row><entry><parameter>sequence-number</parameter>:</entry><entry><type>CARD16</type></entry></row>
+          <row><entry><parameter>length</parameter>:</entry><entry><type>CARD32</type></entry></row>
+          <row><entry><parameter>timestamp</parameter>:</entry><entry><link linkend="Data_Types:TIMESTAMP"><type>TIMESTAMP</type></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+</para>
+<para>
+The TYPE field contains the value 2.  The EVENT-CODE field specifies the number
+of the event and is in the range 0-127 for core events or the range 128-255 for
+extensions.  The SEQUENCE-NUMBER field specifies the least significant 16 bits
+of the sequence number of the last request to have been processed by the
+server.  The LENGTH field specifies the number of 4-byte units in this event
+packet and must always have a value of at least 3.  The <link linkend="Data_Types:TIMESTAMP"><type>TIMESTAMP</type></link> field
+specifies the server time when the event occurred.  If LENGTH is greater than
+three, these fields are followed by (LENGTH - 3) * 4 bytes of additional data.
+</para>
+<para>
+Events are described using the following syntax:
+  <blockquote><para>
+    <emphasis role="bold"><function>EventName</function></emphasis>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>arg1</parameter>:</entry><entry><type>type1</type></entry></row>
+          <row><entry> ...</entry></row>
+          <row><entry><parameter>argN</parameter>:</entry><entry><type>typeN</type></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    Description
+  </para></blockquote>
+</para>
+<para>
+If an event does not provide any extra arguments, the
+<parameter>arg1</parameter>...<parameter>argN</parameter>
+lines are omitted from the description.
+</para>
+<para>
+The core X Font Service protocol defines the following events:
+</para>
+
+<section id="Events:KeepAlive">
+    <title><function>KeepAlive</function></title>
+    <indexterm zone="Events:KeepAlive" significance="preferred"><primary>KeepAlive</primary></indexterm>
+    <para>
+This unsolicited, nonmaskable event may be sent by the
+server to verify that the connection has not been broken
+(for transports that do not provide this information).
+Clients should acknowledge receipt of this request
+by sending any request (such as
+<link linkend="Requests:NoOp"><function>NoOp</function></link>
+).
+    </para>
+</section>
+
+<section id="Events:CatalogueListNotify">
+    <title><function>CatalogueListNotify</function></title>
+    <indexterm zone="Events:CatalogueListNotify" significance="preferred"><primary>CatalogueListNotify</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>added</parameter>:</entry><entry><link linkend="Data_Types:BOOL"><type>BOOL</type></link></entry></row>
+          <row><entry><parameter>deleted</parameter>:</entry><entry><link linkend="Data_Types:BOOL"><type>BOOL</type></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This event is sent to clients that have included
+<function><constant>CatalogueListChangeMask</constant></function>
+in their core event mask
+whenever the list of catalogues that are available has
+changed.  The ADDED field is <constant>True</constant> if new catalogues have
+been added to the server, otherwise it is <constant>False</constant>.  The
+DELETED field is <constant>True</constant> if any existing catalogues have
+been removed from the server, otherwise it is <constant>False</constant>.
+    </para>
+</section>
+
+<section id="Events:FontListNotify">
+    <title><function>FontListNotify</function></title>
+    <indexterm zone="Events:FontListNotify" significance="preferred"><primary>FontListNotify</primary></indexterm>
+    <informaltable frame='none'>
+      <?dbfo keep-together="always" ?>
+      <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+        <colspec colname='c1' colwidth='1.0*'/>
+        <colspec colname='c2' colwidth='1.0*'/>
+        <tbody>
+          <row><entry><parameter>added</parameter>:</entry><entry><link linkend="Data_Types:BOOL"><type>BOOL</type></link></entry></row>
+          <row><entry><parameter>deleted</parameter>:</entry><entry><link linkend="Data_Types:BOOL"><type>BOOL</type></link></entry></row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+    <para>
+This event is sent to clients that have included
+<function><constant>FontListChangeMask</constant></function>
+in their event mask whenever the
+list of fonts that are provided by the currently selected
+catalogues has changed.  The ADDED field is <constant>True</constant> if new
+fonts have been added to any of the catalogues currently
+used by the client, otherwise it is <constant>False</constant>.  The DELETED
+field is <constant>True</constant> if any existing fonts have been removed
+from any of catalogues used by the client, otherwise it
+is <constant>False</constant>.
+    </para>
+</section>
+<section id="Events:Extensions">
+  <title>Extensions</title>
+    <para>
+Additional events may be defined by extensions.
+    </para>
+</section>
+</section>
+</chapter>
+
+<chapter id='Protocol_Encoding'>
+<title>Protocol Encoding</title>
+<!-- .XS -->
+<!-- (SN Protocol Encoding -->
+<!-- .XE -->
+<para>
+Numbers that are prefixed with <quote><literal>#x</literal></quote>
+are in hexadecimal (base 16).  All other
+numbers are in decimal.  Requests, replies, errors, events, and compound types
+are described using the syntax:
+</para>
+<!-- .RS -->
+<literallayout class="monospaced">
+
+    Name
+     <emphasis remap='I'>count</emphasis>          <emphasis remap='I'>contents</emphasis>     <emphasis remap='I'>name</emphasis>
+     ...
+     <emphasis remap='I'>count</emphasis>          <emphasis remap='I'>contents</emphasis>     <emphasis remap='I'>name</emphasis>
+</literallayout>
+
+<!-- .RE -->
+<para>
+where COUNT is the number of bytes in the data stream occupied by this
+field, CONTENTS is the name of the type as given in
+<link linkend='Data_Types'>Section 4</link> or the value if
+this field contains a constant, and NAME is a description of this field.
+</para>
+<para>
+Objects containing counted lists use a lowercase single-letter variable (whose
+scope is limited to the request, reply, event, or error in which it is found)
+to represent the number of objects in the list.  These variables, and any
+expressions in which they are used, should be treated as unsigned integers.
+Multiple copies of an object are indicated by CONTENTS prefix
+<quote>LISTof</quote>.
+</para>
+<para>
+Unused bytes (whose value is undefined) will have a blank CONTENTS field and a
+NAME field of <quote>unused</quote>.  Zeroed bytes (whose value must be zero)
+will have a blank CONTENTS field and a NAME field of <quote>zero</quote>.
+The expression pad(e) refers to the number of bytes
+needed to round a value <quote>e</quote> up to the closed
+multiple of four:
+</para>
+<!-- .RS -->
+<literallayout class="monospaced">
+
+     pad(e) = (4 - (e mod 4)) mod 4
+</literallayout>
+
+<section id='Encoding::Data_Types'>
+<title>Data Types</title>
+<!-- .XS -->
+<!-- (SN Data Types -->
+<!-- .XE -->
+<literallayout class="monospaced">
+<link linkend="Data_Types:ACCESSCONTEXT"><type>ACCESSCONTEXT</type></link>
+4     <type>CARD32</type>                 access context
+
+      with at least one of the following bits set:
+
+        #x1fffffff
+
+      but none of the following bits set:
+
+        #xe0000000        zero
+
+
+<link linkend="Data_Types:ALTERNATESERVER"><type>ALTERNATESERVER</type></link>
+1     <type>BOOL</type>                   subset
+1     n                      length of name
+n     <type>STRING8</type>                name
+p                            unused, p=pad(n+2)
+
+<link linkend="Data_Types:AUTH"><type>AUTH</type></link>
+2     n                      length of name
+2     d                      length of data
+n     <type>STRING8</type>                name
+p                            unused, p=pad(n)
+d     <type>STRING8</type>                data
+q                            unused, q=pad(d)
+
+
+<link linkend="Data_Types:BITMAPFORMAT"><type>BITMAPFORMAT</type></link>
+4     <type>CARD32</type>                 value, union of the following bits:
+
+        #x00000001        ByteOrderMSB
+        #x00000002        BitOrderMSB
+        #x00000000        <constant>ImageRectMin</constant>
+        #x00000004        <constant>ImageRectMaxWidth</constant>
+        #x00000008        <constant>ImageRectMax</constant>
+        #x00000000        <constant>ScanlinePad8</constant>
+        #x00000100        <constant>ScanlinePad16</constant>
+        #x00000200        <constant>ScanlinePad32</constant>
+        #x00000300        <constant>ScanlinePad64</constant>
+        #x00000000        <constant>ScanlineUnit8</constant>
+        #x00001000        <constant>ScanlineUnit16</constant>
+        #x00002000        <constant>ScanlineUnit32</constant>
+        #x00003000        <constant>ScanlineUnit64</constant>
+
+      except for the following bits which must be zero:
+
+        #xffffccf0        zero
+
+      and the following of which at most one bit may be set:
+
+        #x0000000c        at most one bit can be set
+
+
+<link linkend="Data_Types:BITMAPFORMATMASK"><type>BITMAPFORMATMASK</type></link>
+4     <type>CARD32</type>                 value, mask of the following bits:
+
+        #x00000001        <constant>ByteOrderMask</constant>
+        #x00000002        <constant>BitOrderMask</constant>
+        #x00000004        <constant>ImageRectMask</constant>
+        #x00000008        <constant>ScanlinePadMask</constant>
+        #x00000010        <constant>ScanlineUnitMask</constant>
+
+      except for the following bits which must be zero:
+
+        #xffffffe0        zero
+
+<link linkend="Data_Types:BOOL"><type>BOOL</type></link>
+1     <type>BOOL</type>                   boolean, one of the following values:
+        0                 <constant>False</constant>
+        1                 <constant>True</constant>
+
+<link linkend="Data_Types:BYTE"><type>BYTE</type></link>
+1     <type>BYTE</type>                   unsigned byte of data
+
+<type>CARD8</type>
+1     <type>CARD8</type>                  8-bit unsigned integer
+
+<type>CARD16</type>
+2     <type>CARD16</type>                 16-bit unsigned integer
+
+<type>CARD32</type>
+4     <type>CARD32</type>                 32-bit unsigned integer
+
+<link linkend="Data_Types:CHAR2B"><type>CHAR2B</type></link>
+1     <type>CARD8</type>                  byte1
+1     <type>CARD8</type>                  byte2
+
+<link linkend="Data_Types:EVENTMASK"><type>EVENTMASK</type></link>
+4     <type>CARD32</type>                 event mask
+
+      for core events, this is union of the following bits:
+
+        #00000001         <constant>CatalogueListChangeMask</constant>
+        #00000002         <constant>FontListChangeMask</constant>
+
+      but none of the following bits set:
+
+        #fffffffc
+
+      extensions define their own sets of bits
+
+<link linkend="Data_Types:FONTID"><type>FONTID</type></link>
+4     <type>CARD32</type>                 font identifier
+
+      with at least one of the following bits set:
+
+        #x1fffffff
+
+      but none of the following bits set:
+
+        #xe0000000        zero
+
+<type>INT8</type>
+1     <type>INT8</type>                   8-bit signed integer
+
+<type>INT16</type>
+2     <type>INT16</type>                  16-bit signed integer
+
+<type>INT32</type>
+4     <type>INT32</type>                  32-bit signed integer
+
+<link linkend="Data_Types:OFFSET32"><type>OFFSET32</type></link>
+4     <type>CARD32</type>                 position (or integer value)
+4     <type>CARD32</type>                 length
+
+<link linkend="Data_Types:PROPINFO"><type>PROPINFO</type></link>
+4     n                      number of <type>PROPOFFSET</type> components
+4     m                      number of bytes of property data
+20*n  <type>PROPOFFSET</type>             property offsets into data block
+m     <type>LISTofBYTE</type>             property data block
+
+<link linkend="Data_Types:PROPOFFSET"><type>PROPOFFSET</type></link>
+8     <type>OFFSET32</type>               name in data block
+8     <type>OFFSET32</type>               value in data block
+1     <type>CARD8</type>                  type, one of the following values:
+        0                 <constant>String</constant>
+        1                 <constant>Unsigned</constant>
+        2                 <constant>Signed</constant>
+        3                 zero
+
+<link linkend="Data_Types:RANGE"><type>RANGE</type></link>
+2     <type>CHAR2B</type>                 minimum character code
+2     <type>CHAR2B</type>                 maximum character code
+
+<link linkend="Data_Types:RESOLUTION"><type>RESOLUTION</type></link>
+2     <type>CARD16</type>                 x resolution in pixels per inch
+2     <type>CARD16</type>                 y resolution in pixels per inch
+2     <type>CARD16</type>                 point size in decipoints
+
+STRNAME
+1     n                      length of name
+n     <type>STRING8</type>                name
+
+<link linkend="Data_Types:STRING8"><type>STRING8</type></link>
+n     <type>LISTofBYTE</type>             array of 8-bit character values
+
+<link linkend="Data_Types:TIMESTAMP"><type>TIMESTAMP</type></link>
+4     <type>CARD32</type>                 milliseconds since server time origin
+
+<link linkend="Data_Types:XCHARINFO"><type>XCHARINFO</type></link>
+2     <type>INT16</type>                  left bearing
+2     <type>INT16</type>                  right bearing
+2     <type>INT16</type>                  width
+2     <type>INT16</type>                  ascent
+2     <type>INT16</type>                  descent
+2     <type>CARD16</type>                 attributes
+
+<link linkend="Data_Types:XFONTINFO"><type>XFONTINFO</type></link>
+4     <type>CARD32</type>                 flags, union of the following bits:
+
+        #x00000001        <constant>AllCharactersExist</constant>
+        #x00000002        <constant>InkInside</constant>
+        #x00000004        <constant>HorizontalOverlap</constant>
+
+      but none of the following bits set:
+
+        #xfffffff8        zero
+
+4     <type>RANGE</type>                  range of characters in font
+1     <type>CARD8</type>                  drawing direction
+        0                 <constant>LeftToRight</constant>
+        1                 <constant>RightToLeft</constant>
+1                            unused
+2     <type>CHAR2B</type>                 default character
+12    <type>XCHARINFO</type>              minimum bounds
+12    <type>XCHARINFO</type>              maximum bounds
+2     <type>INT16</type>                  font ascent
+2     <type>INT16</type>                  font descent
+n     <type>PROPINFO</type>               property data
+</literallayout>
+</section>
+
+<section id='Encoding::Requests'>
+<title>Requests</title>
+<para><link linkend="Requests:open_connection"><emphasis role="bold">open connection</emphasis></link></para>
+<literallayout class="monospaced">
+1     <type>BYTE</type>                   byteorder, one of the values:
+        #x42              MostSignificant Byte first
+        #x6c              LeastSignificant Byte first
+1     <type>CARD8</type>                  numberof auth in auth-data
+2     2                      client-major-protocol-version
+2     0                      client-minor-protocol-version
+2     a/4 lengthof           auth-data
+a     <type>LISTofAUTH</type>             auth-data
+▶
+2     <type>CARD16</type>                 status
+        0                 <constant>Success</constant>
+        1                 <constant>Continue</constant>
+        2                 <constant>Busy</constant>
+        3                 <constant>Denied</constant>
+2     2                      major version
+2     0                      version
+1     <type>CARD8</type>                  numberof alternate-servers-hint
+1     <type>CARD8</type>                  authorization-index
+2     a/4                    lengthof alternate-servers-hint
+2     (d+q)/4                lengthof authorization-data
+a     <type>LISTofALTERNATESERVER</type>  alternate-servers-hint
+d     <type>LISTofBYTE</type>             authorization-data
+q                            unused, q=pad(d)
+</literallayout>
+
+<para>
+If STATUS is <constant>Busy</constant> or <constant>Denied</constant>, the protocol stops and the connection is
+closed. If STATUS is <constant>Continue</constant>, the client is expected to respond with
+additional data, to which the server responds with
+a new status value and more data. This dialog continues until the status
+is set to <constant>Success</constant>, or until the server sets STATUS to <constant>Busy</constant> or <constant>Denied</constant>
+and closes the connection:
+</para>
+
+<literallayout class="monospaced">
+◀
+4     1+(d+q)/4              length
+d     <type>LISTofBYTE</type>             more-authorization-data
+q                            unused, q=pad(d)
+▶
+4     2+(d+q)/4              length
+2     <type>CARD16</type>                 status
+        0                 <constant>Success</constant>
+        1                 <constant>Continue</constant>
+        2                 <constant>Busy</constant>
+        3                 <constant>Denied</constant>
+2                            unused
+d     <type>LISTofBYTE</type>             more-authorization-data
+q                            unused, q=pad(d)
+</literallayout>
+<para>
+When STATUS is <constant>Success</constant>, the protocol resumes with the following
+sent by the server:
+</para>
+
+<literallayout class="monospaced">
+4     3+(v+w)/4              length of rest of data
+2     <type>CARD16</type>                 maximum-request-length
+2     v                      length of vendor string
+4     <type>CARD32</type>                 release-number
+v     <type>STRING8</type>                vendor-string
+w                            unused, w=pad(v)
+</literallayout>
+<para>
+Once the connection has been established, the client may send the
+following requests:
+</para>
+
+<literallayout class="monospaced">
+<link linkend="Requests:NoOp"><emphasis role="bold"><function>NoOp</function></emphasis></link>
+1   0                        major-opcode
+1                            unused
+2   1                        length
+
+<link linkend="Requests:ListExtensions"><emphasis role="bold"><function>ListExtensions</function></emphasis></link>
+1   1                        major-opcode
+1                            unused
+2   1                        length
+▶
+1   0                        type reply
+1   <type>CARD8</type>                    numberof names
+2   <type>CARD16</type>                   sequence-number
+4   2+(n+p)/4                length
+n   LISTofSTRNAME            names
+p                            unused, p=pad(n)
+
+<link linkend="Requests:QueryExtension"><emphasis role="bold"><function>QueryExtension</function></emphasis></link>
+1   2                        major-opcode
+1   n                        length of name
+2   1+(n+p)/4                length
+n   <type>STRING8</type>                  name
+p                            unused, p=pad(n)
+▶
+1   0                        type reply
+1   <type>BOOL</type>                     present
+2   <type>CARD16</type>                   sequence-number
+4   5                        length
+2   <type>CARD16</type>                   major-version
+2   <type>CARD16</type>                   minor-version
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    first-event
+1   <type>CARD8</type>                    number-events
+1   <type>CARD8</type>                    first-error
+1   <type>CARD8</type>                    number-errors
+3                            unused
+
+<link linkend="Requests:ListCatalogues"><emphasis role="bold"><function>ListCatalogues</function></emphasis></link>
+1   3                        major-opcode
+1                            unused
+2   3+(n+p)/4                length
+4   <type>CARD32</type>                   max-names
+2   n                        length of pattern
+2                            unused
+n   <type>STRING8</type>                  pattern
+p                            unused, p=pad(n)
+▶+
+1   0                        type reply
+1                            unused
+2   <type>CARD16</type>                   sequence-number
+4   4+(n+p)/4                length
+4   <type>CARD32</type>                   replies-following-hint
+4   <type>CARD32</type>                   numberof catalogue-names
+n   LISTofSTRNAME            catalogue-names
+p                            unused, p=pad(n)
+
+<link linkend="Requests:SetCatalogues"><emphasis role="bold"><function>SetCatalogues</function></emphasis></link>
+1   4                        major-opcode
+1   <type>CARD8</type>                    numberof catalogue-names
+2   1+(n+p)/4                length
+n   LISTofSTRNAME            catalogue-names
+p                            unused, p=pad(n)
+
+<link linkend="Requests:GetCatalogues"><emphasis role="bold"><function>GetCatalogues</function></emphasis></link>
+1   5                        major-opcode
+1                            unused
+2   1                        length
+▶
+1   0                        type reply
+1   <type>CARD8</type>                    numberof catalogue-names
+2   <type>CARD16</type>                   sequence-number
+4   2+(n+p)/4                length
+n   LISTofSTRNAME            catalogue-names
+p                            unused, p=pad(n)
+
+<link linkend="Requests:SetEventMask"><emphasis role="bold"><function>SetEventMask</function></emphasis></link>
+1   6                        major-opcode
+1   <type>CARD8</type>                    extension-opcode
+2   2                        length
+4   <type>EVENTMASK</type>                event-mask
+
+<link linkend="Requests:GetEventMask"><emphasis role="bold"><function>GetEventMask</function></emphasis></link>
+1   7                        major-opcode
+1   <type>CARD8</type>                    extension-opcode
+2   1                        length
+▶
+1   0                        type reply
+1                            unused
+2   <type>CARD16</type>                   sequence-number
+4   3                        length
+4   <type>EVENTMASK</type>                event-mask
+
+<link linkend="Requests:CreateAC"><emphasis role="bold"><function>CreateAC</function></emphasis></link>
+1   8                        major-opcode
+1   <type>CARD8</type>                    numberof authorization-protocols
+2   2+a/4                    length
+4   <type>ACCESSCONTEXT</type>            ac
+a   <type>LISTofAUTH</type>               authorization-protocols
+▶
+1   0                        type reply
+1   <type>CARD8</type>                    authorization-index
+2   <type>CARD16</type>                   sequence-number
+4   3+(d+q)/4                length
+2   <type>CARD16</type>                   status
+        0                    <constant>Success</constant>
+        1                    <constant>Continue</constant>
+        2                    <constant>Busy</constant>
+        3                    <constant>Denied</constant>
+2                            unused
+d   <type>LISTofBYTE</type>               authorization-data
+q                            unused, q=pad(d)
+</literallayout>
+
+<para>
+If STATUS is <constant>Continue</constant>, the client is expected to respond with additional
+data, to which the server
+responds with a new status value and more data. This dialog continues
+until the status is set to
+<constant>Success</constant>, <constant>Busy</constant>, or <constant>Denied</constant> at which point the request is finished.
+</para>
+
+<literallayout class="monospaced">
+◀
+4   1+(d+q)/4                length
+d   <type>LISTofBYTE</type>               more-authorization-data
+q                            unused, q=pad(d)
+▶
+4   2+(d+q)/4                length
+2   <type>CARD16</type>                   status
+        0                    <constant>Success</constant>
+        1                    <constant>Continue</constant>
+        2                    <constant>Busy</constant>
+        3                    <constant>Denied</constant>
+2                            unused
+d   <type>LISTofBYTE</type>               authorization-data
+q                            unused, q=pad(d)
+
+<link linkend="Requests:FreeAC"><emphasis role="bold"><function>FreeAC</function></emphasis></link>
+1   9                        major-opcode
+1                            unused
+2   2                        length
+4   <type>ACCESSCONTEXT</type>            ac
+
+<link linkend="Requests:SetAuthorization"><emphasis role="bold"><function>SetAuthorization</function></emphasis></link>
+1   10                       major-opcode
+1                            unused
+2   2                        length
+4   <type>ACCESSCONTEXT</type>            ac
+
+<link linkend="Requests:SetResolution"><emphasis role="bold"><function>SetResolution</function></emphasis></link>
+1   11                       major-opcode
+1   n                        number of resolutions
+2   1+(6*n+p)/4              length
+6*n <type>LISTofRESOLUTION</type>         resolutions
+p   p=pad(6*n)
+
+<link linkend="Requests:GetResolution"><emphasis role="bold"><function>GetResolution</function></emphasis></link>
+1   12                       major-opcode
+1                            unused
+2   1                        length
+▶
+1   0                        type reply
+1   n                        number of resolutions
+2   <type>CARD16</type>                   sequence-number
+4   2+(6*n+p)/4              length
+6*n <type>LISTofRESOLUTION</type>         resolutions
+p   p=pad(6*n)
+
+<link linkend="Requests:ListFonts"><emphasis role="bold"><function>ListFonts</function></emphasis></link>
+1   13                       major-opcode
+1                            unused
+2   3+(n+p)/4                length
+4   <type>CARD32</type>                   max-names
+2   n                        length of pattern
+2                            unused
+n   <type>STRING8</type>                  pattern
+p                            unused, p=pad(n)
+▶+
+1   0                        type reply
+1                            unused
+2   <type>CARD16</type>                   sequence-number
+4   4+(n+p)/4                length
+4   <type>CARD32</type>                   replies-following-hint
+4   <type>CARD32</type>                   numberof font-names
+n   LISTofSTRNAME            font-names
+p                            unused, p=pad(n)
+
+<link linkend="Requests:ListFontsWithXInfo"><emphasis role="bold"><function>ListFontsWithXInfo</function></emphasis></link>
+1   14                       major-opcode
+1                            unused
+2   3+(n+p)/4                length
+4   <type>CARD32</type>                   max-names
+2   n                        length of pattern
+2                            unused
+n   <type>STRING8</type>                  pattern
+p                            unused, p=pad(n)
+▶+ (except for last in series)
+1   0                        type reply
+1   n                        length of name
+2   <type>CARD16</type>                   sequence-number
+4   3+(n+p+f)/4              length
+4   <type>CARD32</type>                   replies-hint
+f   <type>XFONTINFO</type>                fontinfo
+n   <type>STRING8</type>                  name
+p                            unused, p=pad(n)
+▶ (last in series)
+1   0                        type reply
+1   0                        last-reply indicator
+2   <type>CARD16</type>                   sequence-number
+4   2                        reply length
+
+<link linkend="Requests:OpenBitmapFont"><emphasis role="bold"><function>OpenBitmapFont</function></emphasis></link>
+1   15                       major-opcode
+1                            unused
+2   4+(n+p)/4                length
+4   <type>FONTID</type>                   fontid
+4   <type>BITMAPFORMATMASK</type>         format-mask
+4   <type>BITMAPFORMAT</type>             format
+n   STRNAME                  pattern
+p                            unused, p=pad(n)
+▶
+1   0                        type reply
+1   <type>BOOL</type>                     otherid-valid
+2   <type>CARD16</type>                   sequence-number
+4   4                        length
+4   <type>FONTID</type>                   otherid
+1   <type>BOOL</type>                     cachable
+3                            unused
+
+<link linkend="Requests:QueryXInfo"><emphasis role="bold"><function>QueryXInfo</function></emphasis></link>
+1   16                       major-opcode
+1                            unused
+2   2                        length
+4   <type>FONTID</type>                   fontid
+▶
+1   0                        type reply
+1                            unused
+2   <type>CARD16</type>                   sequence-number
+4   2+f/4                    length
+f   <type>XFONTINFO</type>                fontinfo
+p                            unused, p=pad(f)
+
+<link linkend="Requests:QueryXExtents8"><emphasis role="bold"><function>QueryXExtents8</function></emphasis></link>
+1   17                       major-opcode
+1   <type>BOOL</type>                     range
+2   3+(n+p)/4                length
+4   <type>FONTID</type>                   fontid
+4   n                        number chars entries
+n   <type>STRING8</type>                  chars
+p                            unused, p=pad(n)
+▶
+1   0                        type reply
+1                            unused
+2   <type>CARD16</type>                   sequence-number
+4   3+3*n                    length
+4   n                        number of extents
+12*n <type>LISTofXCHARINFO</type>         extents
+
+<link linkend="Requests:QueryXExtents16"><emphasis role="bold"><function>QueryXExtents16</function></emphasis></link>
+1   18                       major-opcode
+1   <type>BOOL</type>                     range
+2   3+(2*n+p)/4              length
+4   <type>FONTID</type>                   fontid
+4   n                        number chars entries
+2*n                          <type>LISTofCHAR2B</type> chars
+p                            unused, p=pad(2*n)
+▶
+1   0                        type reply
+1                            unused
+2   <type>CARD16</type>                   sequence-number
+4   3+3*n                    length
+4   n                        number of extents
+12*n <type>LISTofXCHARINFO</type>         extents
+
+<link linkend="Requests:QueryXBitmaps8"><emphasis role="bold"><function>QueryXBitmaps8</function></emphasis></link>
+1   19                       major-opcode
+1   <type>BOOL</type>                     range
+2   4+(n+p)/4                length
+4   <type>FONTID</type>                   fontid
+4   <type>BITMAPFORMAT</type>             format
+4   n                        number of chars entries
+n   <type>STRING8</type>                  chars
+p                            unused, p=pad(n)
+▶+
+1   0                        type reply
+1                            unused
+2   <type>CARD16</type>                   sequence-number
+4   5+2*n+(m+p)/4            length
+4   <type>CARD32</type>                   replies-following-hint
+4   n                        number of offsets
+4   m                        number of bytes of glyph images
+8*n <type>LISTofOFFSET32</type>           offsets
+m   <type>LISTofBYTE</type>               glyphimages
+p                            unused, p=pad(m)
+
+<link linkend="Requests:QueryXBitmaps16"><emphasis role="bold"><function>QueryXBitmaps16</function></emphasis></link>
+1   20                       major-opcode
+1   <type>BOOL</type>                     range
+2   4+(2*n+p)/4              length
+4   <type>FONTID</type>                   fontid
+4   <type>BITMAPFORMAT</type>             format
+4   n                        number of chars entries
+2*n <type>LISTofCHAR2B</type>             chars
+p                            unused, p=pad(2*n)
+▶
+1   0                        type reply
+1                            unused
+2   <type>CARD16</type>                   sequence-number
+4   5+2*n+(m+p)/4            length
+4   <type>CARD32</type>                   replies-following-hint
+4   n                        number of offsets
+4   m                        number of bytes of glyph images
+8*n <type>LISTofOFFSET32</type>           offsets
+m   <type>LISTofBYTE</type>               glyphimages
+p                            unused, p=pad(m)
+
+<link linkend="Requests:CloseFont"><emphasis role="bold"><function>CloseFont</function></emphasis></link>
+1   21                       major-opcode
+1                            unused
+2   2                        length
+4   <type>FONTID</type>                   fontid
+</literallayout>
+</section>
+
+<section id='Encoding::Errors'>
+<title>Errors</title>
+<literallayout class="monospaced">
+
+<link linkend="Errors:Request"><emphasis role="bold"><errorname>Request</errorname></emphasis></link>
+1   1                        type error
+1   0                        <errorname>Request</errorname>
+2   <type>CARD16</type>                   sequence-number
+4   4                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    minor-opcode
+2                            unused
+
+<link linkend="Errors:Format"><emphasis role="bold"><errorname>Format</errorname></emphasis></link>
+1   1                        type error
+1   1                        <errorname>Format</errorname>
+2   <type>CARD16</type>                   sequence-number
+4   5                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    minor-opcode
+2                            unused
+4   <type>BITMAPFORMAT</type>             bad-format
+
+<link linkend="Errors:Font"><emphasis role="bold"><errorname>Font</errorname></emphasis></link>
+1   1                        type error
+1   2                        <errorname>Font</errorname>
+2   <type>CARD16</type>                   sequence-number
+4   5                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    minor-opcode
+2                            unused
+4   <type>FONTID</type>                   bad-fontid
+
+<link linkend="Errors:Range"><emphasis role="bold"><errorname>Range</errorname></emphasis></link>
+1   1                        type error
+1   3                        <errorname>Range</errorname>
+2   <type>CARD16</type>                   sequence-number
+4   5                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    minor-opcode
+2                            unused
+4   <type>RANGE</type>                    bad-range
+
+<link linkend="Errors:EventMask"><emphasis role="bold"><errorname>EventMask</errorname></emphasis></link>
+1   1                        type error
+1   4                        <errorname>EventMask</errorname>
+2   <type>CARD16</type>                   sequence-number
+4   5                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    minor-opcode
+2                            unused
+4   <type>EVENTMASK</type>                event-mask
+
+<link linkend="Errors:AccessContext"><emphasis role="bold"><errorname>AccessContext</errorname></emphasis></link>
+1   1                        type error
+1   5                        <errorname>AccessContext</errorname>
+2   <type>CARD16</type>                   sequence-number
+4   5                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    minor-opcode
+2                            unused
+4   <type>ACCESSCONTEXT</type>            access context
+
+<link linkend="Errors:IDChoice"><emphasis role="bold"><errorname>IDChoice</errorname></emphasis></link>
+1   1                        type error
+1   6                        <errorname>IDChoice</errorname>
+2   <type>CARD16</type>                   sequence-number
+4   5                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    minor-opcode
+2                            unused
+4   <type>FONTID</type>                   bad-fontid
+
+<link linkend="Errors:Name"><emphasis role="bold"><errorname>Name</errorname></emphasis></link>
+1   1                        type error
+1   7                        <errorname>Name</errorname>
+2   <type>CARD16</type>                   sequence-number
+4   4                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    minor-opcode
+2                            unused
+
+<link linkend="Errors:Resolution"><emphasis role="bold"><errorname>Resolution</errorname></emphasis></link>
+1   1                        type error
+1   8                        <errorname>Resolution</errorname>
+2   <type>CARD16</type>                   sequence-number
+4   5                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    minor-opcode
+6   <type>RESOLUTION</type>               resolution
+
+<link linkend="Errors:Alloc"><emphasis role="bold"><errorname>Alloc</errorname></emphasis></link>
+1   1                        type error
+1   9                        <errorname>Alloc</errorname>
+2   <type>CARD16</type>                   sequence-number
+4   4                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    minor-opcode
+2                            unused
+
+<link linkend="Errors:Length"><emphasis role="bold"><errorname>Length</errorname></emphasis></link>
+1   1                        type error
+1   10                       <errorname>Length</errorname>
+2   <type>CARD16</type>                   sequence-number
+4   5                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    minor-opcode
+2                            unused
+4   <type>CARD32</type>                   bad-length
+
+<link linkend="Errors:Implementation"><emphasis role="bold"><errorname>Implementation</errorname></emphasis></link>
+1   1                        type error
+1   11                       <errorname>Implementation</errorname>
+2   <type>CARD16</type>                   sequence-number
+4   4                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>CARD8</type>                    major-opcode
+1   <type>CARD8</type>                    minor-opcode
+2                            unused
+
+</literallayout>
+</section>
+
+<section id='Encoding::Events'>
+<title>Events</title>
+<literallayout class="monospaced">
+<link linkend="Events:KeepAlive"><emphasis role="bold"><function>KeepAlive</function></emphasis></link>
+1   2                        type event
+1   0                        event KeepAlive
+2   <type>CARD16</type>                   sequence-number
+4   3                        length
+4   <type>TIMESTAMP</type>                timestamp
+
+<link linkend="Events:CatalogueListNotify"><emphasis role="bold"><function>CatalogueListNotify</function></emphasis></link>
+1   2                        type event
+1   1                        event CatalogueListNotify
+2   <type>CARD16</type>                   sequence-number
+4   4                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>BOOL</type>                     added
+1   <type>BOOL</type>                     deleted
+2                            unused
+
+<link linkend="Events:FontListNotify"><emphasis role="bold"><function>FontListNotify</function></emphasis></link>
+1   2                        type event
+1   2                        event FontListNotify
+2   <type>CARD16</type>                   sequence-number
+4   4                        length
+4   <type>TIMESTAMP</type>                timestamp
+1   <type>BOOL</type>                     added
+1   <type>BOOL</type>                     deleted
+2                            unused
+
+</literallayout>
+</section>
+</chapter>
+
+<chapter id='Acknowledgements'>
+<title>Acknowledgements</title>
+<!-- .XS -->
+<!-- (SN Acknowledgements -->
+<!-- .XE -->
+<para>
+This document represents the culmination of several years of debate and
+experiments done under the auspices of the
+<orgname class="consortium">MIT X Consortium</orgname> font working group.
+Although this was a group effort, the author remains responsible for any errors
+or omissions.  The protocol presented here was primarily designed by
+<personname><firstname>Jim</firstname><surname>Fulton</surname></personname>,
+<personname><firstname>Keith</firstname><surname>Packard</surname></personname>,
+and
+<personname><firstname>Bob</firstname><surname>Scheifler</surname></personname>.
+Special thanks goes to
+<personname><firstname>Ned</firstname><surname>Batchelder</surname></personname>,
+<personname><firstname>Jim</firstname><surname>Flowers</surname></personname>,
+and
+<personname><firstname>Axel</firstname><surname>Deininger</surname></personname>
+for their invigorating comments
+which never failed to make this a better document.
+<personname><firstname>Stephen</firstname><surname>Gildea</surname></personname>
+edited version 2 of this document.  Finally,
+<personname><firstname>David</firstname><surname>Lemke</surname></personname>
+deserves great credit for designing and coding the sample implementation.
+</para>
+</chapter>
+
+<bibliography id='References'>
+<title>References</title>
+<para>
+All of the following documents are X Consortium standards available from
+the X Consortium.
+</para>
+<biblioentry id='References:x11proto'>
+  <abbrev>1</abbrev>
+  <title>X Window System Protocol Version 11</title>
+  <author><firstname>Robert W.</firstname><surname>Scheifler</surname></author>
+</biblioentry>
+
+<biblioentry id='References:bdf-spec'>
+  <abbrev>2</abbrev>
+  <corpauthor>Adobe Systems</corpauthor>
+  <title>Bitmap Distribution Format 2.1</title>
+</biblioentry>
+
+<biblioentry id='References:xlfd-spec'>
+  <abbrev>3</abbrev>
+  <corpauthor>X Consortium</corpauthor>
+  <title>X Logical Font Description Conventions, Version 1.5</title>
+</biblioentry>
+
+</bibliography>
+
+<appendix id="suggested_licensing_policies">
+<title>Suggested Licensing Policies</title>
+<para>
+The authorization data passed by the client in the initial connection
+setup information may be used by the font server to implement restrictions
+on which fonts may be accessed.  Furthermore, the font server is free to
+refuse new connections at any time.
+</para>
+<para>
+Configuration or management of the license restrictions is outside the scope of
+the font service protocol and is done in a server-dependent manner.  Possible
+policies might include, but are not limited to, combinations of the following:
+
+<variablelist>
+  <?dbhtml list-presentation="list"?>
+  <varlistentry>
+    <term>No restrictions</term>
+  <listitem>
+    <para>
+anyone may access any fonts.  The server neither refuses any connections
+nor generates <link linkend="Errors:AccessContext"><errorname>AccessContext</errorname></link> errors on any
+fonts.  For environments without specially-licensed fonts, this is
+sufficient.
+    </para>
+  </listitem>
+  </varlistentry>
+  <varlistentry>
+    <term>Per-machine</term>
+  <listitem>
+    <para>
+only those clients connecting from a known set of
+machines are permitted access.  The server could get the address
+of the connection and look in a list of allowed machines.
+    </para>
+  </listitem>
+  </varlistentry>
+  <varlistentry>
+    <term>Per-user</term>
+  <listitem>
+    <para>
+only a known set of users may access the fonts.  The
+server can use the authorization data (such as a Kerberos ticket
+or a Secure RPC credential) to verify the identity of the user
+and then look in a list of allowed users.
+    </para>
+  </listitem>
+  </varlistentry>
+  <varlistentry>
+    <term>Simultaneous Use</term>
+  <listitem>
+    <para>
+only a certain number of clients may use a given font at any one time.
+Additional clients would receive <link linkend="Errors:AccessContext"><errorname>AccessContext</errorname></link>
+errors if they attempt to open the font.  This is only effective if
+the initial clients keep the font open for the entire time that it
+is being used (even if all of the data has been transmitted and is
+being cached).
+    </para>
+  </listitem>
+  </varlistentry>
+  <varlistentry>
+    <term>Postage Meter</term>
+  <listitem>
+    <para>
+a particular font may only be accessed a limited
+number of times before its license must be renewed.  Each time
+the font is opened, the server decrements a counter.  When the
+counter reaches zero, all further attempts to open the font
+return an <link linkend="Errors:AccessContext"><errorname>AccessContext</errorname></link> error.
+    </para>
+  </listitem>
+  </varlistentry>
+</variablelist>
+</para>
+
+<para>
+It should be noted that chaining of font servers (obtaining font data from
+other font servers) may conflict with certain license policies.
+</para>
+</appendix>
+
+<appendix id="implementation_suggestions">
+<title>Implementation Suggestions</title>
+<para>
+Font server implementations will probably wish to use techniques such as the
+following to avoid limits on the number of simultaneous connections:
+</para>
+<itemizedlist>
+  <listitem>
+    <para>
+The initial connection information returned by the font
+server contains the names of other font servers that
+may be used as substitutes.  A font server may refuse to
+accept a connection, indicating that the client should
+try one of the alternatives instead.
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+On operating systems that support processing forking, font
+servers might choose to fork so that the child can continue
+processing the existing connections and the parent can accept
+new connections.  Such implementations are encouraged to use
+shared memory so that in-memory font databases can be shared.
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+On operating systems that support passing stream file descriptors
+between processes, cooperating font servers could collect
+connections in a single process when there are few connections
+and spread them among several processes as the load increases.
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+If a font client is unable to connect to a server (as opposed
+to having the connection terminated), it should retry for an
+implementation-dependent length of time (see Xlib's
+handling of ECONNREFUSED in XConnDis.c).
+    </para>
+  </listitem>
+</itemizedlist>
+</appendix>
+<index id="index" />
+</book>
Index: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/fontsproto
===================================================================
--- xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/fontsproto	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/fontsproto	(revision 5)

Property changes on: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/fontsproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/scrnsaverproto/saver.xml
===================================================================
--- xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/scrnsaverproto/saver.xml	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/scrnsaverproto/saver.xml	(revision 5)
@@ -0,0 +1,943 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+                   "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+<!ENTITY % defs SYSTEM "defs.ent"> %defs;
+]>
+
+<book id="saver">
+
+<bookinfo>
+   <title>X11 Screen Saver Extension</title>
+   <subtitle>MIT X Consortium Proposed Standard</subtitle>
+   <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo>
+   <releaseinfo>Version 1.0</releaseinfo>
+   <authorgroup>
+     <author>
+      <firstname>Jim</firstname><surname>Fulton</surname>
+      <affiliation><orgname>Network Computing Devices, Inc</orgname></affiliation>
+     </author>
+     <author>
+      <firstname>Keith</firstname><surname>Packard</surname>
+      <affiliation><orgname>
+X Consortium, Laboratory for Computer Science, Massachusetts Institute of Technology
+      </orgname></affiliation>
+     </author>
+   </authorgroup>
+
+   <copyright><year>1992</year>
+     <holder>Massachusetts Institute of Technology</holder>
+     <holder>Network Computing Devices, Inc</holder>
+   </copyright>
+
+
+<legalnotice>
+<para>
+Permission to use, copy, modify, and distribute this documentation for any
+purpose and without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies.  MIT and
+Network Computing Devices, Inc. make no
+representations about the suitability for any purpose of the information in
+this document.  This documentation is provided "as is" without express or
+implied warranty.
+</para>
+
+</legalnotice>
+</bookinfo>
+
+<chapter id='Introduction'>
+<title>Introduction</title>
+<para>
+The X Window System provides support for changing the image on a display screen
+after a user-settable period of inactivity to avoid burning the cathode ray
+tube phosphors.  However, no interfaces are provided for the user to control
+the image that is drawn.  This extension allows an external "screen saver"
+client to detect when the alternate image is to be displayed and to provide the
+graphics.
+</para>
+<para>
+Current X server implementations typically provide at least one form of
+"screen saver" image.  Historically, this has been a copy of the X logo
+drawn against the root background pattern.  However, many users have asked
+for the mechanism to allow them to write screen saver programs that provide
+capabilities similar to those provided by other window systems.  In
+particular, such users often wish to be able to display corporate logos,
+instructions on how to reactivate the screen, and automatic screen-locking
+utilities.  This extension provides a means for writing such clients.
+</para>
+</chapter>
+
+<chapter id="Assumptions">
+<title>Assumptions</title>
+<para>
+This extension exports the notion of a special screen saver window that is
+mapped above all other windows on a display.  This window has the
+<emphasis remap='I'>override-redirect</emphasis> attribute set so that it is not subject to manipulation by
+the window manager.  Furthermore, the X identifier for the window is never
+returned by <function>QueryTree</function> requests on the root window, so it is typically
+not visible to other clients.
+</para>
+</chapter>
+
+<chapter id="Overview">
+<title>Overview</title>
+<para>
+The core
+<function>SetScreenSaver</function>
+request can be used to set the length of time without
+activity on any input devices after which the screen saver should "activate"
+and alter the image on the screen.  This image periodically "cycles" to
+reduce
+the length of time that any particular pixel is illuminated.  Finally, the
+screen saver is "deactivated" in response to activity on any of the input
+devices
+or particular X requests.
+</para>
+
+<para>
+Screen saving is typically done by disabling video output to the display tube
+or by drawing a changing pattern onto the display.  If the server chooses the
+latter approach, a window with a special identifier is created and mapped at
+the top of the stacking order where it remains until the screen saver
+deactivates.  At this time, the window is unmapped and is not accessible to any
+client requests.
+</para>
+<para>
+The server's default mechanism is referred to as the <emphasis remap='I'>internal</emphasis> screen
+saver.  An <emphasis remap='I'>external</emphasis>
+screen saver client requires a means of determining the window
+id for the screen saver window and setting the attributes (e.g. size,
+location, visual, colormap) to be used when the window is mapped.  These
+requirements form the basis of this extension.
+</para>
+</chapter>
+
+<chapter id="Issues">
+<title>Issues</title>
+<para>
+This extension raises several interesting issues.  First is the question of
+what should be done if some other client has the server grabbed when the screen
+saver is supposed to activate?  This commonly occurs with window managers that
+automatically ask the user to position a window when it is first mapped by
+grabbing the server and drawing XORed lines on the root window.
+</para>
+<para>
+Second, a screen saver program must control the actual RGB values sent to the
+display tube to ensure that the values change periodically to avoid phosphor
+burn in.  Thus, the client must have a known colormap installed whenever the
+screen saver window is displayed.  To prevent screen flashing, the visual type
+of the screen saver window should also be controllable.
+</para>
+<para>
+Third, some implementations may wish to destroy the screen saver window when
+it is not mapped so that it need not be avoided during event delivery.  Thus,
+screen saver clients may find that the requests that reference the screen
+saver window may fail when the window is not displayed.
+</para>
+</chapter>
+
+<chapter id="Protocol">
+<title>Protocol</title>
+<para>
+The Screen Saver extension is as follows:
+</para>
+
+<sect1 id="Types">
+<title>Types</title>
+<para>
+In addition to the common types described in the core protocol, the following
+type is used in the request and event definitions in subsequent sections.
+</para>
+
+<informaltable frame="topbot">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <colspec colname='c2' colwidth="1.5*"/>
+  <thead>
+    <row rowsep='1'>
+      <entry>Name</entry>
+      <entry>Value</entry>
+    </row>
+  </thead>
+  <tbody>
+    <row>
+      <entry>SCREENSAVEREVENT</entry>
+      <entry><emphasis role="bold">ScreenSaverNotify</emphasis>,
+      <emphasis role="bold">ScreenSaverCycle</emphasis></entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+</sect1>
+
+<sect1 id="Errors">
+<title>Errors</title>
+<para>
+The Screen Saver extension adds no errors beyond the core protocol.
+</para>
+</sect1>
+
+<sect1 id="Requests">
+<title>Requests</title>
+<para>
+The Screen Saver extension adds the following requests:
+</para>
+
+<literallayout>
+<emphasis role="bold">ScreenSaverQueryVersion</emphasis>
+     client-major-version: CARD8
+     client-minor-version: CARD8
+->
+     server-major-version: CARD8
+     server-minor-version: CARD8
+</literallayout>
+
+<para>
+This request allows the client and server to determine which version of
+the protocol should be used.  The client sends the version that it
+prefers; if the server understands that
+version, it returns the same values and interprets subsequent requests
+for this extension according to the specified version.  Otherwise,
+the server returns the closest version of the protocol that it can
+support and interprets subsequent requests according to that version.
+This document describes major version 1, minor version 0; the major
+and minor revision numbers should only be incremented in response to
+incompatible and compatible changes, respectively.
+</para>
+
+<literallayout>
+<emphasis role="bold">ScreenSaverQueryInfo</emphasis>
+<emphasis>drawable</emphasis> DRAWABLE
+
+saver-window: WINDOW
+state: {<emphasis role="bold">Disabled</emphasis>, <emphasis role="bold">Off</emphasis>, <emphasis role="bold">On</emphasis>}
+kind: {<emphasis role="bold">Blanked</emphasis>, <emphasis role="bold">Internal</emphasis>, <emphasis role="bold">External</emphasis>}
+til-or-since: CARD32
+idle: CARD32
+event-mask: SETofSCREENSAVEREVENT
+
+Errors: <emphasis role="bold">Drawable</emphasis>
+</literallayout>
+
+<para>
+This request returns information about the state of the screen
+saver on the screen associated with <emphasis remap='I'>drawable</emphasis>.  The <emphasis remap='I'>saver-window</emphasis>
+is the XID that is associated with the screen saver window.  This
+window is not guaranteed to exist
+except when external screen saver is active.  Although it is a
+child of the root, this window is not returned by
+<function>QueryTree</function>
+requests on the root.  Whenever this window is mapped, it is always above
+any of its siblings in the stacking order.  XXX - TranslateCoords?
+</para>
+<para>
+The <emphasis remap='I'>state</emphasis> field specifies whether or not the screen saver is currently
+active and how the <emphasis remap='I'>til-or-since</emphasis> value should be interpreted:
+</para>
+
+<informaltable frame="none">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <colspec colname='c2' colwidth="5.0*"/>
+  <tbody>
+    <row>
+      <entry><emphasis role="bold">Off</emphasis></entry>
+      <entry>
+The screen is not currently being saved;
+<emphasis remap='I'>til-or-since</emphasis>
+specifies the number of milliseconds until the screen saver is expected to
+activate.
+      </entry>
+    </row>
+    <row>
+      <entry><emphasis role="bold">On</emphasis></entry>
+      <entry>
+The screen is currently being saved;
+<emphasis remap='I'>til-or-since</emphasis> specifies
+the number of milliseconds since the screen saver activated.
+      </entry>
+    </row>
+    <row>
+      <entry><emphasis role="bold">Disabled</emphasis></entry>
+      <entry>
+The screen saver is currently disabled;
+<emphasis remap='I'>til-or-since</emphasis> is zero.
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+The <emphasis remap='I'>kind</emphasis> field specifies the mechanism that either is currently being
+used or would have been were the screen being saved:
+</para>
+
+<informaltable frame="none">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <colspec colname='c2' colwidth="5.0*"/>
+  <tbody>
+    <row>
+      <entry><emphasis role="bold">Blanked</emphasis></entry>
+      <entry>The video signal to the display monitor was disabled.</entry>
+    </row>
+    <row>
+      <entry><emphasis role="bold">Internal</emphasis></entry>
+      <entry>A server-dependent, built-in screen saver image was displayed; either no
+      client had set the screen saver window attributes or a different client
+      had the server grabbed when the screen saver activated.</entry>
+    </row>
+    <row>
+      <entry><emphasis role="bold">External</emphasis></entry>
+      <entry>The screen saver window was mapped with attributes set by a
+      client using the <function>ScreenSaverSetAttributes</function> request.</entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+The <emphasis remap='I'>idle</emphasis> field specifies the number of milliseconds since the last
+input was received from the user on any of the input devices.
+</para>
+
+<para>
+The <emphasis remap='I'>event-mask</emphasis> field specifies which, if any, screen saver
+events this client has requested using <function>ScreenSaverSelectInput</function>.
+</para>
+
+<para>
+If <emphasis remap='I'>drawable</emphasis> is not a valid drawable identifier, a Drawable
+error is returned and the request is ignored.
+</para>
+
+<literallayout>
+<emphasis role="bold">ScreenSaverSelectInput</emphasis>
+drawable: DRAWABLE
+event-mask: SETofSCREENSAVEREVENT
+</literallayout>
+
+<para>
+Errors:
+<emphasis role="bold">Drawable</emphasis>,
+<emphasis role="bold">Match</emphasis>
+</para>
+
+<para>
+This request specifies which Screen Saver extension events on the screen
+associated with <emphasis remap='I'>drawable</emphasis> should be generated for this client.  If
+no bits are set in <emphasis remap='I'>event-mask</emphasis>, then no events will be generated.
+Otherwise, any combination of the following bits may be set:
+</para>
+
+<informaltable frame="none">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <colspec colname='c2' colwidth="3.0*"/>
+  <tbody>
+    <row>
+      <entry><emphasis role="bold">ScreenSaverNotify</emphasis></entry>
+      <entry>
+If this bit is set, <emphasis role="bold">ScreenSaverNotify</emphasis> events are generated whenever
+the screen saver is activated or deactivated.
+      </entry>
+    </row>
+    <row>
+      <entry><emphasis role="bold">ScreenSaverCycle</emphasis></entry>
+      <entry>
+If this bit is set, <emphasis role="bold">ScreenSaverNotify</emphasis> events are generated whenever
+the screen saver cycle interval passes.
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+If <emphasis remap='I'>drawable</emphasis> is not a valid drawable identifier, a Drawable
+error is returned.  If any undefined bits are set in <emphasis remap='I'>event-mask</emphasis>,
+a Value error is returned.  If an error is returned,
+the request is ignored.
+</para>
+
+<para>
+<emphasis role="bold">ScreenSaverSetAttributes</emphasis>
+</para>
+<literallayout>
+drawable: DRAWABLE
+class:
+{<emphasis role="bold">InputOutput</emphasis>, <emphasis role="bold">InputOnly</emphasis>, <emphasis role="bold">CopyFromParent</emphasis>}
+depth: CARD8
+visual: VISUALID or <emphasis role="bold">CopyFromParent</emphasis>
+x, y: INT16
+width, height, border-width: CARD16
+value-mask: BITMASK
+value-list: LISTofVALUE
+
+<emphasis role="bold">Access</emphasis>, <emphasis role="bold">Window</emphasis>, <emphasis role="bold">Pixmap</emphasis>, <emphasis role="bold">Colormap</emphasis>, <emphasis role="bold">Cursor</emphasis>, <emphasis role="bold">Match</emphasis>, <emphasis role="bold">Value</emphasis>, <emphasis role="bold">Alloc</emphasis>
+</literallayout>
+
+<para>
+This request sets the attributes that this client would like to see
+used in creating the screen saver window on the screen associated
+with <emphasis remap='I'>drawable</emphasis>.  If another client currently has the attributes set,
+an Access error is generated and the request is ignored.
+</para>
+
+<para>
+Otherwise, the specified window attributes are checked as if
+they were used in a core <function>CreateWindow</function> request whose
+parent is the root.  The <emphasis remap='I'>override-redirect</emphasis> field is ignored as
+it is implicitly set to True.  If the window attributes result in an
+error according to the rules for <function>CreateWindow</function>, the request is ignored.
+</para>
+<para>
+Otherwise, the attributes are stored and will take effect on the next
+activation that occurs when the server is not grabbed by another client.
+Any resources specified for the
+<emphasis remap='I'>background-pixmap</emphasis> or <emphasis remap='I'>cursor</emphasis> attributes may be
+freed immediately.  The server is free to copy the <emphasis remap='I'>background-pixmap</emphasis>
+or <emphasis remap='I'>cursor</emphasis> resources or to use them in place; therefore, the effect of
+changing the contents of those resources is undefined.  If the
+specified <emphasis remap='I'>colormap</emphasis> no longer exists when the screen saver activates,
+the parent's colormap is used instead.  If no errors are generated by this
+request, any previous
+screen saver window attributes set by this client are released.
+</para>
+<para>
+When the screen saver next activates and the server is not grabbed by
+another client, the screen saver window is
+created, if necessary, and set to the specified attributes and events
+are generated as usual.  The colormap
+associated with the screen saver window is
+installed.  Finally, the screen saver window is mapped.
+</para>
+<para>
+The window remains mapped and at the top of the stacking order
+until the screen saver is deactivated in response to activity on
+any of the user input devices, a <function>ForceScreenSaver</function> request with
+a value of Reset, or any request that would cause the window to be
+unmapped.
+</para>
+<para>
+If the screen saver activates while the server is grabbed by another
+client, the internal saver mechanism is used.  The <function>ForceScreenSaver</function>
+request may be used with a value of Active to
+deactivate the internal saver and activate the external saver.
+</para>
+<para>
+If the screen saver client's connection to the server is broken
+while the screen saver is activated and the client's close down mode has not
+been RetainPermanent or RetainTemporary, the current screen saver
+is deactivated and the internal screen saver is immediately activated.
+</para>
+<para>
+When the screen saver deactivates, the screen saver window's colormap
+is uninstalled and the window is unmapped (except as described below).
+The screen saver XID is disassociated
+with the window and the server may, but is not required to,
+destroy the window along with any children.
+</para>
+<para>
+When the screen saver is being deactivated and then immediately
+reactivated (such as when switching screen savers), the server
+may leave the screen saver window mapped (typically to avoid
+generating exposures).
+</para>
+
+<para>
+<emphasis role="bold">ScreenSaverUnsetAttributes</emphasis>
+</para>
+
+<literallayout>
+<emphasis>drawble</emphasis>: <emphasis role="bold">DRAWABLE</emphasis>
+
+Errors: <emphasis role="bold">Drawable</emphasis>
+</literallayout>
+
+<para>
+This request notifies the server that this client no longer
+wishes to control the screen saver window.  Any screen saver
+attributes set by this client and any descendents of the screen
+saver window created by this client should be released
+immediately if the screen saver is not active, else upon
+deactivation.
+</para>
+<para>
+This request is ignored if the client has not previously set the screen saver
+window attributes.
+</para>
+</sect1>
+
+<sect1 id="Events">
+<title>Events</title>
+<para>
+The Screen Saver extension adds one event:
+</para>
+<para>
+<emphasis role="bold">ScreenSaverNotify</emphasis>
+</para>
+
+<literallayout>
+<emphasis role="bold">root</emphasis>: WINDOW
+<emphasis role="bold">window</emphasis>: WINDOW
+<emphasis role="bold">state</emphasis>: {<emphasis role="bold">Off</emphasis>, <emphasis role="bold">On</emphasis>, <emphasis role="bold">Cycle</emphasis>}
+<emphasis role="bold">kind</emphasis>: { <emphasis role="bold">Blanked</emphasis>, <emphasis role="bold">Internal</emphasis> , <emphasis role="bold">External</emphasis> }
+<emphasis role="bold">forced</emphasis>: BOOL
+<emphasis role="bold">time</emphasis>: TIMESTAMP
+</literallayout>
+<para>
+This event is delivered to clients that have requested
+ScreenSaverNotify events using the <function>ScreenSaverSelectInput</function> request
+whenever the screen saver activates or deactivates.
+</para>
+<para>
+The <emphasis remap='I'>root</emphasis> field specifies root window of the screen for
+which the event was generated.  The <emphasis remap='I'>window</emphasis> field specifies
+the value that is returned by <function>ScreenSaverQueryInfo</function> as
+the identifier for the screen saver window.  This window is not
+required to exist if the external screen saver is not active.
+</para>
+<para>
+The <emphasis remap='I'>state</emphasis> field specifies the cause of the event:
+</para>
+
+<informaltable frame="none">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <colspec colname='c2' colwidth="5.0*"/>
+  <tbody>
+    <row>
+      <entry><emphasis role="bold">Off</emphasis></entry>
+      <entry>
+The screen saver deactivated; this event is sent if the client has set the
+ScreenSaverNotify bit in its event mask.
+      </entry>
+    </row>
+    <row>
+      <entry><emphasis role="bold">On</emphasis></entry>
+      <entry>
+The screen saver activated.  This event is sent if the client has set the
+ScreenSaverNotify bit in its event mask.
+      </entry>
+    </row>
+    <row>
+      <entry><emphasis role="bold">Cycle</emphasis></entry>
+      <entry>
+The cycle interval passed and the client is expected to change the image on
+the screen.  This event is sent if the client has set the
+ScreenSaverCycle bit in its event mask.
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+If <emphasis remap='I'>state</emphasis> is set to
+<emphasis role="bold">On </emphasis> or
+<emphasis role="bold">Off</emphasis>
+then <emphasis remap='I'>forced</emphasis> indicates whether or not
+activation or deactivation was caused by a core
+<function>ForceScreenSaver</function>
+request; otherwise, <emphasis remap='I'>forced</emphasis> is set to False.
+</para>
+
+<para>
+The <emphasis remap='I'>kind</emphasis> field specifies mechanism that was used to save the screen
+when the screen saver was activated, as described in
+<function>ScreenSaverQueryInfo</function>.
+</para>
+
+<para>
+The <emphasis remap='I'>time</emphasis> field indicates the server time
+when the event was generated.
+</para>
+</sect1>
+</chapter>
+
+<chapter id="Encoding">
+<title>Encoding</title>
+<para>
+Please refer to the X11 Protocol Encoding document as this document uses
+conventions established there.
+</para>
+<para>
+The name of this extension is "SCREEN-SAVER".
+</para>
+
+<sect1 id="Common_Types">
+<title>Common Types</title>
+<literallayout class="monospaced">
+SETofSCREENSAVEREVENT
+     #x00000001     ScreenSaverNotifyMask
+     #x00000002     ScreenSaverCycleMask
+</literallayout>
+</sect1>
+
+<sect1 id="Requests_2">
+<title>Requests</title>
+<literallayout class="monospaced">
+<emphasis role="bold">ScreenSaverQueryVersion</emphasis>
+1     CARD8                   screen saver opcode
+1     0                       minor opcode
+2     2                       request length
+1     CARD8                   client major version
+1     CARD8                   client minor version
+2                             unused
+->
+1     1                       Reply
+1                             unused
+2     CARD16                  sequence number
+4     0                       reply length
+1     CARD8                   server major version
+1     CARD8                   server minor version
+22                            unused
+
+<emphasis role="bold">ScreenSaverQueryInfo</emphasis>
+1     CARD8                   screen saver opcode
+1     1                       minor opcode
+2     2                       request length
+4     DRAWABLE                drawable associated with screen
+->
+1     1                       Reply
+1     CARD8                   state
+      0          Off
+      1          On
+      3          Disabled
+2     CARD16                  sequence number
+4     0                       reply length
+4     WINDOW                  saver window
+4     CARD32                  milliseconds until saver or since saver
+4     CARD32                  milliseconds since last user device input
+4     SETofSCREENSAVEREVENT   event mask
+1     CARD8                   kind
+      0          Blanked
+      1          Internal
+      2          External
+10               unused
+
+<emphasis role="bold">ScreenSaverSelectInput</emphasis>
+1     CARD8                   screen saver opcode
+1     2                       minor opcode
+2     3                       request length
+4     DRAWABLE                drawable associated with screen
+4     SETofSCREENSAVEREVENT   event mask
+
+<emphasis role="bold">ScreenSaverSetAttributes</emphasis>
+1     CARD8                   screen saver opcode
+1     3                       minor opcode
+2     6+n                     request length
+4     DRAWABLE                drawable associated with screen
+2     INT16                   x
+2     INT16                   y
+2     CARD16                  width
+2     CARD16                  height
+2     CARD16                  border-width
+1                             class
+      0          CopyFromParent
+      1          InputOutput
+      2          InputOnly
+1     CARD8                   depth
+4     VISUALID                visual
+      0          CopyFromParent
+4     BITMASK                 value-mask (has n bits set to 1)
+      encodings are the same as for core CreateWindow
+4n    LISTofVALUE             value-list
+      encodings are the same as for core CreateWindow
+
+<emphasis role="bold">ScreenSaverUnsetAttributes</emphasis>
+1     CARD8                   screen saver opcode
+1     4                       minor opcode
+2     3                       request length
+4     DRAWABLE                drawable associated with screen
+</literallayout>
+</sect1>
+
+<sect1 id="Events_2">
+<title>Events</title>
+
+<literallayout class="monospaced">
+<emphasis role="bold">ScreenSaverNotify</emphasis>
+1     CARD8                   code assigned by core
+1     CARD8                   state
+      0          Off
+      1          On
+      2          Cycle
+2     CARD16                  sequence number
+4     TIMESTAMP               time
+4     WINDOW                  root
+4     WINDOW                  screen saver window
+1     CARD8                   kind
+      0          Blanked
+      1          Internal
+      2          External
+1     BOOL                    forced
+14                            unused
+</literallayout>
+</sect1>
+</chapter>
+
+<chapter id='Inter_Client_Communications_Conventions'>
+<title>Inter-Client Communications Conventions</title>
+<para>
+Screen saver clients should create at least one resource value whose
+identifier can be stored in a property named
+<emphasis role="bold">_SCREEN_SAVER_ID</emphasis>
+on the root of each screen it is managing.
+This property should have one 32-bit value corresponding to the resource
+identifier; the type of the property should indicate the type of the
+resource and should be one of the following:
+<emphasis role="bold">WINDOW</emphasis>,
+<emphasis role="bold">PIXMAP</emphasis>,
+<emphasis role="bold">CURSOR</emphasis>,
+<emphasis role="bold">FONT</emphasis>, or
+<emphasis role="bold">COLORMAP</emphasis>.
+</para>
+</chapter>
+
+<chapter id="C_language_binding">
+<title>C language binding</title>
+
+<para>
+The C binding for this extension simply provide access to the protocol; they
+add no semantics beyond what is described above.
+</para>
+
+<para>
+The include file for this extension is
+<emphasis role="bold">&lt;X11/extensions/scrnsaver.h&gt;</emphasis>.
+</para>
+
+
+<funcsynopsis id='XScreenSaverQueryExtension'>
+<funcprototype>
+  <funcdef>Bool <function>XScreenSaverQueryExtension</function></funcdef>
+    <paramdef>Display <parameter>*display</parameter></paramdef>
+    <paramdef>int <parameter>*event_base</parameter></paramdef>
+    <paramdef>int <parameter>*error_base</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+<para>
+This routine returns
+<emphasis role="bold">True</emphasis>
+if the specified <emphasis remap='I'>display</emphasis> supports the
+SCREEN-SAVER extension; otherwise it returns
+<emphasis role="bold">False</emphasis>.
+If the extension is supported, the event number for
+<function>ScreenSaverNotify</function>
+events is returned in the value pointed to by
+<emphasis remap='I'>event_base</emphasis>.  Since
+no additional errors are defined by this extension, the results
+of <emphasis remap='I'>error_base</emphasis> are not defined.
+</para>
+
+<funcsynopsis id='XScreenSaverQueryVersion'>
+<funcprototype>
+  <funcdef>Status <function>XScreenSaverQueryVersion</function></funcdef>
+    <paramdef>Display <parameter>*display</parameter></paramdef>
+    <paramdef>int <parameter>*major</parameter></paramdef>
+    <paramdef>int <parameter>*minor</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+<para>
+If the specified <emphasis remap='I'>display</emphasis> supports the
+extension, the version numbers of the protocol
+expected by the server are returned in
+<emphasis remap='I'>major</emphasis> and
+<emphasis remap='I'>minor</emphasis> and
+a non-zero value is returned.  Otherwise, the arguments are not
+set and 0 is returned.
+</para>
+
+<para>XScreenSaverInfo *</para>
+<para>XScreenSaverAllocInfo()</para>
+
+<para>
+This routine allocates and returns an
+<emphasis role="bold">XScreenSaverInfo</emphasis> structure
+for use in calls to <xref linkend='XScreenSaverQueryInfo' xrefstyle='select: title'/>.
+All fields in the
+structure are initialized to zero.  If insufficient memory is available,
+NULL is returned.  The results of this routine can be released
+using <function>XFree</function>.
+</para>
+
+<funcsynopsis id='XScreenSaverQueryInfo'>
+<funcprototype>
+  <funcdef>Status <function>XScreenSaverQueryInfo</function></funcdef>
+    <paramdef>Display <parameter>*display</parameter></paramdef>
+    <paramdef>Drawable <parameter>drawable</parameter></paramdef>
+    <paramdef>XScreenSaverInfo <parameter>*saver_info</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+<para>
+If the specified <emphasis remap='I'>display</emphasis> supports the extension,
+information about the current state of the
+screen server is returned in <emphasis remap='I'>saver_info</emphasis> and a non-zero value is
+returned.  The <function>XScreenSaverInfo</function> structure is
+defined as follows:
+</para>
+
+<literallayout class="monospaced">
+typedef struct {
+    Window window;                /* screen saver window */
+    int state;                    /* ScreenSaver{Off,On,Disabled} */
+    int kind;                     /* ScreenSaver{Blanked,Internal,External} */
+    unsigned long til_or_since;   /* milliseconds */
+    unsigned long idle;           /* milliseconds */
+    unsigned long event_mask;     /* events */
+} XScreenSaverInfo;
+</literallayout>
+
+<para>
+See the <function>ScreenSaverQueryInfo</function> request for a
+description of the fields.  If the extension is not supported,
+<emphasis remap='I'>saver_info</emphasis> is not changed and 0
+is returned.
+</para>
+
+<funcsynopsis id='XScreenSaverSelectInput'>
+<funcprototype>
+  <funcdef>void <function>XScreenSaverSelectInput</function></funcdef>
+    <paramdef>Display <parameter>*display</parameter></paramdef>
+    <paramdef>Drawable <parameter>drawable</parameter></paramdef>
+    <paramdef>unsigned long <parameter>event_mask</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+<para>
+If the specified <emphasis remap='I'>display</emphasis> supports the extension,
+this routine asks that events related to
+the screen saver be generated for this client.
+The format of the events generated is:
+</para>
+
+<literallayout class="monospaced">
+typedef struct {
+    int type;               /* of event */
+    unsigned long serial;   /* # of last request processed by server */
+    Bool send_event;        /* true if this came from a SendEvent request */
+    Display *display;       /* Display the event was read from */
+    Window window;          /* screen saver window */
+    Window root;            /* root window of event screen */
+    int state;              /* ScreenSaver{Off,On,Cycle} */
+    int kind;               /* ScreenSaver{Blanked,Internal,External} */
+    Bool forced;            /* extents of new region */
+    Time time;              /* event timestamp */
+} XScreenSaverNotifyEvent;
+</literallayout>
+
+<para>
+See the definition of the
+<function>ScreenSaverSelectInput</function> request for descriptions
+of the allowed event masks.   <!-- xref ? -->
+</para>
+
+<funcsynopsis id='XScreenSaverSetAttributes'>
+<funcprototype>
+  <funcdef>void <function>XScreenSaverSetAttributes</function></funcdef>
+    <paramdef>Display <parameter>*dpy</parameter></paramdef>
+    <paramdef>Drawable <parameter>drawable</parameter></paramdef>
+    <paramdef>int <parameter>x</parameter></paramdef>
+    <paramdef>int <parameter>y</parameter></paramdef>
+    <paramdef>unsigned int <parameter>width</parameter></paramdef>
+    <paramdef>unsigned int <parameter>height</parameter></paramdef>
+    <paramdef>unsigned int <parameter>border_width</parameter></paramdef>
+    <paramdef>int <parameter>depth</parameter></paramdef>
+    <paramdef>unsigned int <parameter>class</parameter></paramdef>
+    <paramdef>Visual <parameter>*visual</parameter></paramdef>
+    <paramdef>unsigned long <parameter>valuemask</parameter></paramdef>
+    <paramdef>XSetWindowAttributes <parameter>*attributes</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+<para>
+If the specified <emphasis remap='I'>display</emphasis> supports the
+extension, this routine sets the attributes to be used
+the next time the external screen saver is activated.  See the definition
+of the <function>ScreenSaverSetAttributes</function> request for a
+description of each of the arguments.
+</para>
+
+<funcsynopsis id='XScreenSaverUnsetAttributes'>
+<funcprototype>
+  <funcdef>void <function>XScreenSaverUnsetAttributes</function></funcdef>
+    <paramdef>Display <parameter>*display</parameter></paramdef>
+    <paramdef>Drawable <parameter>drawable</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+<para>
+If the specified <emphasis remap='I'>display</emphasis> supports the
+extension, this routine instructs the server to discard
+any previous screen saver window attributes set by this client.
+</para>
+
+<funcsynopsis id='XScreenSaverRegister'>
+<funcprototype>
+  <funcdef>Status <function>XScreenSaverRegister</function></funcdef>
+    <paramdef>Display <parameter>*display</parameter></paramdef>
+    <paramdef>int <parameter>screen</parameter></paramdef>
+    <paramdef>XID <parameter>xid</parameter></paramdef>
+    <paramdef>Atom <parameter>type</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+<para>
+This routine stores the given <emphasis remap='I'>XID</emphasis> in the
+<emphasis role="bold">_SCREEN_SAVER_ID</emphasis> property (of the given
+<emphasis remap='I'>type</emphasis>) on the root window of the specified
+<emphasis remap='I'>screen</emphasis>.  It returns zero if an error
+is encountered and the property is not changed, otherwise it returns
+non-zero.
+</para>
+
+<funcsynopsis id='XScreenSaverUnregister'>
+<funcprototype>
+  <funcdef>Status <function>XScreenSaverUnregister</function></funcdef>
+    <paramdef>Display <parameter>*display</parameter></paramdef>
+    <paramdef>int <parameter>screen</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+<para>
+This routine removes any <function>_SCREEN_SAVER_ID</function> from the
+root window of the specified <emphasis remap='I'>screen</emphasis>.
+It returns zero if an error is encountered and the property is changed,
+otherwise it returns non-zero.
+</para>
+
+<funcsynopsis id='XScreenSaverGetRegistered'>
+<funcprototype>
+  <funcdef>Status <function>XScreenSaverGetRegistered</function></funcdef>
+    <paramdef>Display <parameter>*display</parameter></paramdef>
+    <paramdef>int <parameter>screen</parameter></paramdef>
+    <paramdef>XID <parameter>*xid</parameter></paramdef>
+    <paramdef>ATOM <parameter>*type</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+
+<para>
+This routine returns the
+<emphasis remap='I'>XID</emphasis> and
+<emphasis remap='I'>type</emphasis> stored in the
+<emphasis role="bold">_SCREEN_SAVER_ID</emphasis> property on the
+root window of the specified <emphasis remap='I'>screen</emphasis>.
+It returns zero if an error
+is encountered or if the property does not exist or is not of the correct
+format; otherwise it returns non-zero.
+</para>
+
+</chapter>
+</book>
Index: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/scrnsaverproto
===================================================================
--- xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/scrnsaverproto	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/scrnsaverproto	(revision 5)

Property changes on: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/scrnsaverproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/xextproto/dpms.xml
===================================================================
--- xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/xextproto/dpms.xml	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/xextproto/dpms.xml	(revision 5)
@@ -0,0 +1,663 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+                   "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+<!ENTITY % defs SYSTEM "defs.ent"> %defs;
+]>
+
+<book id="dpms">
+
+<bookinfo>
+   <title>X Display Power Management Signaling (DPMS) Extension Protocol Specification</title>
+   <subtitle>X Project Team Standard</subtitle>
+   <authorgroup>
+      <author>
+         <firstname>Rob </firstname><surname>Lembree</surname>
+         <affiliation><orgname>Digital Equipment Corporation</orgname></affiliation>
+         <email>lembree@zk3.dec.com</email>
+      </author>
+   </authorgroup>
+   <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo>
+   <releaseinfo>Version 1.0</releaseinfo>
+   <copyright><year>1996</year><holder>Digital Equipment Corporation</holder></copyright>
+
+<legalnotice>
+<para>
+Permission to use, copy, modify, distribute, and sell this
+documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice and this permission
+notice appear in all copies.  Digital Equipment Corporation
+makes no representations about the suitability for any purpose
+of the information in this document.  This documentation is
+provided &ldquo;as is&rdquo; without express or implied warranty.
+</para>
+
+</legalnotice>
+</bookinfo>
+
+<chapter id="Overview">
+<title>Overview</title>
+<para>
+This extension provides X Protocol control over the VESA Display
+Power Management Signaling (DPMS) characteristics of video boards
+under control of the X Window System.<footnote>
+<para>
+<emphasis remap='I'>X Window System</emphasis> is a trademark of The Open Group.
+</para>
+</footnote>
+</para>
+
+
+<para>
+<!-- .LP -->
+Traditionally, the X Window System has provided for both blanking and
+non-blanking screen savers.  Timeouts associated with these built-in
+screen saver mechanisms are limited to idle (dwell) time, and a change
+timeout that specifies the change interval for non-blanking screen savers.
+</para>
+<para>
+<!-- .LP -->
+The United States' Environmental Protection Agency (EPA) Energy Star program
+requires that monitors power down after some idle time by default.
+While it is possible to simply overload the existing screen saver timeouts,
+this solution leaves the non-privileged user little to no control over
+the DPMS characteristics of his or her system.  For example, disabling
+DPMS would require some unintended side effect in the core screen saver,
+such as disabling the changing of a non-blanking screen saver.  Providing
+clients with this control requires an extension to the core X Window System
+Protocol, and this extension seeks to fill this gap.
+</para>
+<para>
+<!-- .LP -->
+The design goal of the DPMS extension is to be a logical extension to
+the traditional screen saver.  The protocol and sample implementation is
+designed to use the same date types and time units as the screen saver.
+The sample implementation works independently from the screen saver so that
+policy as it pertains to the interaction between screen saver and DPMS can
+be deferred to the user or screen saver application. The extension has
+been tested with and shown to work correctly with both the internal blanking
+and non-blanking screen savers, as well as with screen saver extension
+clients.
+</para>
+<para>
+The DPMS extension is designed to be simple, yet export sufficient
+VESA DPMS information to enable full function clients to be written.
+Included is the ability to sense DPMS capability, set and get DPMS timeouts,
+enable and disable individual DPMS modes, enable and disable DPMS (without
+destroying timeout values), and sense current DPMS on/off state and
+power level.
+</para>
+<para>
+There are four power levels specified by the Video Electronics Standards
+Association (VESA) Display Power Management Signaling (DPMS) standard.
+These are:
+</para>
+
+<literallayout class="monospaced">
+<function>DPMS Extension Power Levels</function>
+     0     DPMSModeOn          In use
+     1     DPMSModeStandby     Blanked, low power
+     2     DPMSModeSuspend     Blanked, lower power
+     3     DPMSModeOff         Shut off, awaiting activity
+</literallayout>
+
+<para>
+It is logical to assume that successive DPMS modes be chronologically
+at the same time or later than one another, and the protocol is designed
+to enforce this rule.
+</para>
+
+<para>
+Note however that a conscious decision is made to decouple the timeouts
+associated with screen saver from the DPMS timeouts.  While it might be
+considered logical to require that the first non-zero DPMS timeout be
+greater than or equal to the screen saver timeout, this is intentionally
+omitted, leaving this policy decision to the user or the screen saver
+application.  In the case of a laptop where power may be scarce, the
+importance of power savings should supersede the screen saver.  If the
+laptop user plugs the unit in and power is no longer a scarce commodity,
+it may be decided to make DPMS less aggressive, or disable it completely.
+</para>
+</chapter>
+
+<chapter id="Requests">
+<title>Requests</title>
+<para>
+<function>DPMSGetVersion</function>
+</para>
+
+<informaltable frame="none">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>
+<emphasis remap='I'>client_major_version</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>client_minor_version</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>=&gt;</entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>server_major_version</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>server_minor_version</emphasis>: CARD16
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+If supplied, the <emphasis remap='I'>client_major_version</emphasis> and
+<emphasis remap='I'>client_minor_version</emphasis> indicate what version
+of the protocol the
+client wants the server to implement.  The server version numbers
+returned indicate the protocol this extension actually supports.  This
+might not equal the version sent by the client.  An implementation can
+(but need not) support more than one version simultaneously.  The
+<emphasis remap='I'>server_major_version</emphasis> and the
+<emphasis remap='I'>server_minor_version</emphasis> are a
+mechanism to support future revisions of the Display Power Management
+Signaling protocol which may be necessary.  In general, the major version
+would increment for incompatible changes, and the minor version would
+increment for small, upward-compatible changes.  Servers that support the
+protocol defined in this document will return a
+<emphasis remap='I'>server_major_version</emphasis>
+of one (1), and a <emphasis remap='I'>server_minor_version</emphasis>
+of two (2).
+</para>
+
+<para>
+<function>DPMSCapable</function>
+</para>
+
+<informaltable frame="none">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>=&gt;</entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>capable</emphasis>: BOOL
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+This request is used to determine whether or not the currently running
+server's devices are capable of DPMS operations.  The truth value of this
+request is implementation defined, but is generally based on the capabilities
+of the graphic card and monitor combination.  Also, the return value in the
+case of heterogeneous multi-head servers is implementation defined.
+</para>
+
+<para>
+<function>DPMSGetTimeouts</function>
+</para>
+
+<informaltable frame="none">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>=&gt;</entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>standby_timeout</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>suspend_timeout</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>off_timeout</emphasis>: CARD16
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+This request returns the current values of the DPMS timeout values.  All
+values are in units of seconds.
+</para>
+
+<para>
+<emphasis remap='I'>standby_timeout</emphasis> is the amount of time
+of inactivity before standby
+mode is invoked. The actual effects of this mode are implementation defined,
+but in the case of DPMS compliant hardware, it is implemented by shutting off
+the horizontal sync signal, and pulsing the vertical sync signal. Standby
+mode provides the quickest monitor recovery time.  Note also that many
+monitors implement this mode identically to suspend mode.  A value of
+zero indicates that this mode is disabled.
+</para>
+
+<para>
+<emphasis remap='I'>suspend_timeout</emphasis> is the amount of time
+of inactivity before the second
+level of power savings is invoked. Suspend mode's physical and electrical
+characteristics are implementation defined, but in DPMS compliant hardware,
+results in the pulsing of the horizontal sync signal, and shutting off of
+the vertical sync signal.  Suspend mode recovery is considered to be slower
+than standby mode, but faster than off mode, however this is monitor
+dependent.  As noted above, many monitors implement this mode identically to
+standby mode.  A value of zero indicates that this mode is disabled.
+</para>
+
+<para>
+<emphasis remap='I'>off_timeout</emphasis> is the amount of time of
+inactivity before the third and
+final level of power savings is invoked. Off mode's physical and electrical
+characteristics are implementation defined, but in DPMS compliant hardware,
+is implemented by shutting off both horizontal and vertical sync signals,
+resulting in the power-down of the monitor.  Recovery time is implementation
+dependent, but frequently is similar to the power-up time of the monitor. A
+value of zero indicates that this mode is disabled.
+</para>
+
+<para>
+<function>DPMSSetTimeouts</function>
+</para>
+
+<informaltable frame="none">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>
+<emphasis remap='I'>standby_timeout</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>suspend_timeout</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>off_timeout</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>=&gt;</entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+
+<para>
+All values are in units of seconds.
+<emphasis remap='I'>standby_timeout</emphasis> is the amount of
+time of inactivity before standby mode will be invoked. This is the
+lightest level of power savings, and the monitor is generally immediately
+ready upon detection of user activity.  This is most often implemented by
+shutting off the horizontal sync signal to the monitor.
+A value of zero disables this mode.
+</para>
+
+<para>
+The <emphasis remap='I'>suspend_timeout</emphasis> specifies the amount
+of time of inactivity
+before the screen is placed into suspend mode.  Suspend mode is the
+middle level of power savings, resulting in a slightly longer recovery
+upon detection of activity.  Suspend mode is most often implemented by
+pulsing the horizontal sync signal, and removing the vertical sync
+signal. A value of zero disables this mode.
+</para>
+
+<para>
+The <emphasis remap='I'>off_timeout</emphasis> specifies the amount of
+time of inactivity before
+the monitor is shut off.  Off mode is the deepest level of power management,
+resulting in the greatest power savings and the longest recovery time.
+Off mode is most often implemented by removing both the horizontal and
+vertical signals. A value of zero disables this mode.
+</para>
+<para>
+The values of successive power levels must be greater than or equal
+to the value of the previous (non-zero) level.  A BadValue error is generated
+if an illegal combination is detected.
+</para>
+<para>
+<function>DPMSEnable</function>
+</para>
+<para>
+=&gt;
+</para>
+
+<para>
+This request enables the DPMS characteristics of the server, using the
+server's currently stored timeouts.  If DPMS is already enabled, no change is
+effected.
+</para>
+
+<para>
+<function>DPMSDisable</function>
+</para>
+<para>
+=&gt;
+</para>
+
+<para>
+This request disables the DPMS characteristics of the server.  It does
+not affect the core or extension screen savers.  If DPMS is already
+disabled, no change is effected.  This request is provided so that DPMS
+may be disabled without damaging the server's stored timeout values.
+</para>
+
+<para>
+<function>DPMSForceLevel</function>
+</para>
+
+<informaltable frame="none">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>
+<emphasis remap='I'>power_level</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>=&gt;</entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+This request forces a specific DPMS level on the server.  If DPMS is
+disabled, a BadMatch error is generated.  If an erroneous power level
+is specified, a BadValue error is returned, and the error value contains
+the bad value.  If the power level specified is already in effect, no
+changes occur.  Power Level must be one of DPMSModeOn, DPMSModeStandby,
+DPMSModeSuspend or DPMSModeOff.
+</para>
+
+<para>
+<function>DPMSInfo</function>
+</para>
+
+<informaltable frame="none">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>=&gt;</entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>power_level</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>state</emphasis>: BOOL
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+This request returns information about the current DPMS state of the
+display.  <emphasis remap='I'>state</emphasis> is one of DPMSEnabled
+or DPMSDisabled.
+If <emphasis remap='I'>state</emphasis> is DPMSEnabled,
+<emphasis remap='I'>power_level</emphasis> is returned as one
+of DPMSModeOn, DPMSModeStandby, DPMSModeSuspend or DPMSModeOff, otherwise
+it is undefined.
+</para>
+
+<para>
+<function>DPMSSelectInput</function>
+</para>
+
+<informaltable frame="none">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>
+<emphasis remap='I'>event_mask</emphasis>: CARD32
+      </entry>
+    </row>
+    <row>
+      <entry>=&gt;</entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+This request specifies whether DPMS extension events should be generated for this client.
+If DPMSInfoNotifyMask is set in <emphasis remap='I'>event-mask</emphasis>, then DPMSInfoNotifyEvent
+events will be generated whenever the current DPMS on/off state or power level changes.
+If no bits are set, then no events will be generated.
+</para>
+
+</chapter>
+
+<chapter id="Events">
+
+<title>Events</title>
+<para>
+The DPMS extension adds one event:
+</para>
+<para>
+<function>DPMSInfoNotifyEvent</function>
+</para>
+
+<informaltable frame="none">
+  <?dbfo keep-together="always" ?>
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>
+<emphasis remap='I'>timestamp</emphasis>: TIMESTAMP
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>power_level</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>state</emphasis>: BOOL
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+This event is delivered to clients that have requested
+DPMSInfoNotifyMask events using the <function>DPMSSelectInput</function> request
+whenever the current DPMS on/off state or power level changes.
+<emphasis remap='I'>state</emphasis> is one of DPMSEnabled or DPMSDisabled.
+If <emphasis remap='I'>state</emphasis> is DPMSEnabled,
+<emphasis remap='I'>power_level</emphasis> is one
+of DPMSModeOn, DPMSModeStandby, DPMSModeSuspend or DPMSModeOff, otherwise
+it is undefined.
+</para>
+
+</chapter>
+
+<chapter id="Encoding">
+<title>Encoding</title>
+<para>
+Please refer to the X11 Protocol Encoding document as this document uses
+conventions established there.
+</para>
+
+<para>
+The name of this extension is "DPMS".
+</para>
+
+<literallayout class="monospaced">
+<function>DPMSGetVersion</function>
+     1     CARD8         opcode
+     1     0             DPMS opcode
+     2     2             request length
+     2     CARD16        client_major_version
+     2     CARD16        client_minor_version
+=&gt;
+     1     1             Reply
+     1                   unused
+     2     CARD16        sequence number
+     4     0             length
+     2     CARD16        server_major_version
+     2     CARD16        server_minor_version
+     20                  unused
+</literallayout>
+
+<literallayout class="monospaced">
+<function>DPMSCapable</function>
+     1     CARD8         opcode
+     1     1             DPMS opcode
+     2     1             request length
+=&gt;
+     1     1             Reply
+     1                   unused
+     2     CARD16        sequence number
+     4     0             length
+     1     BOOL          capable
+     23                  unused
+</literallayout>
+
+<literallayout class="monospaced">
+<function>DPMSGetTimeouts</function>
+     1     CARD8         opcode
+     1     2             DPMS opcode
+     2     1             request length
+=&gt;
+     1     1             Reply
+     1                   unused
+     2     CARD16        sequence number
+     4     0             length
+     2     CARD16        standby_timeout
+     2     CARD16        suspend_timeout
+     2     CARD16        off_timeout
+     18                  unused
+</literallayout>
+
+<literallayout class="monospaced">
+<function>DPMSSetTimeouts</function>
+     1     CARD8         opcode
+     1     3             DPMS opcode
+     2     3             request length
+     2     CARD16        standby_timeout
+     2     CARD16        suspend_timeout
+     2     CARD16        off_timeout
+     2                   unused
+=&gt;
+</literallayout>
+
+<literallayout class="monospaced">
+<function>DPMSEnable</function>
+     1     CARD8         opcode
+     1     4             DPMS opcode
+     2     1             request length
+ =&gt;
+</literallayout>
+
+<literallayout class="monospaced">
+<function>DPMSDisable</function>
+     1     CARD8         opcode
+     1     5             DPMS opcode
+     2     1             request length
+ =&gt;
+</literallayout>
+
+<literallayout class="monospaced">
+<function>DPMSForceLevel</function>
+     1     CARD8         opcode
+     1     6             DPMS opcode
+     2     2             request length
+     2                   power_level
+          0     DPMSModeOn
+          1     DPMSModeStandby
+          2     DPMSModeSuspend
+          3     DPMSModeOff
+     2                   unused
+=&gt;
+</literallayout>
+
+<literallayout class="monospaced">
+<function>DPMSInfo</function>
+     1     CARD8         opcode
+     1     7             DPMS opcode
+     2     1             request length
+=&gt;
+     1     1             Reply
+     1                   unused
+     2     CARD16        sequence number
+     4     0             length
+     2                   power_level
+           0     DPMSModeOn
+           1     DPMSModeStandby
+           2     DPMSModeSuspend
+           3     DPMSModeOff
+     1     BOOL          state
+     21                  unused
+
+</literallayout>
+
+<literallayout class="monospaced">
+<function>DPMSSelectInput</function>
+     1     CARD8         opcode
+     1     8             DPMS opcode
+     2     2             request length
+     4                   event mask
+           0     no events
+           1     DPMSInfoNotifyMask
+</literallayout>
+
+<literallayout class="monospaced">
+<function>DPMSInfoNotifyEvent</function>
+     1     GenericEvent    type
+     1     CARD8           DPMS extension offset
+     2     CARD16          sequence number
+     4     0               length
+     2     DPMSInfoNotify  evtype
+     2                     unused
+     4     TIMESTAMP       timestamp
+     2                     power_level
+           0     DPMSModeOn
+           1     DPMSModeStandby
+           2     DPMSModeSuspend
+           3     DPMSModeOff
+     1     BOOL            state
+     13                    unused
+</literallayout>
+</chapter>
+</book>
Index: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/xextproto/xtest.xml
===================================================================
--- xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/xextproto/xtest.xml	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/xextproto/xtest.xml	(revision 5)
@@ -0,0 +1,723 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+                   "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+<!ENTITY % defs SYSTEM "defs.ent"> %defs;
+]>
+
+<book id="xtest">
+
+<bookinfo>
+   <title>XTEST Extension Protocol</title>
+   <subtitle>X Consortium Standard</subtitle>
+   <authorgroup>
+      <author>
+         <firstname>Kieron</firstname><surname>Drake</surname>
+         <affiliation><orgname>UniSoft Ltd.</orgname></affiliation>
+      </author>
+   </authorgroup>
+   <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo>
+   <releaseinfo>Version 2.2</releaseinfo>
+   <copyright><year>1992</year><holder>UniSoft Group Ltd.</holder></copyright>
+   <copyright><year>1992</year><year>1994</year><holder>X Consortium</holder></copyright>
+
+<legalnotice>
+<para>
+Permission to use, copy, modify, and distribute this documentation for any
+purpose and without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies.  UniSoft makes no
+representations about the suitability for any purpose of the information in
+this document.  This documentation is provided "as is" without express or
+implied warranty.
+</para>
+
+<para>
+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:
+</para>
+
+<para>
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+</para>
+
+<para>
+THE SOFTWARE IS PROVIDED &ldquo;AS IS&rdquo;, 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
+X CONSORTIUM 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.
+</para>
+
+<para>
+Except as contained in this notice, the name of the X Consortium 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 X Consortium.
+</para>
+</legalnotice>
+</bookinfo>
+
+
+<chapter id="Overview">
+<title>Overview</title>
+<para>
+This extension is a minimal set of client and server extensions
+required to completely test the X11 server with no user intervention.
+</para>
+
+<para>
+This extension is not intended to support general journaling and
+playback of user actions.  This is a difficult area [XTrap, 89] as it attempts
+to synchronize synthetic user interactions with their effects; it is at the
+higher level of dialogue recording/playback rather than at the strictly lexical
+level.  We are interested only in the latter, simpler, case.  A more detailed
+discussion and justification of the extension functionality is given in
+[Drake, 91].
+</para>
+
+<para>
+We are aiming only to provide a minimum set of facilities that
+solve immediate testing and validation problems.  The testing extension
+itself needs testing, where possible, and so should be as simple as possible.
+</para>
+
+<para>
+We have also tried to:
+</para>
+
+<itemizedlist>
+  <listitem>
+    <para>
+Confine the extension to an appropriate high level within the server
+to minimize portability problems.  In practice this means that the extension
+should be at the DIX level or use the DIX/DDX interface, or both.  This
+has effects, in particular, on the level at which "input synthesis"
+can occur.
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+Minimize the changes required in the rest of the server.
+    </para>
+  </listitem>
+  <listitem>
+    <para>
+Minimize performance penalties on normal server operation.
+    </para>
+  </listitem>
+</itemizedlist>
+</chapter>
+
+<chapter id="Description">
+<title>Description</title>
+<para>
+The functions provided by this extension fall into two groups:
+</para>
+
+<variablelist>
+  <varlistentry>
+    <term>Client Operations</term>
+    <listitem>
+      <para>
+These routines manipulate otherwise hidden client-side behavior.  The
+actual implementation will depend on the details of the actual language
+binding and what degree of request buffering, GContext caching, and so on, is
+provided.
+In the C binding, defined in "XTEST Extension Library", routines are
+provided to access the internals of two opaque data structures
+-- <function>GC</function>s
+and
+<function>Visual</function>s --
+and to discard any requests pending within the
+output buffer of a connection.  The exact details can be expected to differ for
+other language bindings.
+      </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry>
+    <term>Server Requests</term>
+    <listitem>
+      <para>
+The first of these requests is similar to that provided in most
+extensions: it allows a client to specify a major and minor version
+number to the server and for the server to respond with major and minor
+versions of its own.  The remaining two requests allow the following:
+<!-- .RS -->
+      </para>
+      <itemizedlist>
+        <listitem>
+          <para>
+Access to an otherwise "write-only" server resource: the cursor
+associated with a given window
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+Perhaps most importantly, limited synthesis of input device events,
+almost as if a cooperative user had moved the pointing device
+or pressed a key or button.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+  </varlistentry>
+</variablelist>
+
+</chapter>
+
+<chapter id="Types">
+<title>Types</title>
+<para>
+The following types are used in the request and event definitions in
+subsequent sections:
+</para>
+
+<informaltable frame="none">
+  <tgroup cols='2' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <colspec colname='c2' colwidth="3.0*"/>
+  <tbody>
+    <row>
+      <entry namest="c1" nameend="c2">
+FAKE_EVENT_TYPE
+{ <function>KeyPress</function>,
+<function>KeyRelease</function>,
+<function>MotionNotify</function>,
+<function>ButtonPress</function>,
+<function>ButtonRelease</function> }
+      </entry>
+    </row>
+    <row>
+      <entry></entry>
+    </row>
+    <row>
+      <entry>FAKE_EVENT</entry>
+      <entry>[type: FAKE_EVENT_TYPE,</entry>
+    </row>
+    <row>
+      <entry></entry>
+      <entry>detail: BYTE,</entry>
+    </row>
+    <row>
+      <entry></entry>
+      <entry>time: TIME,</entry>
+    </row>
+    <row>
+      <entry></entry>
+      <entry>root: WINDOW,</entry>
+    </row>
+    <row>
+      <entry></entry>
+      <entry>rootX, rootY: INT16]</entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+CURSOR { <function>CurrentCursor</function>, <function> None</function> }
+or a cursor as defined by the X11 Protocol.
+</para>
+
+</chapter>
+
+<chapter id="Client_Operations">
+<title>Client Operations</title>
+
+<para>
+These are abstract definitions of functionality.  They refer to client-side
+objects such as "GC" and "VISUAL" that are quoted to
+denote their abstract nature.  Concrete versions of these functions are
+defined only for particular language bindings.  In some circumstances
+a particular language binding may not implement the relevant abstract
+type or may provide it as a transparent, rather than opaque, type, with
+the result that the corresponding function does not make sense or is
+not required, respectively.
+</para>
+
+<para>
+<function>XTestSetGContextOfGC</function>
+</para>
+
+<informaltable frame="none">
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>
+<emphasis remap='I'>gc</emphasis>: "GC"
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>gid</emphasis>: GCONTEXT
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+Sets the GCONTEXT within the "GC" gc to have
+the value specified by gid.
+</para>
+
+<para>
+<function>XTestSetVisualIDOfVisual</function>
+</para>
+
+<informaltable frame="none">
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>
+<emphasis remap='I'>visual</emphasis>: "VISUAL"
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>visualid</emphasis>: VISUALID
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+Sets the VISUALID within the "VISUAL" visual to have
+the value specified by visualid.
+</para>
+
+<para>
+<function>XTestDiscard</function>
+</para>
+
+<informaltable frame="none">
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>
+<emphasis remap='I'>dpy</emphasis>: "CONNECTION"
+      </entry>
+    </row>
+    <row>
+      <entry>
+=&gt;
+      </entry>
+    </row>
+    <row>
+      <entry>
+status: BOOL
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+Discards any requests that are present in the request buffer associated with
+the "CONNECTION" dpy.
+The status returned is
+<function>True</function>
+if there were one or more requests
+in the buffer and
+<function>False</function>
+otherwise.
+</para>
+</chapter>
+
+<chapter id="Server_Requests">
+<title>Server Requests</title>
+<para>
+<function>XTestGetVersion</function>
+</para>
+
+<informaltable frame="none">
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>
+<emphasis remap='I'>clientMajorVersion</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>clientMinorVersion</emphasis>: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>
+   =&gt;
+      </entry>
+    </row>
+    <row>
+      <entry>
+serverMajorVersion: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>
+serverMinorVersion: CARD16
+      </entry>
+    </row>
+    <row>
+      <entry>
+Errors: <function>Length</function>
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+
+<para>
+This request can be used to ensure that the server version of the XTEST
+extension is usable by the client.  This document defines major version two
+(2), minor version one (1).
+</para>
+
+<para>
+<function>XTestCompareCursor</function>
+</para>
+
+<informaltable frame="none">
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>
+<emphasis remap='I'>window</emphasis>: WINDOW
+      </entry>
+    </row>
+    <row>
+      <entry>
+<emphasis remap='I'>cursor-id</emphasis>: CURSOR or
+<function>CurrentCursor</function>
+or
+<function>None</function>
+      </entry>
+    </row>
+    <row>
+      <entry>
+=&gt;
+      </entry>
+    </row>
+    <row>
+      <entry>
+same: BOOL
+      </entry>
+    </row>
+    <row>
+      <entry>
+Errors:
+<function>Window</function>,
+<function>Length</function>,
+<function>Cursor</function>
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+This request looks up the cursor associated with the window and
+compares it with either the null cursor if cursor-id is
+<function>None ,</function>
+or the current cursor (that is, the one being displayed),
+or the cursor whose ID is cursor-id, and returns
+the result of the comparison in same.
+</para>
+
+<para>
+<function>XTestFakeInput</function>
+</para>
+
+<informaltable frame="none">
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>
+<emphasis remap='I'>events</emphasis>: LISTofFAKE_EVENT
+      </entry>
+    </row>
+    <row>
+      <entry>
+Errors:
+<function>Window</function>,
+<function>Length</function>,
+<function>Alloc</function>,
+<function>Value</function>
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+This request simulates the limited set of core protocol
+events within the set FAKE_EVENT_TYPE.  Only the following event fields,
+defined in FAKE_EVENT, are interpreted:
+</para>
+
+<variablelist>
+  <varlistentry>
+    <term>
+      <emphasis remap='I'>type</emphasis>
+    </term>
+    <listitem>
+      <para>
+This must be one of
+<function>KeyPress</function>,
+<function>KeyRelease</function>,
+<function>MotionNotify</function>,
+<function>ButtonPress</function>,
+or
+<function>ButtonRelease</function>,
+or else a
+<function>Value</function>
+error occurs.
+      </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry>
+    <term>
+      <emphasis remap='I'>detail</emphasis>
+    </term>
+    <listitem>
+      <para>
+For key events, this field is interpreted as the physical keycode.
+If the keycode is less than min-keycode or greater than max-keycode,
+as returned in the connection setup, then a
+<function>Value</function>
+error occurs.
+For button events, this field is interpreted as the physical (or core) button,
+meaning it will be mapped to the corresponding logical button according to
+the most recent
+<function>SetPointerMapping</function>
+request.
+If the button number is less than one or greater than the number of physical
+buttons, then a
+<function>Value</function>
+error occurs.
+For motion events, if this field is
+<function>True ,</function>
+then rootX and rootY
+are relative distances from the current pointer location; if this field is
+<function>False,</function>
+then they are absolute positions.
+      </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry>
+    <term>
+      <emphasis remap='I'>time</emphasis>
+    </term>
+    <listitem>
+      <para>
+This is either
+<function>CurrentTime</function>
+(meaning no delay)
+or the delay in milliseconds that the server should wait before
+simulating this event.  No other requests from this client will be
+processed until this delay, if any, has expired and subsequent processing
+of the simulated event has been completed.
+      </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry>
+    <term>
+      <emphasis remap='I'>root</emphasis>
+    </term>
+    <listitem>
+      <para>
+In the case of motion events this field is the ID of the root window on
+which the new motion is to take place.  If
+<function>None</function>
+is specified, the root window of the screen the pointer is currently on
+is used instead.
+If this field is not a valid window, then a
+<function>Window</function>
+error occurs.
+      </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry>
+    <term>
+      <emphasis remap='I'>rootX</emphasis> &amp;
+      <emphasis remap='I'>rootY</emphasis>
+    </term>
+    <listitem>
+      <para>
+In the case of motion events these fields indicate relative distance or
+absolute pointer coordinates, according to the setting of detail.
+If the specified coordinates are off-screen, the closest on-screen
+coordinates will be substituted.
+    </para>
+  </listitem>
+  </varlistentry>
+</variablelist>
+
+<para>
+When the simulated event(s) are processed, they cause event propagation,
+passive grab activation, and so on, just as if the corresponding input device
+action had occurred.  However, motion events might not be recorded in the
+motion history buffer.
+</para>
+
+<para>
+For the currently supported event types, the event list must have length one,
+otherwise a
+<function>BadLength</function>
+error occurs.
+</para>
+
+<para>
+<function>XTestGrabControl</function>
+</para>
+
+<informaltable frame="none">
+  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
+  <colspec colname='c1' colwidth="1.0*"/>
+  <tbody>
+    <row>
+      <entry>
+<emphasis remap='I'>impervious</emphasis>: BOOL
+      </entry>
+    </row>
+  </tbody>
+  </tgroup>
+</informaltable>
+
+<para>
+If impervious is
+<function>True</function>,
+then the executing client becomes impervious to server grabs;
+that is, it can continue executing requests even if another client
+grabs the server.
+If impervious is
+<function>False</function>,
+then the executing client returns to the normal state of being
+susceptible to server grabs.
+</para>
+</chapter>
+
+<chapter id="Encoding">
+<title>Encoding</title>
+<para>
+Please refer to the X11 Protocol Encoding document as this document uses
+conventions established there.
+</para>
+
+<para>
+The name of this extension is "XTEST".
+</para>
+
+<sect1 id="New_Types">
+<title>New Types</title>
+<literallayout class="monospaced">
+FAKE_EVENT_TYPE
+     2     KeyPress
+     3     KeyRelease
+     4     ButtonPress
+     5     ButtonRelease
+     6     MotionNotify
+</literallayout>
+
+<para>
+NOTE that the above values are defined to be the same as those for
+the corresponding core protocol event types.
+</para>
+</sect1>
+
+<sect1 id="Requests">
+<title>Requests</title>
+
+<literallayout class="monospaced">
+<function>XTestGetVersion</function>
+     1     CARD8               opcode
+     1     0                   xtest opcode
+     2     2                   request length
+     1     CARD8               client major version
+     1                         unused
+     2     CARD16              client minor version
+=&gt;
+     1     1                   Reply
+     1     CARD8               server major version
+     2     CARD16              sequence number
+     4     0                   reply length
+     2     CARD16              server minor version
+     22                        unused
+</literallayout>
+
+<literallayout class="monospaced">
+<function>XTestCompareCursor</function>
+     1     CARD8               opcode
+     1     1                   xtest opcode
+     2     3                   request length
+     4     WINDOW              window
+     4     CURSOR              cursor-id
+           0     None
+           1     CurrentCursor
+=&gt;
+     1     1                   Reply
+     1     BOOL                cursors are the same
+     2     CARD16              sequence number
+     4     0                   reply length
+     24                        unused
+</literallayout>
+
+<literallayout class="monospaced">
+<function>XTestFakeInput</function>
+     1     CARD8               opcode
+     1     2                   xtest opcode
+     2     1+(1*8)             request length
+     1     FAKE_EVENT_TYPE     fake device event type
+     1     BYTE                detail: button or keycode
+     2                         unused
+     4     TIME                delay (milliseconds)
+           0     CurrentTime
+     4     WINDOW              root window for MotionNotify
+           0     None
+     8                         unused
+     2     INT16               x position for MotionNotify
+     2     INT16               y position for MotionNotify
+     8                         unused
+</literallayout>
+
+<literallayout class="monospaced">
+<function>XTestGrabControl</function>
+     1     CARD8               opcode
+     1     3                   xtest opcode
+     2     2                   request length
+     1     BOOL                impervious
+     3                         unused
+</literallayout>
+</sect1>
+</chapter>
+
+<chapter id="References">
+<title>References</title>
+<para>
+Annicchiarico, D., et al.,
+<emphasis remap='I'>XTrap: The XTrap Architecture</emphasis>.
+Digital Equipment Corporation, July 1991.
+</para>
+
+<para>
+Drake, K. J.,
+<emphasis remap='I'>Some Proposals for a
+Minimum X11 Testing Extension</emphasis>.
+UniSoft Ltd., June 1991.
+</para>
+</chapter>
+
+</book>
Index: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/xextproto
===================================================================
--- xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/xextproto	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/xextproto	(revision 5)

Property changes on: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs/xextproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs
===================================================================
--- xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs	(revision 5)

Property changes on: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new/specs
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new
===================================================================
--- xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new	(revision 5)

Property changes on: xorgproto/create-2022.2-docbook-patch/xorgproto-2022.2-new
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xorgproto/create-2022.2-docbook-patch
===================================================================
--- xorgproto/create-2022.2-docbook-patch	(nonexistent)
+++ xorgproto/create-2022.2-docbook-patch	(revision 5)

Property changes on: xorgproto/create-2022.2-docbook-patch
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xorgproto/patches/README
===================================================================
--- xorgproto/patches/README	(nonexistent)
+++ xorgproto/patches/README	(revision 5)
@@ -0,0 +1,6 @@
+
+/* begin *
+
+   TODO: Leave some comment here.
+
+ * end */
Index: xorgproto/patches
===================================================================
--- xorgproto/patches	(nonexistent)
+++ xorgproto/patches	(revision 5)

Property changes on: xorgproto/patches
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xorgproto
===================================================================
--- xorgproto	(nonexistent)
+++ xorgproto	(revision 5)

Property changes on: xorgproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: xproto/Makefile
===================================================================
--- xproto/Makefile	(nonexistent)
+++ xproto/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/X.org/proto/xproto
+
+versions    = 7.0.31
+pkgname     = xproto
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: xproto
===================================================================
--- xproto	(nonexistent)
+++ xproto	(revision 5)

Property changes on: xproto
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: .
===================================================================
--- .	(nonexistent)
+++ .	(revision 5)

Property changes on: .
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~