diff options
author | Gaetan Nadon <memsize@videotron.ca> | 2010-11-30 09:08:03 -0500 |
---|---|---|
committer | Gaetan Nadon <memsize@videotron.ca> | 2010-11-30 09:08:03 -0500 |
commit | 8bcf9fd199096f8be33b5139b0b8bac017aab073 (patch) | |
tree | bca242fe2637f9d537fc97ad9431e99a83fe1c03 | |
parent | dc570809bea74c65f0def809767f666f10c96479 (diff) |
specs: move low bandwith protocol specs to xextproto
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
-rw-r--r-- | specs/Xext/Makefile.am | 2 | ||||
-rw-r--r-- | specs/Xext/lbx.xml | 6291 |
2 files changed, 1 insertions, 6292 deletions
diff --git a/specs/Xext/Makefile.am b/specs/Xext/Makefile.am index 0c2ee03..4737bf1 100644 --- a/specs/Xext/Makefile.am +++ b/specs/Xext/Makefile.am @@ -1,7 +1,7 @@ if ENABLE_SPECS xmldir = $(docdir)/$(subdir) -doc_sources = lbx.xml lbxalg.xml +doc_sources = lbxalg.xml dist_xml_DATA = $(doc_sources) include $(top_srcdir)/xmlrules.in diff --git a/specs/Xext/lbx.xml b/specs/Xext/lbx.xml deleted file mode 100644 index f42f9f9..0000000 --- a/specs/Xext/lbx.xml +++ /dev/null @@ -1,6291 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE article - PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" - "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> - -<article id="lbx"> - -<articleinfo> - <title>Low Bandwidth X Extension</title> - <subtitle>X Consortium Standard</subtitle> - <authorgroup> - <author> - <firstname>D.</firstname> - <surname>Converse</surname> - </author> - <author> - <firstname>J.</firstname> - <surname>Fulton</surname> - </author> - <author> - <firstname>D.</firstname> - <surname>Lemke</surname> - </author> - <author> - <firstname>R.</firstname> - <surname>Mor</surname> - </author> - <author> - <firstname>K.</firstname> - <surname>Packard</surname> - </author> - <author> - <firstname>R.</firstname> - <surname>Tice</surname> - </author> - <author> - <firstname>D.</firstname> - <surname>Tonogai</surname> - </author> - </authorgroup> - <releaseinfo>Protocol Version 1.0</releaseinfo> - - -<legalnotice> -<para> -Copyright (c) 1996 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 "Software"), to deal in the Software without -restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, and -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 "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 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> - -</articleinfo> - -<sect1 id='introduction'> -<title>Introduction</title> - -<para> -Low Bandwidth X (LBX) is a network-transparent protocol for running X Window -System applications over transport channels whose bandwidth and latency are -significantly worse than that used in local area networks. It combines a -variety of caching and reencoding techniques to reduce the volume of data that -must be sent over the wire. It can be used with existing clients by placing a -proxy between the clients and server, so that the low bandwidth/high latency -communication occurs between the proxy and server. -</para> - - -<para> -This extension was designed and implemented by Jim Fulton, David Lemke, Keith -Packard, and Dale Tonogai, all of Network Computing Devices (NCD). Chris Kent -Kantarjiev (Xerox PARC) participated in early design discussions. Ralph Mor (X -Consortium) designed and implemented additional sections. Donna Converse (X -Consortium) authored the protocol description and encoding from design notes -and the implementation. Ray Tice (X Consortium) resolved the open issues in the -design and specification. Bob Scheifler (X Consortium) helped out in many areas. -</para> - - -<para> -The extension name is "LBX". -</para> - - -</sect1> -<sect1 id='description'> -<title>Description</title> - -<para> -The design center for LBX is to use a proxy as an intermediary between the -client and server. The proxy reencodes and compresses requests, events, replies -and errors, as well as the resulting data stream. Additionally, the proxy can -cache information from the server to provide low-latency replies to clients. -This reply generation by the proxy is known as short-circuiting. A proxy can -handle multiple clients for a given server, but does not prevent clients from -connecting directly to the server. The design allows the proxy to multiplex -multiple clients into a single data stream to the server. -</para> - - -<para> -Much of LBX is implemented as an extension. The compression and reencoding -changes can be isolated to the transport and dispatch portions of the server, -while short-circuiting requires minor changes to the server’s colormap and -property code. -</para> - - -<para> -LBX employs several different compression and short-circuiting methods. Use of -these methods is negotiable, and in some cases, the algorithm used by a given -method is negotiable as well. LBX also provides for negotiation of extensions -to LBX. -</para> - - -<sect2 id='data_flow'> -<title>Data Flow</title> - -<para> -The LBX data stream goes through a number of layers: -</para> - - -<orderedlist> - <listitem> -<para>Client requests</para> - </listitem> - <listitem> -<para>Read by LBX and potential byte-swapping</para> - </listitem> - <listitem> -<para>Request-specific compression</para> - </listitem> - <listitem> -<para>Potential byte swapping</para> - </listitem> - <listitem> -<para>Multiplexing of client request streams</para> - </listitem> - <listitem> -<para>Delta replacement</para> - </listitem> - <listitem> -<para>Stream compression</para> - </listitem> -</orderedlist> - -<para> -Transport -</para> - -<!-- FIXME: descending --> -<orderedlist> - <listitem> -<para>Stream decompression</para> - </listitem> - <listitem> -<para>Delta substitution</para> - </listitem> - <listitem> -<para>Demultiplexing of client request streams</para> - </listitem> - <listitem> -<para>Potential byte swapping</para> - </listitem> - <listitem> -<para>Reencoding</para> - </listitem> - <listitem> -<para>Request processing</para> - </listitem> -</orderedlist> - -<para> -The reverse process occurs with X server replies, events, and errors. -</para> - - -</sect2> -<sect2 id='tags'> -<title>Tags</title> - -<para> -Tags are used to support caching of large data items that are expected to be -queried multiple times. Such things as the keyboard map and font metrics are -often requested by multiple clients. Rather than send the data each time, the -first time the data is sent it includes a tag. The proxy saves this data, so -that subsequent requests can send only the tag to refer to that same data. The -different types of tags are used for connection information, keyboard maps, -modifier maps, fonts information and properties. -</para> - - -<para> -Tag usage is negotiated as a boolean in the <emphasis> -LbxStartProxy</emphasis> - message. The proxy controls how many tags are stored in the proxy. The server -may wish to observe the proxy’s InvalidateTag behavior to limit how many tags -are cached at any one time. Tagged data is not shared across types of tags, but -the number space used for the tag ids is. The tag ids are generated by the -server. -</para> - - -<para> -The X server keeps track of what tags are known to the proxy. The proxy can -invalidate a tag if no tag bearing replies of that type are pending. The proxy -sends an <emphasis> -LbxInvalidateTag</emphasis> - message to release the tagged data. The proxy must not invalidate connection -tags unless instructed to do so by the server. -</para> - - -<para> -If the server wishes to discard tagged data, it must either have received an -<emphasis> -LbxInvalidateTag</emphasis> - request from the proxy or send an <emphasis> -LbxInvalidateTag</emphasis> - event to the proxy for that tag. -</para> - - -<sect3 id='tag_substitution_in_requests'> -<title>Tag Substitution in Requests</title> - -<para> -Many substitution requests have a tag field, followed by fields marked -optional. For these requests, if the optional fields are present, the -data in them is stored in the indicated tag, unless the tag is 0. If -the optional fields are absent, the tag field indicates the tag that -contains the data for the "optional" fields. -</para> - - -</sect3> -<sect3 id='property_tags'> -<title>Property Tags</title> - -<para> -Property data makes special use of tags. A common use of properties is for -inter-client communication. If both clients use the proxy, it is wasteful to -send the data to the server and then back, when the server may never need it. -<emphasis> -LbxChangeProperty</emphasis> - request does the same work as the core <emphasis> -ChangeProperty</emphasis> - request, but it does not send the data. The reply to this request contains a -tag id corresponding to the data. If the property information is used locally, -the server responds to <emphasis> -LbxGetProperty</emphasis> - with the tag, and the property data need never be sent to the server. If the -server does require the data, it can issue an <emphasis> -LbxQueryTag</emphasis> - message. The proxy can also send the data on at any time if it judges it -appropriate (i.e., when the wire goes idle). Since the proxy owns the property -data, it must not invalidate the tag before sending the data back to the server -via an <emphasis> -LbxTagData</emphasis> - request. -</para> - - -</sect3> -</sect2> -<sect2 id='short_circuiting'> -<title>Short-circuiting</title> - -<para> -Short-circuiting is used to handle constant data. This includes atoms, color -name/RGB mappings, and <emphasis> -AllocColor</emphasis> - calls. Atoms and color name/RGB mappings stay constant for the life of the -server. <emphasis> -AllocColor</emphasis> -<emphasis> - </emphasis> -replies are constant for each colormap. Short-circuiting replaces round-trip -requests with one-way requests, and can sometimes use one in place of many. -</para> - - -<para> -Atoms are used heavily for ICCCM communication. Once the proxy knows the string -to atom mapping, it has no need to send subsequent requests for this atom to -the server. -</para> - - -<para> -Colorname/RGB mappings are constant, so once the proxy sees the response from -<emphasis> -LookupColor</emphasis> -, it need not forward any subsequent requests. -</para> - - -<para> -Clients often use the same color cells, so once a read-only color allocation -has occurred, the proxy knows what RGB values should be returned to the client. -The proxy doesn't need to forward any <emphasis> -AllocColor</emphasis> - requests it can resolve, but it must tell the server to modify the color -cell's reference count. <emphasis> -LbxIncrementPixel</emphasis> - is used to support this. -</para> - - -<para> -For all three classes of short-circuiting, the proxy must still tell the server -a request has occurred, so that the request sequence numbers stay in sync. This -is done with <emphasis> -LbxModifySequence</emphasis> -. -</para> - - -<para> -Sequence numbers cause the major complication with short-circuiting. X -guarantees that any replies, events or errors generated by a previous request -will be sent before those of a later request. This means that any requests that -can be handled by the proxy must have their reply sent after any previous -events or errors. -</para> - - -<para> -If a proxy’s applications do not require strict adherence to the X protocol -ordering of errors or events, a proxy might provide further optimization by -avoiding the overhead of maintaining this ordering, however, the resulting -protocol is not strictly X11 compliant. -</para> - - -</sect2> -<sect2 id='graphics_re_encoding'> -<title>Graphics Re-encoding</title> - -<para> -The LBX proxy attempts to reencode <emphasis>PolyPoint</emphasis>, -<emphasis>PolyLine</emphasis>, <emphasis>PolySegment</emphasis>, -<emphasis>PolyRectangle</emphasis>, <emphasis>PolyArc</emphasis>, -<emphasis>FillPoly</emphasis>, <emphasis>PolyFillRectangle</emphasis>, -<emphasis>PolyFillArc</emphasis>, <emphasis>CopyArea</emphasis>, -<emphasis>CopyPlane</emphasis>, <emphasis>PolyText8</emphasis>, -<emphasis>PolyText16</emphasis>, <emphasis>ImageText8</emphasis>, -and <emphasis>ImageText16</emphasis> requests. If the request can be -reencoded, it may be replaced by an equivalent LBX form of the request. -The requests are reencoded by attempting to reduce 2-byte coordinate, -length, width and angle fields to 1 byte. Where applicable, the -coordinate mode is also converted to <emphasis>Previous</emphasis> - to improve the compressibility of the resulting data. In image requests, -the image data may also be compressed. -</para> - -</sect2> -<sect2 id='motion_events'> -<title>Motion events</title> - -<para> -To prevent clogging the wire with <emphasis>MotionNotify</emphasis> - events, the server and proxy work together to control the number -of events on the wire. This is done with the -<emphasis>LbxAllowMotion</emphasis> - request. The request adds an amount to an allowed motion count in -the server, which is kept on a per-proxy basis. Every motion notify -event sent to the proxy decrements the allowed motion counter. If -the allowed motion count is less than or equal to zero, motion -events not required by the X protocol definition are not sent to the -proxy. The allowed motion counter has a minimum value of -2^31. -</para> - -</sect2> -<sect2 id='event_squishing'> -<title>Event Squishing</title> - -<para> -In the core protocol, all events are padded as needed to be 32 bytes long. The -LBX extension reduces traffic by removing padding at the end of events, and -implying the event length from its type. This is known as squishing. -</para> - -</sect2> -<sect2 id='master_client_'> -<title>Master Client </title> - -<para> -When the initial X connection between the proxy and the server is converted to -LBX mode, the proxy itself becomes the master client. New client requests and -some tag messages are sent in the context of the master client. -</para> - - -</sect2> -<sect2 id='multiplexing_of_clients'> -<title>Multiplexing of Clients</title> - -<para> -The LBX proxy multiplexes the data streams of all its clients into one stream, -and then splits them apart again when they are received. The <emphasis> -LbxSwitch</emphasis> - message is used to tell each end which client is using the wire at the time. -</para> - - -<para> -The server should process delta requests in the order that they appear on the -LBX connection. If the server does not maintain the interclient request order -for requests sent by the proxy, it must still obey the semantics implied by the -interclient request order so that the delta cache functions correctly. -</para> - - -<para> -The server can affect the multiplexing of clients by the proxy using the -<emphasis> -LbxListenToOne</emphasis> - and <emphasis> -LbxListenToAll</emphasis> - messages. This is useful during grabs, since the master connection can not be -blocked during grabs like other clients. The proxy is responsible for tracking -server grabs issued by its clients so that the proxy can multiplex the client -streams in an order executable by the server. -</para> - - -<para> -Replies must be ordered in the multiplexed data stream from the server to the -proxy such that the reply carrying tagged data precedes replies that refer to -that tagged data. -</para> - - -</sect2> -<sect2 id='swapping'> -<title>Swapping</title> - -<para> -Swapping is handled as with any X extension, with one caveat. Since a proxy can -be supporting clients with different byte orders, and they all share the same -wire, the length fields of all messages between the server and proxy are -expressed in the proxy byte order. This prevents any problems with length -computation that may occur when clients are switched. -</para> - - -</sect2> -<sect2 id='delta_cache'> -<title>Delta cache</title> - -<para> -LBX takes advantage of the fact that an X message may be very similar to one -that has been previously sent. For example, a <emphasis> -KeyPress</emphasis> - event may differ from a previous <emphasis> -KeyPress</emphasis> - event in just a few bytes. By sending just the bytes that differ (or -"deltas"), the number of bytes sent over the wire can be substantially reduced. -Delta compaction is used on requests being sent by the proxy as well as on -replies and events being sent by the server. -</para> - - -<para> -The server and the proxy each keep per-proxy request and response caches. The -response cache contains events, errors and replies. All messages are saved in -the appropriate delta cache if they are of an appropriate type and more than 8 -bytes long but fit within the delta cache. The number of entries in the delta -cache and the maximum saved message size are negotiated in the <emphasis> -LbxStartProxy</emphasis> - request. -</para> - - -<para> -The LBX requests that are never stored in the request delta cache are the -<emphasis> -LbxQueryVersion</emphasis> -, <emphasis> -LbxStartProxy</emphasis> -, <emphasis> -LbxSwitch</emphasis> -, <emphasis> -LbxNewClient</emphasis> -, <emphasis> -LbxAllowMotion</emphasis> -, <emphasis> -LbxDelta</emphasis> -, <emphasis> -LbxQueryExtension</emphasis> -, <emphasis> -LbxPutImage</emphasis> -, <emphasis> -LbxGetImage</emphasis> -, <emphasis> -LbxBeginLargeRequest</emphasis> -, <emphasis> -LbxLargeRequestData</emphasis> -, <emphasis> -LbxEndLargeRequest</emphasis> - and <emphasis> -LbxInternAtoms</emphasis> - requests. The responses that are never stored in the response cache are -<emphasis> -LbxSwitchEvent</emphasis> - and <emphasis> -LbxDeltaResponse</emphasis> -. The message carried by a <emphasis> -delta </emphasis> -message is also cached, if it meets the other requirements. Messages after the -<emphasis> -LbxStartProxy</emphasis> - request are cached starting at index 0, and incrementing the index, modulo the -number of entries, thereafter. The request and response caches are -independently indexed. -</para> - - -<para> -If the current message is cachable and the same length as a message in the -corresponding delta cache, a delta message may be substituted in place of the -original message in the protocol stream. -</para> - - -</sect2> -<sect2 id='stream_compression'> -<title>Stream Compression</title> - -<para> -Before being passed down to the transport layer messages can be passed through -a general purpose data compressor. The choice of compression algorithm is -negotiated with <ulink url="lbx.htm#20870">See LbxStartProxy</ulink>. The proxy -and server are not required to support any specific stream compressor. As an -example, however, the X Consortium implementation of a ZLIB based compressor is -described below. -</para> - -<note><para> -The XC-ZLIB compressor is presented with a simple byte stream - the X and LBX -message boundaries are not apparent. The data is broken up into fixed sized -blocks. Each block is compressed using zlib 1.0 (by Gailly & Adler), then a -two byte header is prepended, and then the entire packet is transmitted. The -header has the following information: -</para></note> -<para><programlisting> - out[0] = (length & 0xfff) >> 8 | ((compflag) ? 0x80 : 0); - out[1] = length & 0xff; -</programlisting></para> - -</sect2> -<sect2 id='authentication_protocols'> -<title>Authentication Protocols</title> - -<para> -The current version of LBX does not support multipass authentication protocols -for clients of the proxy. These authentication protocols return an <emphasis> -Authenticate</emphasis> - message in response to a connection setup request, and require additional -authentication data from the client after the <emphasis> -LbxNewClient</emphasis> - request, and before the reply to <emphasis> -LbxNewClient</emphasis> -. One example of such a protocol is XC-QUERY-SECURITY-1. -</para> - - -</sect2> -</sect1> -<sect1 id='c_library_interfaces_'> -<title>C Library Interfaces </title> - -<para> -The C Library routines for LBX are in the Xext library. The prototypes are -located in a file named "XLbx.h". -</para> - - -<sect2 id='application_library_interfaces'> -<title>Application Library Interfaces</title> - -<para> -In a proxy environment, applications do not need to call these routines to take -advantage of LBX. Clients can, however, obtain information about the LBX -extension to the server using this interface. Use of this routine may be -altered when connected through a proxy, as described in <ulink -url="lbx.htm#33319">See C Library Interfaces</ulink>. -</para> - - -<sect3 id='xlbxqueryversion'> -<title>XLbxQueryVersion</title> - -<para> -To determine the version of LBX supported by the X server, call <emphasis> -XLbxQueryVersion</emphasis> -. -</para> - -<funcsynopsis> -<funcprototype> -<funcdef>Bool <function>XLbxQueryVersion</function></funcdef> - <paramdef>Display * <parameter>display</parameter></paramdef> - <paramdef>int * <parameter>major_version_return</parameter></paramdef> - <paramdef>int * <parameter>minor_version_return</parameter></paramdef> -</funcprototype> -</funcsynopsis> - -<variablelist> - <varlistentry> - <term>display</term> - <listitem><para>Specifies the connection to the X server.</para></listitem> - </varlistentry> - <varlistentry> - <term>major_version_return</term> - <listitem><para>Returns the extension major version number.</para></listitem> - </varlistentry> - <varlistentry> - <term>minor_version_return</term> - <listitem><para>Returns the extension minor version number.</para></listitem> - </varlistentry> -</variablelist> - -<para> -The <emphasis> -XLbxQueryVersion</emphasis> - function determines if the LBX extension is present. If the extension is not -present, <emphasis> -XLbxQueryVersion</emphasis> - returns <emphasis> -False</emphasis> -; otherwise, it returns <emphasis> -True</emphasis> -. If the extension is present, <emphasis> -XLbxQueryVersion</emphasis> - returns the major and minor version numbers of the extension as supported by -the X server. -</para> - - -</sect3> -</sect2> -<sect2 id='proxy_library_interfaces'> -<title>Proxy Library Interfaces</title> - -<para> -The following interfaces are intended for use by the proxy. -</para> - -<sect3 id='xlbxqueryextension'> -<title>XLbxQueryExtension</title> - -<para> -To determine the dynamically assigned codes for the extension, use the Xlib -function <emphasis> -XQueryExtension</emphasis> - or the LBX function <emphasis> -XLbxQueryExtension</emphasis> -.</para> - - -<funcsynopsis> -<funcprototype> -<funcdef>Bool <function>XLbxQueryExtension</function></funcdef> - <paramdef>Display * <parameter>display</parameter></paramdef> - <paramdef>int * <parameter>major_opcode_return</parameter></paramdef> - <paramdef>int * <parameter>first_event_return</parameter></paramdef> - <paramdef>int * <parameter>first_error_return</parameter></paramdef> -</funcprototype> -</funcsynopsis> - -<variablelist> - <varlistentry> - <term>display</term> - <listitem><para>Specifies the connection to the X server.</para></listitem> - </varlistentry> - <varlistentry> - <term>major_opcode_return</term> - <listitem><para>Returns the major opcode.</para></listitem> - </varlistentry> - <varlistentry> - <term>first_event_return</term> - <listitem><para>Returns the first event code.</para></listitem> - </varlistentry> - <varlistentry> - <term>first_error_return</term> - <listitem><para>Returns the first error code.</para></listitem> - </varlistentry> -</variablelist> - -<para> -The <emphasis> -XLbxQueryExtension</emphasis> - function determines if the LBX extension is present. If the extension is not -present, <emphasis> -XLbxQueryExtension</emphasis> - returns <emphasis> -False</emphasis> -; otherwise, it returns <emphasis> -True</emphasis> -. If the extension is present, <emphasis> -XLbxQueryExtension</emphasis> - returns the major opcode for the extension to major_opcode_return, the base -event type code to first_event_return, and the base error code to -first_error_return; otherwise, the return values are undefined. -</para> - -</sect3> - -<sect3 id='xlbxgeteventbase'> -<title>XLbxGetEventBase</title> -<para> -To determine the base event type code, use the Xlib function <emphasis> -XQueryExtension</emphasis> - or the LBX function <emphasis> -XLbxGetEventBase</emphasis>. -</para> - - -<funcsynopsis> -<funcprototype> -<funcdef>int <function>XLbxGetEventBase</function></funcdef> - <paramdef>Display * <parameter>display</parameter></paramdef> -</funcprototype> -</funcsynopsis> - -<variablelist> - <varlistentry> - <term>display</term> - <listitem><para>Specifies the connection to the X server.</para></listitem> - </varlistentry> -</variablelist> - -<para> -The <emphasis>XLbxGetEventBase</emphasis> -function returns the base event type code if the extension is -present; otherwise, it returns -1. -</para> - -</sect3> -</sect2> -</sect1> - - -<sect1 id='protocol'> -<title>Protocol</title> - -<sect2 id='syntactic_conventions_and_common_types'> -<title>Syntactic Conventions and Common Types</title> - -<para> -Please refer to the X Window System Protocol specification, -as this document uses the syntactic conventions established -there and references types defined there. -</para> - - -<para> -The following additional types are defined by this extension: -</para> - -<literallayout> -<emphasis role='bold'>DIFFITEM</emphasis> -1 CARD8 offset -1 CARD8 diff -</literallayout> - -<literallayout> -<emphasis role='bold'>LBXANGLE: CARD8 or 2 BYTE</emphasis> - where (in order of precedence): - (0 <= in <= A(95)) && !(in % A(5)) out = 0x5a + (in / -A(5)) - A(105) <= in <= A(360) && !(in % A(15)) out = 0x67 + -(in / A(15)) - -A(100) <= in <= -A(5) && !(in % A(5)) out = 0xa6 + -(in / A(5)) - -A(360) < in <= -A(105) && !(in % A(15)) out = 0x98 + -(in / A(15)) - -A(360) < in <= A(360) out[0] = in >> 8; out[1] = in -</literallayout> - -<literallayout> -<emphasis role='bold'>LBXARC:</emphasis> - [x, y: LBXINT16, - width, height: LBXCARD16, - angle1, angle2: LBXANGLE] -</literallayout> - -<para> -Within a list of arcs, after the first arc, x and y are -relative to the corresponding fields of the prior arc. -</para> - -<literallayout> -<emphasis role='bold'>LBXCARD16: CARD8 or 2 BYTE</emphasis> - where: - 0x0000 <= in < 0x00F0 CARD8 - 0x00F0 <= in < 0x10F0 out[0] = 0xF0 | ((in - 0xF0) >> -8) - out[1] = in - 0xF0 -</literallayout> - -<literallayout> -<emphasis role='bold'>LBXGCANDDRAWENT</emphasis> -[ gc-cache-index, drawable-cache-index: CARD4 ] -</literallayout> - -<literallayout> -<emphasis role='bold'>LBXGCANDDRAWUPDATE</emphasis> - drawable: DRAWABLE /* present only if -<emphasis>drawable-cache-index</emphasis> - == 0 */ -gc: GC] /* present only if <emphasis>gc-cache-index</emphasis> == 0 */ -</literallayout> - -<literallayout> -<emphasis role='bold'>LBXGCANDDRAWABLE</emphasis> - cache-entries: LBXGCANDDRAWENT - updates: LBXGCANDDRAWUPDATE -</literallayout> - -<literallayout> -<emphasis role='bold'>LBXINT16</emphasis>: INT8 or 2 BYTE - where: - 0xF790 <= in < 0xFF90 out[0] = 0x80 | (((in + 0x70) >> -8) & 0x0F) - out[1] = in + 0x70 - 0xFF90 <= in < 0x0080 CARD8 - 0x0080 <= in < 0x0880 out[0] = 0x80 | (((in - 0x80) >> -8) & 0x0F) - out[1] = in - 0x80 -</literallayout> - -<literallayout> -<emphasis role='bold'>LBXPINT16</emphasis>: CARD8 or 2 BYTE /* for -usually positive numbers */ - where: - 0xFE00 <= in < 0x0000 out[0] = 0xF0 | (((in + 0x1000) ->> 8) & 0x0F) - out[1] = in + 0x1000 - 0x0000 <= in < 0x00F0 CARD8 - 0x00F0 <= in < 0x0EF0 out[0] = 0xF0 | ((in - 0xF0) >>8) - out[1] = in - 0xF0 -</literallayout> - -<literallayout> -<emphasis role='bold'>LBXPOINT</emphasis>: [x, y: LBXINT16] - Within a list of points, after the first rectangle, x and y are -relative to the corresponding fields of the prior point. -</literallayout> - -<literallayout> -<emphasis role='bold'>LBXRECTANGLE</emphasis>: - [x, y: LBXINT16, - width, height: LBXCARD16] -</literallayout> - -<para> -Within a list of rectangles, after the first rectangle, x and -y are relative to the corresponding fields of the prior rectangle. -</para> - -<para> -MASK: CARD8 -</para> - - -</sect2> -<sect2 id='errors'> -<title>Errors</title> - -<para> -As with the X11 protocol, when a request terminates with an error, -the request has no side effects (that is, there is no partial execution). -</para> - - -<para> -There is one error, <emphasis> -LbxClient</emphasis> -. This error indicates that the client field of an LBX request was invalid, or -that the proxy’s connection was in an invalid state for a start or stop proxy -request. -</para> - - -</sect2> -<sect2 id='requests'> -<title>Requests</title> - -<para> -There is one request that is expected to be used only by the client: <emphasis> -LbxQueryVersion</emphasis> -</para> - - -<para> -There is one request that is expected to be used by the client or the proxy: -<emphasis> -LbxQueryExtension</emphasis> -. -</para> - - -<para> -The following requests are expected to be used only by the proxy, and are -instigated by the proxy: <emphasis> -LbxStartProxy</emphasis> -, <emphasis> -LbxStopProxy</emphasis> -, <emphasis> -LbxNewClient</emphasis> -, <emphasis> -LbxSwitch</emphasis> -, <emphasis> -LbxCloseClient</emphasis> -, <emphasis> -LbxModifySequence</emphasis> -, <emphasis> -LbxAllowMotion</emphasis> -, <emphasis> -LbxInvalidateTag</emphasis> -, <emphasis> -LbxTagData</emphasis> - and <emphasis> -LbxQueryTag</emphasis> -. -</para> - - -<para> -All other requests are sent by the proxy to the LBX server and are instigated -by reception of an X request from the client. They replace the X request. -</para> - - -<sect3 id='requests_initiated_by_the_proxy_or_by_the_client'> -<title>Requests Initiated by the Proxy or by the Client</title> - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxQueryVersion</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry>=>;</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>majorVersion: CARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>minorVersion: CARD16</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request returns the major and minor version numbers of the LBX protocol. -</para> - - -<para> -The encoding of this request is on <ulink url="lbx.htm#34166">See -LbxQueryVersion</ulink>. -</para> - - - -</sect3> -<sect3 id='requests_initiated_or_substituted_by_the_proxy'> -<title>Requests Initiated or Substituted by the Proxy</title> - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxQueryExtension</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -nbytes</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -name</emphasis> -: STRING8</entry> - </row> - <row rowsep='0'> - <entry>=></entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>num-requests: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>present: BOOL</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>major-opcode: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>first-event: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>first-error: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>reply-mask: LISTofMASK /* optional */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>event-mask:LISTofMASK /* optional */</entry> - </row> - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request is identical to the <emphasis> -QueryExtension</emphasis> - request, with an additional field, and two optional additional fields. When -the client issues an <emphasis> -QueryExtension</emphasis> - request, the proxy will substitute an <emphasis> -LbxQueryExtension</emphasis> - request. -</para> - - -<para> -This request determines if the named extension is present. If so, the major -opcode for the extension is returned, if it has one. Otherwise, zero is -returned. Any minor opcode and the request formats are specific to the -extension. If the extension involves additional event types, the base event -type code is returned. Otherwise, zero is returned. The format of events is -specific to the extension. If the extension involves additional error codes, -the base error code is returned. Otherwise, zero is returned. The format of -additional data in the errors is specific to the extension. -</para> - - -<para> -In addition, the number of requests defined by the named extension is returned. -If the number of requests is nonzero, and if the information is available, -reply-mask and event-mask will be included in the reply. The reply-mask -represents a bit-wise one-to-one correspondence with the extension requests. -The least significant bit corresponds to the first request, and the next bit -corresponds to the next request, and so on. Each element in the list contains -eight meaningful bits, except for the last element, which contains eight or -fewer meaningful bits. Unused bits are not guaranteed to be zero. The bit -corresponding to a request is set if the request could generate a reply, -otherwise it is zero. In the same way, the event-mask represents a bit-wise -one-to-one correspondence with the extension requests. A bit is set if the -corresponding request could result in the generation of one or more extension -or X11 events. If reply-mask is present in the reply, event-mask will also be -present. -</para> - - -<para> -The encoding of this request is on <ulink url="lbx.htm#37117">See -LbxQueryExtension</ulink>. -</para> - - - -</sect3> -<sect3 id='control_requests_initiated_by_the_proxy'> -<title>Control Requests Initiated by the Proxy</title> - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxStartProxy</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -options</emphasis> -: LISTofOPTION</entry> - </row> - <row rowsep='0'> - <entry>=></entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>choices: LISTofCHOICE</entry> - </row> - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -LbxClient</emphasis> -, <emphasis> -Alloc</emphasis> -</entry> - </row> - <row rowsep='0'> - <entry>where:</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>OPTION [optcode: CARD8,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> len: OPTLEN,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> option: (See <ulink -url="lbx.htm#35444">See StartProxy Options</ulink>) ]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>CHOICE [optcode: CARD8,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> len: OPTLEN,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> choice: (See <ulink -url="lbx.htm#35444">See StartProxy Options</ulink>) ]</entry> - </row> - </tbody> - </tgroup> -</informaltable> -<!-- - <row rowsep='0'> - <entry role='protoargs'> --> - - -<table frame='none'> - <title>StartProxy Options</title> - <tgroup cols='4'> - <colspec colsep='0'/> - <colspec colsep='0'/> - <colspec colsep='0'/> - <colspec colsep='0'/> -<thead> -<row rowsep='0'> - <entry>optcode</entry> - <entry>option</entry> - <entry>choice</entry> - <entry>default</entry> -</row> -</thead> -<tbody> -<row rowsep='0'> - <entry>delta-proxy</entry> - <entry>DELTAOPT</entry> - <entry>DELTACHOICE</entry> - <entry>entries=16, maxlen=64</entry> -</row> -<row rowsep='0'> - <entry>delta-server</entry> - <entry>DELTAOPT</entry> - <entry>DELTACHOICE</entry> - <entry>entries=16, maxlen=64</entry> -</row> -<row rowsep='0'> - <entry>stream-comp</entry> - <entry>LISTofNAMEDOPT</entry> - <entry>INDEXEDCHOICE</entry> - <entry>No Compression</entry> -</row> -<row rowsep='0'> - <entry>bitmap-comp</entry> - <entry>LISTofSTRING8</entry> - <entry>LISTofINDEXEDOPT</entry> - <entry>No Compression</entry> -</row> -<row rowsep='0'> - <entry>pixmap-comp</entry> - <entry>LISTofPIXMAPMETHOD</entry> - <entry>LISTofPIXMAPCHOICE</entry> - <entry>No Compression</entry> -</row> -<row rowsep='0'> - <entry>use-squish</entry> - <entry>BOOL</entry> - <entry>BOOL</entry> - <entry>True</entry> -</row> -<row rowsep='0'> - <entry>use-tags</entry> - <entry>BOOL</entry> - <entry>BOOL</entry> - <entry>True</entry> -</row> -<row rowsep='0'> - <entry>colormap</entry> - <entry>LISTofSTRING8</entry> - <entry>INDEXEDCHOICE</entry> - <entry>No Colormap Grabbing</entry> -</row> -<row rowsep='0'> - <entry>extension</entry> - <entry>NAMEDOPT</entry> - <entry>INDEXEDCHOICE</entry> - <entry>Extension Disabled</entry> - </row> -</tbody> -</tgroup> -</table> -<!-- </entry> - </row> ---> -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <tbody> - <row rowsep='0'> - <entry role='protoargs'> </entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>DELTAOPT [minN, maxN, prefN: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> minMaxMsgLen, maxMaxMsgLen, prefMaxMsgLen: -CARD8]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>DELTACHOICE [entries, maxlen: -CARD8]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>INDEXEDCHOICE [index: CARD8,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> data: LISTofBYTE]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>INDEXEDOPT [index, opcode: CARD8]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>NAMEDOPT [name: STRING8,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> detail: LISTofBYTE]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>OPTLEN 1 or 3 CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> where:</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> (0 < in <= 0xFF): out = -in</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> (0 <= in<= 0xFFFF): out[0] = -0; out[1] = in >> 8; out[2] = in& 0xFF;</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>PIXMAPMETHOD [name: STRING8,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> format-mask: BITMASK,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> depths: LISTofCARD8]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>PIXMAPCHOICE [index, opcode: CARD8,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> format-mask: BITMASK,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> depths: LISTofCARD8]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'></entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request negotiates LBX protocol options, and switches the proxy-server -connection from X11 protocol to LBX protocol. -</para> - - -<para> -The proxy gives the preferred protocol options in the request. The server -chooses from the given options and informs the proxy which to use. The options -may be listed in any order, and the proxy may choose which options to -negotiate. If an option is not successfully negotiated, the default is used. -</para> - - -<para> -The server delta cache and proxy delta caches can be configured for number of -entries, and the length of entries. (See <ulink url="lbx.htm#22595">See Delta -cache</ulink> for details.) The delta caches are configured using the <emphasis> -delta-server</emphasis> - and <emphasis> -delta-proxy</emphasis> - options. To configure a cache, the proxy sends the minimum, maximum and -preferred values for the number of cache entries, (<emphasis> -minN, maxN, prefN</emphasis> -), and the length of the cache entries, (<emphasis> -minMaxMsgLen, maxMaxMsgLen, prefMaxMsgLen</emphasis> -). The server’s reply fields, <emphasis> -entries</emphasis> - and <emphasis> -maxlen</emphasis> -, contains the values to use. These values must be within the ranges specified -by the proxy. The server may also specify an <emphasis> -entries</emphasis> - value of 0 to disable delta caching. The cache entry lengths are specified in -units of 4 bytes. -</para> - - -<para> -The stream compression algorithm is selected using the <emphasis> -stream-comp </emphasis> -option. (Stream compression is described in <ulink url="lbx.htm#11596">See -Stream Compression</ulink>.) Each algorithm has a name that follows the naming -conventions in <ulink url="lbx.htm#13570">See Algorithm Naming</ulink>. To -negotiate using the stream-comp option, the proxy lists its available -compressors. For each candidate algorithm, the proxy sends the name in the -<emphasis> -name</emphasis> - field, and uses the <emphasis> -detail</emphasis> - field to send any additional data specific to each compression algorithm. The -reply contains a 0-based index into the list of algorithms to indicate which -algorithm to use, followed by data specific to that algorithm. -</para> - - -<para> -Bitmap compression is negotiated using the <emphasis> -bitmap-comp</emphasis> - option. The proxy sends a list of names of available algorithms, and the -server reply lists the algorithms to use. For each bitmap algorithm in the -reply, a 0-based index into the list of algorithms indicates the algorithm, and -the <emphasis> -opcode</emphasis> - field gives the value for use in requests. The algorithm names follow the -conventions in <ulink url="lbx.htm#13570">See Algorithm Naming</ulink>. -</para> - - -<para> -Pixmap compression is negotiated using the <emphasis> -pixmap-comp</emphasis> - option. The proxy sends a list of available algorithms. For each algorithm, -the list includes, the name, a bitmask of supported formats, and a list of -depths that the format supports. The server reply lists the algorithms to use. -For each pixmap algorithm in the reply, the reply contains a 0-based index into -the list of proxy algorithms, the opcode to use in requests when referring to -this algorithm, a mask of valid formats, and a list of valid depths. Algorithm -names follow the conventions in <ulink url="lbx.htm#13570">See Algorithm -Naming</ulink>. -</para> - - -<para> -Squishing is negotiated using the use-squish option. If the proxy desires -squishing, it sends a true value. The reply from the server indicates whether -to do squishing, and will indicate squishing only if <emphasis> -use-squish</emphasis> - is set to true in the request. -</para> - - -<para> -Tag caching, described in <ulink url="lbx.htm#11018">See Tags</ulink>, is -negotiated using the use-tag option. If the proxy desires tag caching, it sends -a true value. The reply from the server indicates whether to do tag caching, -and will demand caching only if <emphasis> -use-tag</emphasis> - is set to true in the request. -</para> - - -<para> -The colormap option is used to negotiate what color matching algorithm will be -used by the proxy when the proxy uses the <emphasis> -LbxAllocColor</emphasis> - request to allocate pixels in a grabbed colormap. To negotiate using the -colormap option, the proxy lists the names of available colormap algorithms. -The choice in the reply contains a 0-based index into the list of algorithms to -indicate which algorithm to use, followed by data specific to that algorithm. -If no colormap algorithm is successfully negotiated, then the <emphasis> -LbxAllocColor</emphasis> -, <emphasis> -LbxGrabCmap</emphasis> -, and <emphasis> -LbxReleaseCmap</emphasis> - requests will not be used. -</para> - - -<para> -The extension option is used to control extensions to LBX. These extensions -may, for example, enable other types of compression. To negotiate an extension, -the name of the extension is sent, followed by any data specific to that -extension. The extension name follows the conventions in <ulink -url="lbx.htm#13570">See Algorithm Naming</ulink>. The extension option may -occur multiple times in the start proxy message, since multiple extensions can -be negotiated. The reply to an extension option contains the zero-based index -of the extension option, as counted in the <emphasis> -LbxStartProxy</emphasis> - message. This index is followed by extension-specific information. The server -does not respond to extensions it does not recognize. -</para> - - -<para> -An <emphasis> -LbxClient</emphasis> - error is returned when a client which is already communicating through an LBX -proxy to the X server sends a <emphasis> -LbxStartProxy</emphasis> - request. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#27452">See -LbxStartProxy</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxStopProxy</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -LbxClient</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request terminates the connection between the proxy and X server, and -terminates any clients connected through the proxy. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#23471">See -LbxStopProxy</ulink>. -</para> - - -<para> -An <emphasis> -LbxClient</emphasis> - error is returned if the requesting client is not an LBX proxy. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxNewClient</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -byte-order</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -client-id</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -protocol-major-version</emphasis> -: CARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -protocol-minor-version:</emphasis> - CARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -authorization-protocol-name</emphasis> -: STRING8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -authorization-protocol-data</emphasis> -: STRING8</entry> - </row> - <row rowsep='0'> - <entry>=></entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>Core X reply (if connection is rejected)</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> </entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>OR</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> </entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>success: BOOL</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>change-type: {NoDeltas, NormalClientDeltas, -AppGroupDeltas}</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>protocol-major-version: CARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>protocol-minor-version: CARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>tag-id: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>length: CARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>connection-data: CONINFO or CONDIF or -CONDIFROOT</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> </entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>where:</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>CONINFO: (the "additional data" -portion of the core connection reply for successes)</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>CONDIF: [resource-id-base: CARD32,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> root-input-masks: LISTofSETofEVENT]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>CONDIFROOT: [resource-id-base: -CARD32,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> root: WINDOW</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> root-visual: VISUALID</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> default-colormap: COLORMAP</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> white-pixel, black-pixel: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> root-input-masks: LISTofSETofEVENT]</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -Errors: LbxClient, Alloc -</para> - - -<para> -This request, which is sent by the proxy over the control connection, creates a -new virtual connection to the server. -</para> - - -<para> -Much of the information in the <emphasis> -LbxNewClient</emphasis> - request and reply is identical to the connection setup and reply information -in the core X protocol. -</para> - - -<para> -For the <emphasis> -LbxNewClient</emphasis> - request, the field unique to LBX is client-id. For the <emphasis> -LbxNewClient</emphasis> - reply, <emphasis> -tag-id</emphasis> - and <emphasis> -change-type</emphasis> - are fields unique to LBX, and the contents of connection-data may be different -in LBX from the core X protocol (see below). -</para> - - -<para> -The proxy assigns each virtual connection a unique identifier using the -<emphasis> -client-id</emphasis> - field in the <emphasis> -LbxNewClient</emphasis> - request. This client-id is used in the LBX protocol to specify the current -client (see the <emphasis> -LbxSwitch</emphasis> - request and the <emphasis> -LbxSwitchEvent</emphasis> -). client-id 0 is reserved for the proxy control connection. An <emphasis> -LbxClient</emphasis> - error will result if the <emphasis> -LbxNewClient</emphasis> - request contains a client-id of 0 or an already in use client-id. -</para> - - -<para> -If the server rejects this new virtual connection, the server sends a core X -connection failure reply to the proxy. The current version of LBX does not -support the return of an <emphasis> -Authenticate</emphasis> - reply. -</para> - - -<para> -If the <emphasis> -change-type</emphasis> - field is set to <emphasis> -NoDeltas</emphasis> -, then <emphasis> -connection-data</emphasis> - is sent using the CONINFO structure, which is identical to the additional data -of the core connection reply. If the <emphasis> -tag-id</emphasis> - is non-zero, then the connection-data is stored by the proxy using this tag -value. Tagged connection data must be stored by the proxy, and can not be -invalidated by the proxy until an <emphasis> -LbxInvalidateTag</emphasis> - event is received for that tag. -</para> - - -<para> -When the <emphasis> -change-type</emphasis> - field is not set to <emphasis> -NoDeltas</emphasis> -, then connection data is sent as changes against connection information -previously sent to the proxy. The <emphasis> -tag-id</emphasis> - field, if non-zero, has the tag of the previously sent data to apply the -changes to. A zero tag-id indicates that the changes are with respect to the -connection information sent when the proxy connected to the server. -</para> - - -<para> -If the <emphasis> -change-type</emphasis> - field is set to <emphasis> -NormalClientDeltas</emphasis> -, then <emphasis> -connection-data</emphasis> - is sent using the CONDIF structure. The values in the CONDIF structure are -substituted for the identically named fields of the connection information for -the new connection. -</para> - - -<para> -If the <emphasis> -change-type</emphasis> - field is set to <emphasis> -AppGroupDeltas</emphasis> -, then <emphasis> -connection-data</emphasis> - is sent using the CONDIFROOT structure. The <emphasis> -root</emphasis> -, <emphasis> -root-visual</emphasis> -, and <emphasis> -default-colormap</emphasis> - fields, when nonzero, are substituted for the corresponding fields in the -reference connection information. The <emphasis> -white-pixel</emphasis> - and <emphasis> -black-pixel</emphasis> - fields are substituted only when the <emphasis> -default-colormap</emphasis> - field of the reply is non-zero. When <emphasis> -default-colormap</emphasis> - field of the reply is zero, so are <emphasis> -white-pixel</emphasis> - and <emphasis> -black-pixel</emphasis> -. The first entry in the <emphasis> -root-input-masks</emphasis> - field is the current-input-mask for the default root window. The remaining -entries in <emphasis> -root-input-masks</emphasis> - are input masks for non-video screens, as defined by the X Print Extension. -The number of non-video screens is one less than the number of entries in -<emphasis> -root-input-masks</emphasis> -. These screens are at the end of screen list in the reference connection -information. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#15166">See The -description of this request is on page 13.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxCloseClient</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -client</emphasis> -: CARD32</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -LbxClient</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This requests the server to close down the connection represented by the -specified proxy’s client identifier. If the specified client wasn’t -previously registered with the server by a <emphasis> -LbxNewClient</emphasis> - request, the server will send the <emphasis> -LbxClient</emphasis> - error. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#21121">See The -description of this request is on page 12.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxSwitch</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -client</emphasis> -: CARD32</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -LbxClient</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request causes the X server to treat subsequent requests as being from a -connection to the X server represented by the specified client identifier. -</para> - - -<para> -If the client making the request is not the proxy, or if the client identifier -sent in the request was not previously sent in a <emphasis> -LbxNewClient</emphasis> - request, an <emphasis> -LbxClient</emphasis> - error is returned. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#36790">See -LbxSwitch</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxSync</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry>=></entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -The sync request causes the server to send a reply when all requests before the -sync request have been processed. -</para> - - -<para> -The encoding for this client is on <ulink url="lbx.htm#21186">See -LbxSync</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxModifySequence</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -adjust</emphasis> -: CARD32</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: None</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request advances the sequence number of the virtual client connection by -the specified amount. The proxy sends the <emphasis> -LbxModifySequence</emphasis> - request to the server when it replies to a client request without forwarding -the client request on to the X server. -</para> - - -<para> -The encoding for this client is on <ulink url="lbx.htm#10940">See The -description of this request is on page 13.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxAllowMotion</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -num</emphasis> -: CARD32</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: None</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request controls the delivery of optional motion notify events, as -described in <ulink url="lbx.htm#15503">See Motion events</ulink>. The num -field specifies an increase in the allowed number of motion notify events sent. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#11897">See The -description of this request is on page 14.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxInvalidateTag</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -tag</emphasis> -: CARD32</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -The LBX proxy sends this notification to the X server when it refuses to store -tagged data, or when it releases tagged data which was previously stored and -which was not invalidated by a notification from the X server. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#37545">See -LbxInvalidateTag</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxTagData</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -tag</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -real-length</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -data</emphasis> -: LISTofBYTE</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request specifies the data associated with a previously assigned tag. It -is sent in two circumstances: in response to receiving a <emphasis> -SendTagDataEvent</emphasis> -, and spontaneously, when the proxy must rely on the server to store data which -was not previously received from the server. The data is carried in the byte -order and structure as would have originally been sent in the core protocol -request. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#37174">See -LbxTagData</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxGrabCmap</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -cmap</emphasis> -: Colormap </entry> - </row> - <row rowsep='0'> - <entry>=></entry> - </row> - - <row rowsep='0'> - <entry role='protoargs'><emphasis> -smart-grab</emphasis> -: BOOL</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -large-pixel: </emphasis> -BOOL /* optional */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -auto-release: </emphasis> -BOOL /* optional */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -three-channels</emphasis> -: BOOL /* optional */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -bits-per-rgb: </emphasis> -CARD4 /* optional */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -cells</emphasis> -: LISTofCHAN /* optional */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> </entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>where:</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>CHAN: LISTofLBXPIXEL</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>LBXPIXEL: PIXELPRIVATE or PIXELPRIVATERANGE -or </entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> PIXELALLOC or PIXELALLOCRANGE </entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>PIXEL: CARD8 or CARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>PIXELPRIVATE: [ pixel: PIXEL ]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>PIXELPRIVATERANGE: [ first-pixel, -last-pixel: PIXEL]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>PIXELALLOC: [ pixel: PIXEL,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> color: COLORSINGLE or COLORTRIPLE]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>PIXELALLOCRANGE: [ first-pixel, -last-pixel: PIXEL,</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> colors: LISTofCOLORSINGLE or -LISTofCOLORTRIPLE]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>COLORSINGLE: [ value: CARD8 or CARD16 -]</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>COLORTRIPLE: [ r, g, b: -COLORSINGLE]</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Colormap</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request asks the server for control of allocating new colormap cells in -the specified colormap. The server grants control by replying to this request. -If no changes have occurred since the last time this proxy grabbed this -colormap, then the <emphasis> -smart-grab</emphasis> - field of the reply is set to true, and the optional fields are not sent. -Otherwise, the current contents of the colormap are placed in the reply, as -described later in this section. -</para> - - -<para> -Once the proxy has received the reply, it can use the <emphasis> -LbxAllocColor</emphasis> - request to allocate new colormap cells without the performance penalty of -round trips. The proxy is still permitted to use the normal colormap and -<emphasis> -LbxIncrementPixel</emphasis> - requests while the colormap is grabbed. The grab is valid across all virtual -connections of the proxy. -</para> - - -<para> -The <emphasis> -LbxGrabCmap</emphasis> - request is limited to colormaps for the visual types negotiated as part of the -colormap algorithm negotiation in the start proxy request at connection setup. -</para> - - -<para> -The server and other proxies may not allocate new colormap cells in the -colormap while the colormap is grabbed by this proxy. If the server or another -proxy needs to allocate new colormap cells, the server sends a Lbx<emphasis> -ReleaseCmap</emphasis> - event to the proxy holding the grab, which then issues an <emphasis> -LbxReleaseCmap</emphasis> - request. -</para> - - -<para> -The server and other proxies may free colormap cells in a colormap grabbed by a -proxy. The server will send an <emphasis> -LbxFreeCells</emphasis> - event to the proxy that currently has the colormap grabbed when the cell -reference count reaches 0. -</para> - - -<para> -If the colormap is a of a static visual type, such as <emphasis> -StaticGray</emphasis> -, <emphasis> -StaticColor</emphasis> -, <emphasis> -GrayScale</emphasis> -, or <emphasis> -TrueColor</emphasis> -, then the proxy’s grab is immediately released by the server, and the proxy -must use <emphasis> -LbxIncrementPixel</emphasis> - requests in place of <emphasis> -LbxAllocColor</emphasis> - requests for this colormap. -</para> - - -<para> -If the cmap field does not refer to a valid colormap or the colormap is already -grabbed by this proxy then a <emphasis> -Colormap</emphasis> - error is generated. -</para> - - -<para> -The reply describes the contents of the colormap via several arguments and a -descriptive list containing one or three channels, with each channel describing -allocations in the colormap. -</para> - - -<para> -The <emphasis> -large-pixel</emphasis> - argument, if True, specifies that PIXEL indices will be listed as CARD16 -quantities instead of CARD8. The<emphasis> - auto-release</emphasis> - field, if True, indicates that this colormap is of a static visual type and -the proxy’s grab is immediately released by the server. -</para> - - -<para> -If <emphasis> -three-channels</emphasis> - is False, a single channel is enclosed and color values are described using -COLORTRIPLE, which has fields for red, green and blue. A single channel is used -when the visual type is not <emphasis> -DirectColor</emphasis> - or <emphasis> -TrueColor</emphasis> -. -</para> - - -<para> -If <emphasis> -three-channels</emphasis> - is True, separate red, green and blue channel lists are enclosed, for -describing a <emphasis> -DirectColor</emphasis> - or <emphasis> -TrueColor</emphasis> - colormap. Color values for entries in each channel are sent using COLORSINGLE -and the corresponding PIXEL value refers to the RGB subfield of the current -channel, as defined by the corresponding red-mask, green-mask and blue-mask of -the visual. -</para> - - -<para> -The <emphasis> -bits-per-rgb</emphasis> - value is one less than the bits-per-rgb-value field of the visual that the -colormap belongs to. If the value is 7 or less, then COLORSINGLE values in the -descriptive list are sent using CARD8 fields. Otherwise these values are sent -using CARD16 fields. -</para> - - -<para> -The list describing current colormap allocations contains entries of the -following types: -</para> - - -<para> -An LBXPIXELPRIVATE entry indicates that the pixel in the <emphasis> -pixel </emphasis> -field is unavailable for allocation. -</para> - - -<para> -An LBXPIXELPRIVATERANGE entry indicates that a contiguous range of pixels are -unavailable for allocation. The range is <emphasis> -first-pixel</emphasis> - to <emphasis> -last-pixel</emphasis> -, and includes <emphasis> -last-pixel</emphasis> -. -</para> - - -<para> -An LBXPIXELALLOC entry indicates that the pixel in the <emphasis> -pixel </emphasis> -field is allocated as a read-only pixel. The <emphasis> -color</emphasis> - field carries the color information of the pixel. -</para> - - -<para> -An LBXPIXELALLOCRANGE entry indicates that a contiguous range of pixels are -allocated as read-only. The range starts <emphasis> -first-pixel</emphasis> - to <emphasis> -last-pixel</emphasis> -, and includes <emphasis> -last-pixel</emphasis> -. These fields are followed by a list of COLORSINGLE or COLORTRIPLE, depending -on the value of <emphasis> -three-channels</emphasis> -. -</para> - - -<para> -A NEXTCHANNEL entry indicates that the next channel of the colormap will be -described. -</para> - - -<para> -A LISTEND entry indicates the end of the colormap description. -</para> - - -<para> -All pixels not described in the reply are unallocated. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#17198">See -LbxGrabCmap</ulink>. -</para> - - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxReleaseCmap</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -cmap</emphasis> -: Colormap</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request releases the specified grabbed colormap. If the <emphasis> -cmap</emphasis> - field does not refer to a colormap, a <emphasis> -BadColormap</emphasis> - error is produced. -</para> - - -<para> -The proxy must remember the state of the colormap when the <emphasis> -LbxReleaseCmap</emphasis> - request is issued if this proxy may at some future time issue another -<emphasis> -LbxGrabCmap</emphasis> - request on this colormap before the state of the colormap changes. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#14796">See -LbxReleaseCmap</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxInternAtoms</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -count</emphasis> -: CARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -names: LISTofSTRING8</emphasis> -</entry> - </row> - <row rowsep='0'> - <entry>=></entry> - </row> - - <row rowsep='0'> - <entry role='protoargs'><emphasis> -atoms</emphasis> -: LISTofATOM</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request allows the proxy to intern a group of atoms in a single round -trip. The server will create any atoms that do not exist. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#34140">See -LbxInternAtoms</ulink>. -</para> - - - -</sect3> -<sect3 id='substitution_requests'> -<title>Substitution Requests</title> - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxAllocColor</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -cmap</emphasis> -: Colormap</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -pixel</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -red</emphasis> -, <emphasis> -green</emphasis> -, <emphasis> -blue</emphasis> -: CARD16</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request is sent by a proxy that has given colormap grabbed to allocate a -new read-only cell in the colormap. The proxy may substitute this request for -the core <emphasis> -AllocColor</emphasis> - and <emphasis> -AllocNamedColor</emphasis> - requests. -</para> - - -<para> -The <emphasis> -pixel</emphasis> - field identifies the colormap cell to allocate. The <emphasis> -red</emphasis> -, <emphasis> -green</emphasis> -, and <emphasis> -blue</emphasis> - fields are the hardware specific color values of the corresponding fields of -the core <emphasis> -AllocColor</emphasis> - request. The mapping to hardware specific colormap values by the proxy is -performed using the color algorithm negotiated by <emphasis> -LbxStartProxy</emphasis> -. -</para> - - -<para> -For colormaps of static visual types, the <emphasis> -LbxIncrementPixel</emphasis> - request is used instead of LBX <emphasis> -AllocColor</emphasis> -. -</para> - - -<para> -If the <emphasis> -cmap</emphasis> - field does not identify a grabbed colormap then a <emphasis> -BadAccess</emphasis> - error is produced. If the <emphasis> -pixel</emphasis> - field refers to a read-write entry, or the pixel field refers to a pixel -outside of the range of this colormap, a <emphasis> -BadAlloc</emphasis> - error is produced. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#28429">See -LbxAllocColor</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxIncrementPixel</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -cmap</emphasis> -: COLORMAP</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -pixel</emphasis> -: CARD32</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: None</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -AllocColor</emphasis> - request for read-only pixels currently allocated for the current client. If -the visual type of the colormap is of a static type, this request may be used -on currently unallocated pixels. The colormap is not required to be grabbed to -use this request. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#38053">See The -description of this request is on page 14.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxDelta</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -count</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -cache-index</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -diffs</emphasis> -: LISTofDIFFITEM</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request contains a minimal amount of information relative to a similar -prior request. The information is in the form of a difference comparison to a -prior request. The prior request is specified by an index to a cache, -independently maintained by both the proxy and the server. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#39838">See The -description of this request is on page 18.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxGetModifierMapping</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry>=></entry> - </row> - - <row rowsep='0'> - <entry role='protoargs'><emphasis> -keyspermod</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -tag</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -keycodes</emphasis> -: LISTofKEYCODE /* optional */</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request is identical to the core <emphasis> -GetModifierMapping</emphasis> - request, with the addition of a tag being returned in the reply. See <ulink -url="lbx.htm#26534">See Tag Substitution in Requests</ulink> for a description -of the <emphasis> -tag</emphasis> - field and optional fields. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#40057">See -LbxGetModifierMapping</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxGetKeyboardMapping</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -firstKeyCode</emphasis> -: KEYCODE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -count</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry>=></entry> - </row> - - <row rowsep='0'> - <entry role='protoargs'><emphasis> -keysperkeycode</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -tag</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -keysyms</emphasis> -: LISTofKEYSYM /* optional */</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Value</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request is identical to the X <emphasis> -GetKeyboardMapping</emphasis> - protocol request, with the addition that a tag is returned in the reply. See -<ulink url="lbx.htm#26534">See Tag Substitution in Requests</ulink> for a -description of the <emphasis> -tag</emphasis> - field and optional fields. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#21702">See -LbxGetKeyboardMapping</ulink>. -</para> - - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxGetWinAttrAndGeom</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -window</emphasis> -: WINDOW</entry> - </row> - <row rowsep='0'> - <entry>=></entry> - </row> - - <row rowsep='0'> - <entry role='protoargs'>visual: VISUALID</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>class: {InputOutput, InputOnly}</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>bit-gravity: BITGRAVITY</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>win-gravity: WINGRAVITY</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>backing-store: {NotUseful, WhenMapped, -Always}</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>backing-planes: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>backing-pixel: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>save-under: BOOL</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>colormap: COLORMAP or None</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>map-is-installed: BOOL</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>map-state: {Unmapped, Unviewable, -Viewable}</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>all-event-masks, your-event-mask: -SETofEVENT</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>do-not-propagate-mask: SETofDEVICEEVENT</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>override-redirect: BOOL</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>root: WINDOW</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>depth: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>x, y: INT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>width, height, border-width: CARD16</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Window</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -<emphasis> -GetWindowAttributes</emphasis> - and <emphasis> -GetGeometry</emphasis> - are frequently used together in the X protocol. <emphasis> -LbxGetWinAttrAndGeom</emphasis> - allows the proxy to request the same information in one round trip. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#41440">See -LbxGetWinAttrAndGeom</ulink>. -</para> - - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxQueryFont</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -font</emphasis> -: FONTABLE</entry> - </row> - <row rowsep='0'> - <entry>=></entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>compression: BOOL</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>tag: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>font-info: FONTINFO /* optional -*/</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>char-infos: LISTofCHARINFO or LISTofLBXCHARINFO - /* optional */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>where:</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>LBXCHARINFO: [left-side-bearing: -INT6</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> right-side-bearing: INT7</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> character-width: INT6</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> ascent: INT6</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> descent: INT7]</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Font,Alloc</emphasis> - </entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request is used to replace the core <emphasis> -QueryFont</emphasis> - request and has identical semantics. -</para> - - -<para> -See <ulink url="lbx.htm#26534">See Tag Substitution in Requests</ulink> for a -description of the <emphasis> -tag</emphasis> - field and optional fields. -</para> - - -<para> -The <emphasis> -compression</emphasis> - field is True if the <emphasis> -char-infos</emphasis> - field is represented using LBXCHARINFO. -</para> - - -<para> -The per-character information will be encoded in an LBXCHARINFO when, for every -character, the character-width, left-side-bearing, and ascent can each be -represented in not more than 6 bits, and the right-side-bearing and descent can -each be represented in not more than 7 bits, and the attributes field is -identical the attributes field of the max_bounds of the <emphasis> -font_info</emphasis> - field of the font. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#24597">See -LbxQueryFont</ulink>. -</para> - - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxChangeProperty</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -window</emphasis> -: WINDOW</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -property</emphasis> -: ATOM</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -type</emphasis> -: ATOM</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -format</emphasis> -: {0,8,16,32}</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -mode</emphasis> -: {Replace, Prepend, Append}</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -nUnits</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry>=></entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>tag: CARD32</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request is sent to the server when the client sends an X <emphasis> -ChangeProperty </emphasis> -request through the proxy. The size of the data is sent with this request, but -not the property data itself. The server reply contains a tag identifier for -the data, which is stored in the proxy. The proxy must not discard this data -before it is sent to the server, or invalidated by the server. This means that -before issuing an <emphasis> -LbxStopProxy</emphasis> - request, or exiting, the proxy must send Lbx<emphasis> -TagData</emphasis> - requests for these items. If the server loses the connection before the -information is sent back, the server should revert the property value to its -last known value, if possible. -</para> - - -<para> -If the <emphasis> -mode</emphasis> - field is <emphasis> -Prepend</emphasis> - or <emphasis> -Append</emphasis> -, the tag refers only to the prepended or appended data. -</para> - - -<para> -If the tag in the reply is zero, then the change was ignored by the server, as -defined in the security extension. The proxy should dump the associated data, -since the server will never ask for it. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#18013">See -LbxChangeProperty</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxGetProperty</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -window</emphasis> -: WINDOW</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -property</emphasis> -: ATOM</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -type</emphasis> -: ATOM or AnyPropertyType</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -long-offset</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -long-length</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -delete</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry>=></entry> - </row> - - <row rowsep='0'> - <entry role='protoargs'>type: ATOM or None</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>format: {0, 8, 16, 32}</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>bytes-after: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>nItems: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>tag: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>value: LISTofINT8 or LISTofINT16 or -LISTofINT32</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request may be used by the proxy as a substitution for a core <emphasis> -GetProperty</emphasis> - request. It allows tags to be used for property data that is unlikely to -change often in value, but is likely to be fetched by multiple clients. -</para> - - -<para> -The <emphasis> -LbxGetProperty</emphasis> - request has the same arguments as the core <emphasis> -GetProperty</emphasis> - request. The reply for <emphasis> -LbxGetProperty</emphasis> - has all of the fields from the core <emphasis> -GetProperty</emphasis> - reply, but has the additional fields of <emphasis> -nItems</emphasis> - and <emphasis> -tag</emphasis> -. -</para> - - -<para> -In order to utilize tags in <emphasis> -LbxGetProperty</emphasis> - for a specific property, the server must first send the complete property data -to the proxy and associate this data with a tag. More precisely, the server -sends an <emphasis> -LbxGetProperty</emphasis> - reply with a new <emphasis> -tag</emphasis> -, <emphasis> -nItems</emphasis> - set to the number of items in the property, the size of the property data in -the reply length field, and the complete property data in value. The proxy -stores the property data in its tag cache and associates it with the specified -tag. -</para> - - -<para> -In response to future <emphasis> -LbxGetProperty</emphasis> - requests for the same property, if the server thinks that the proxy has the -actual property data in its tag cache, it may choose to send an <emphasis> -LbxGetProperty</emphasis> - reply without the actual property data. In this case, the reply would include -a non-zero <emphasis> -tag</emphasis> -, a zero reply length, and no data for value. -</para> - - -<para> -If the server chooses not to generate a tagged reply to <emphasis> -LbxGetProperty</emphasis> -, or for some reason is unable to do so, it would send a reply with a <emphasis> -tag</emphasis> - of zero, the size of the property data in the reply length field, and the -complete property data in value. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#13863">See -LbxGetProperty</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxPolyPoint</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -points</emphasis> -: LISTofLBXPOINT</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> - and those given for the corresponding X request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -PolyPoint</emphasis> - request. Not all <emphasis> -PolyPoint</emphasis> - requests can be represented as <emphasis> -LbxPolyPoint</emphasis> - requests. -</para> - - -<para> -The proxy will convert the representation of the points to be relative to the -previous point, as described by previous coordinate mode in the X protocol. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#29719">See -LbxPolyPoint</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxPolyLine</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -points</emphasis> -: LISTofLBXPOINT</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> - and those given for the corresponding X request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -PolyLine</emphasis> - request. Not all <emphasis> -PolyLine</emphasis> - requests can be represented as <emphasis> -LbxPolyline</emphasis> - requests. -</para> - - -<para> -The proxy will convert the representation of the points to be relative to the -previous point, as described by previous coordinate mode in the X protocol. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#31086">See The -description of this request is on page 21.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxPolySegment</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -segments</emphasis> -: LISTofLBXSEGMENT</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'> </entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>where:</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>LBXSEGEMENT; [x1, y1, x2, y2: LBXINT16]</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> - and those given for the corresponding X request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -PolySegment</emphasis> - request. Not all <emphasis> -PolySegment</emphasis> - requests can be represented as <emphasis> -LbxPolySegment</emphasis> - requests. -</para> - - -<para> -For segments other than the first segment of the request, [x1, y1] is -relative to [x1, y1] of the previous segment. For all segments, [x2, y2] is -relative to that segment’s [x1, y1]. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#27528">See -LbxPolySegment</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxPolyRectangle</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -rectangles</emphasis> -: LISTofLBXRECTANGLE</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> - and those given for the corresponding X request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -PolyRectangle</emphasis> - request. Not all <emphasis> -PolyRectangle</emphasis> - requests can be represented as <emphasis> -LbxPolyRectangle</emphasis> - requests. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#33628">See The -description of this request is on page 22.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxPolyArc</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -arcs</emphasis> -: LISTofLBXARC</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> - and those given for the corresponding X request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -PolyArc</emphasis> - request. Not all <emphasis> -PolyArc</emphasis> - requests can be represented as <emphasis> -LbxPolyArc</emphasis> - requests. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#25855">See -LbxPolyArc</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxPolyFillRectangle</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -rectangles</emphasis> -: LISTofLBXRECTANGLE</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> - and those given for the corresponding X request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -PolyFillRectangle</emphasis> - request. Not all <emphasis> -PolyFillRectangle</emphasis> - requests can be represented as <emphasis> -LbxPolyFillRectangle</emphasis> - requests. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#26399">See -LbxPolyFillRectangle</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxPolyFillArc</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -arcs</emphasis> -: LISTofLBXARC</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> - and those given for the corresponding X request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -PolyFillArc</emphasis> - request. Not all <emphasis> -PolyFillArc</emphasis> - requests can be represented as <emphasis> -LbxPolyFillArc</emphasis> - requests. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#19081">See The -description of this request is on page 22.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxFillPoly</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -shape</emphasis> -: BYTE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -points</emphasis> -: LISTofLBXPOINT</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> - and those given for the corresponding X request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -FillPoly</emphasis> - request. Not all <emphasis> -FillPoly</emphasis> - requests can be represented as <emphasis> -LbxFillPoly</emphasis> - requests. -</para> - - -<para> -The proxy will convert the representation of the points to be relative to the -previous point, as described by previous coordinate mode in the X protocol. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#24998">See -LbxFillPoly</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxCopyArea</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -srcCache</emphasis> -: CARD8 /* source drawable */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -src-Drawable</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -src-x</emphasis> -: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -src-y</emphasis> -: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -width</emphasis> -: LBXCARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -height</emphasis> -: LBXCARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -dst-x</emphasis> -: LBXPINT16 </entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -dst-y</emphasis> -: LBXPINT16</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: Those given for the corresponding X -request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -CopyArea</emphasis> - request for requests within its encoding range. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#10231">See -LbxCopyArea</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxCopyPlane</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -bit-plane</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -src-cache</emphasis> -: CARD8 /* cache reference for source drawable */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -src-drawable</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -src-x</emphasis> -: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -src-y</emphasis> -: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -width</emphasis> -: LBXCARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -height</emphasis> -: LBXCARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -dst-x</emphasis> -: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -dst-y</emphasis> -: LBXPINT16</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: Those given for the corresponding X -request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -CopyPlane</emphasis> - request for requests within its coding range. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#18847">See -LbxCopyPlane</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxPolyText8</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -x</emphasis> -: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -y</emphasis> -: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -items</emphasis> -: LISTofTEXTITEM8</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> -, and those given for the corresponding X request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -PolyText8</emphasis> - request for requests within its encoding range. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#39640">See The -description of this request is on page 23.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxPolyText16</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -x:</emphasis> - LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -y</emphasis> -: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -items</emphasis> -: LISTofTEXTITEM16</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> -, and those given for the corresponding X request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -PolyText16</emphasis> - request for requests within its encoding range. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#32634">See The -description of this request is on page 24.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxImageText8</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -nChars</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -x</emphasis> -: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -y</emphasis> -: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -string</emphasis> -: STRING8</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> -, and those given for the corresponding X request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -ImageText8</emphasis> - request for requests within its encoding range. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#17018">See The -description of this request is on page 24.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxImageText16</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -nChars</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>x: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -y</emphasis> -: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -string</emphasis> -: STRING16</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> -, and those given for the corresponding X request.</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request replaces the <emphasis> -ImageText16</emphasis> - request for requests within its encoding range. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#23910">See The -description of this request is on page 24.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxPutImage</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -compression-method</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -format</emphasis> -: {<emphasis> -Bitmap</emphasis> -, <emphasis> -XYPixmap</emphasis> -, <emphasis> -ZPixmap</emphasis> -} /* packed */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -gc-and-drawable: </emphasis> -LBXGCANDDRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -width</emphasis> -, <emphasis> -height</emphasis> -: LBXCARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -dst-x</emphasis> -, <emphasis> -dst-y</emphasis> -: LBXPINT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -depth</emphasis> -: CARD8 /* packed */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -left-pad</emphasis> -: CARD8 /* packed */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -pad-bytes</emphasis> -: CARD8 /* packed */</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -data</emphasis> -:LISTofBYTE</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> -, <emphasis> -Value</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -When the request can be usefully compressed, this request replaces the -<emphasis> -PutImage</emphasis> - request. The <emphasis> -compression-method</emphasis> - parameter contains the opcode of a compression method returned in the -<emphasis> -LbxStartProxy</emphasis> - reply. The <emphasis> -pad-bytes</emphasis> - parameter gives the number of unused pad bytes that follow the compressed -image data. All other parameters are as in the X request. If the specified -compression method is not recognized, the server returns a <emphasis> -Value</emphasis> - error. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#12268">See -LbxPutImage</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxGetImage</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -drawable</emphasis> -: DRAWABLE</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -x</emphasis> -, <emphasis> -y</emphasis> -: INT16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -width</emphasis> -, <emphasis> -height</emphasis> -: CARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -plane-mask</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -format</emphasis> -: {XYPixmap, ZPixmap}</entry> - </row> - <row rowsep='0'> - <entry>=></entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>depth: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>x-length: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>visual: VISUALID or None</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>compression-method: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'>data: LISTofBYTE</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc,Match,Value</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request can replace the <emphasis> -GetImage</emphasis> - request. The same semantics apply, with the following exceptions. -</para> - - -<para> -The <emphasis> -compression-method</emphasis> - field contains the opcode of the compression method used in the reply. The -compression opcodes are supplied in the <emphasis> -LbxStartProxy</emphasis> - reply. The <emphasis> -x-length </emphasis> -field<emphasis> - </emphasis> -contains the length of the uncompressed version of the reply in 4 byte units. -</para> - - -<para> -A <emphasis> -Value</emphasis> - error is returned if the format is not recognized by the X server. A <emphasis> -Match</emphasis> - error is returned under the same circumstances as described by the <emphasis> -GetImage</emphasis> - request. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#10066">See -LbxGetImage</ulink>. -</para> - - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxBeginLargeRequest</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -large-request-length</emphasis> -: CARD32</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request, along with the Lbx<emphasis> -LargeRequestData</emphasis> - and Lbx<emphasis> -EndLargeRequest</emphasis> - requests, is used to transport a large request in pieces. The smaller size of -the resulting requests allows smoother multiplexing of clients on a single low -bandwidth connection to the server. The resulting finer-grained multiplexing -improves responsiveness for the other clients. -</para> - - -<para> -After a <emphasis> -LbxBeginLargeRequest</emphasis> - request is sent, multiple <emphasis> -LbxLargeRequestData</emphasis> - requests are sent to transport all of the data in the large request, and -finally an <emphasis> -LbxEndLargeRequest</emphasis> - request is sent. The large-request-length field expresses the total length of -the transported large request, expressed as the number of bytes in the -transported request divided by four. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#22013">See The -description of this request is on page 25.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxLargeRequestData</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -data</emphasis> -: LISTofBYTE</entry> - </row> - - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Alloc</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This request is used to carry the segments of a larger request, as described in -the definition of <emphasis> -LbxBeginLargeRequest</emphasis> -. The data must be carried in order, starting with the request header, and each -segment must be multiples of 4 bytes long. If the <emphasis> -LbxLargeRequestData</emphasis> - is not preceded by a corresponding <emphasis> -LbxBeginLargeRequest</emphasis> -, a <emphasis> -BadAlloc</emphasis> - error is generated. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#31469">See The -description of this request is on page 26.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxEndLargeRequest</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoerror'>Errors: <emphasis> -Length, Alloc</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -As described in the definition of <emphasis> -LbxBeginLargeRequest</emphasis> -, <emphasis> -LbxEndLargeRequest</emphasis> - is used to signal the end of a series of <emphasis> -LargeRequestData</emphasis> - requests. If the total length of the data transported by the <emphasis> -LbxLargeRequestData</emphasis> - requests does not match the large-request-length field of the preceding -<emphasis> -LbxBeginLargeRequest</emphasis> - request, then a <emphasis> -Length</emphasis> - error occurs. If the <emphasis> -LbxEndLargeRequest</emphasis> - is not preceded by a corresponding <emphasis> -LbxBeginLargeRequest</emphasis> -, a <emphasis> -BadAlloc</emphasis> - error is generated. The request is executed in order for that client as if it -were the request after the request preceding <emphasis> -LbxEndLargeRequest</emphasis> -. -</para> - - -<para> -The encoding for this request is on <ulink url="lbx.htm#31037">See -LbxEndLargeRequest</ulink>. -</para> - - - -</sect3> -</sect2> -<sect2 id='events'> -<title>Events</title> - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxSwitchEvent</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -client</emphasis> -: CARD32</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -Notify the proxy that the subsequent replies, events, and errors are relative -to the specified client. -</para> - - -<para> -The encoding for this event is on <ulink url="lbx.htm#17348">See -LbxSwitchEvent</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxCloseEvent</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -client</emphasis> -: CARD32</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -Notify the proxy that the specified client's connection to the server is closed. -</para> - - -<para> -The encoding for this event is on <ulink url="lbx.htm#41814">See The -description of this event is on page 27.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxInvalidateTagEvent</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -tag</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -tag-type</emphasis> -: {Modmap, Keymap, Property, Font, ConnInfo}</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This message informs the proxy that the tag and the server data referenced by -the tag are obsolete, and should be discarded. The tag type may be one of the -following values: <emphasis> -LbxTagTypeModmap</emphasis> -, <emphasis> -LbxTagTypeKeymap</emphasis> -, <emphasis> -LbxTagTypeProperty</emphasis> -, <emphasis> -LbxTagTypeFont</emphasis> -, <emphasis> -LbxTagTypeConnInfo</emphasis> -. -</para> - - -<para> -The encoding for this event is on <ulink url="lbx.htm#34406">See -LbxInvalidateTagEvent</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxSendTagDataEvent</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -tag</emphasis> -: CARD32</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -tag-type</emphasis> -: {Property}</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -The server sends this event to the proxy to request a copy of tagged data which -is being stored by the proxy. The request contains a tag which was previously -assigned to the data by the server. The proxy should respond to <emphasis> -SendTagData</emphasis> - by sending a <emphasis> -TagData</emphasis> - request to the server. The tag type may be one of the following values: -<emphasis> -LbxTagTypeProperty</emphasis> -. -</para> - - -<para> -The encoding for this event is on <ulink url="lbx.htm#22353">See -LbxSendTagDataEvent</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxListenToOne</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -client</emphasis> -: CARD32 or <emphasis> -0xffffffff</emphasis> -</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -When the server is grabbed, <emphasis> -ListenToOne</emphasis> - is sent to the proxy. As an X client, the proxy itself is unaffected by grabs, -in order that it may respond to requests for data from the X server. -</para> - - -<para> -When the client grabbing the server is managed through the proxy, the proxy -will permit messages from itself and the grabbing client to be sent immediately -to the server, and may buffer requests from other clients of the proxy. The -client is identified in the event. -</para> - - -<para> -When the client grabbing the server is not managed through the proxy, the -client field in the event will be <emphasis> -0xffffffff</emphasis> -. The proxy will communicate with the server, and it may buffer requests from -other clients. The proxy will continue to handle new connections while the -server is grabbed. -</para> - - -<para> -The server will send <emphasis> -ListenToAll</emphasis> - to the proxy when the server is ungrabbed. There is no time-out for this -interval in the protocol. -</para> - - -<para> -The encoding for this event is on <ulink url="lbx.htm#18630">See The -description of this event is on page 27.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <tbody> - <row rowsep='0'> - <entry role='protoname'>LbxListenToAll</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -Notify the proxy that the server has been ungrabbed, and that the proxy may now -send all buffered client requests on to the server. -</para> - - -<para> -The encoding for this event is on <ulink url="lbx.htm#30610">See The -description of this event is on page 27.</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxQuickMotionDeltaEvent</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -deltaTime</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -deltaX</emphasis> -: INT8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -deltaY</emphasis> -: INT8</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This event is used as a replacement for the <emphasis> -MotionNotify</emphasis> - event when possible. The fields are used as deltas to the most recent -<emphasis> -MotionNotify</emphasis> - event encoded as a <emphasis> -MotionNotify</emphasis> - event, <emphasis> -LbxQuickMotionDeltaEvent</emphasis> -, or <emphasis> -LbxMotionDeltaEvent</emphasis> -. Not every <emphasis> -MotionNotify</emphasis> - event can be encoded as a <emphasis> -LbxQuickMotionDeltaEvent</emphasis> -. -</para> - - -<para> -The encoding for this event is on <ulink url="lbx.htm#35213">See -LbxQuickMotionDeltaEvent</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxMotionDeltaEvent</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -deltaX</emphasis> -: INT8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -deltaY</emphasis> -: INT8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -deltaTime</emphasis> -: CARD16</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -deltaSequence</emphasis> -: CARD16</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This event is used as a replacement for the <emphasis> -MotionNotify</emphasis> - event when possible. The fields are used as deltas to the most recent -<emphasis> -MotionNotify</emphasis> - event encoded as a <emphasis> -MotionNotify</emphasis> - event, <emphasis> -LbxQuickMotionDeltaEvent</emphasis> -, or <emphasis> -LbxMotionDeltaEvent</emphasis> -. Not every <emphasis> -MotionNotify</emphasis> - event can be encoded as <emphasis> -a LbxMotionDeltaEvent</emphasis> -. -</para> - - -<para> -The encoding for this event is on <ulink url="lbx.htm#35310">See -LbxMotionDeltaEvent</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxReleaseCmapEvent</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -colormap</emphasis> -: Colormap</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This event notifies the proxy that it must release the grab on this colormap -via the ReleaseCmap request. <ulink url="lbx.htm#34675">See -LbxReleaseCmap</ulink> -</para> - - -<para> -The encoding for this event is on <ulink url="lbx.htm#14052">See -LbxReleaseCmapEvent</ulink>. -</para> - - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxFreeCellsEvent</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -colormap</emphasis> -: Colormap</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -pixelStart, pixelEnd</emphasis> -: CARD32</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -The <emphasis> -LbxFreeCells</emphasis> - event is sent to a proxy that has a colormap grabbed to notify the proxy that -the reference count of the described cells were decremented to zero by the -server or another proxy. The reference count includes those by this proxy. The -proxy must update its copy of the colormap state accordingly if the colormap is -still grabbed, or if the proxy may in the future grab the colormap using -smart-grab mode. <ulink url="lbx.htm#10922">See LbxGrabCmap</ulink> -</para> - - -<para> -The pixelStart and pixelEnd fields of the event denote a continuous range of -cells that were freed. -</para> - - -<para> -The encoding for this event is on <ulink url="lbx.htm#14731">See -LbxFreeCellsEvent</ulink>. -</para> - -</sect2> -<sect2 id='responses'> -<title>Responses</title> - -<para> -Responses are messages from the server to the proxy that not, strictly -speaking, events, replies or errors. -</para> - -<informaltable frame='none' tabstyle='proto'> -<tgroup cols='1'> -<colspec colsep='0'/> - <thead> - <row rowsep='0'> - <entry role='protoname'>LbxDeltaResponse</entry> - </row> - </thead> - <tbody> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -count</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -cache-index</emphasis> -: CARD8</entry> - </row> - <row rowsep='0'> - <entry role='protoargs'><emphasis> -diffs</emphasis> -: LISTofDIFFITEM</entry> - </row> - </tbody> - </tgroup> -</informaltable> - -<para> -This response carries an event, reply, or error that has been encoded relative -to a message in the response delta cache. The <emphasis> -cache-index</emphasis> - field is the index into the cache. Each entry in <emphasis> -diffs</emphasis> - provides a byte offset and replacement value to use in reconstructing the -response. -</para> - - -<para> -The encoding for this event is on <ulink url="lbx.htm#17100">See -LbxDeltaResponse</ulink>. -</para> - - -</sect2> -</sect1> -<sect1 id='algorithm_naming'> -<title>Algorithm Naming</title> - -<para> -To avoid potential clashes between different but similar algorithms for stream, -bitmap, and pixmap compression, the following naming scheme will be adhered to: -</para> - - -<para> -Each algorithm has a unique name, which is a STRING8, of the following form: -</para> - - -<para> - <organization>-<some-descriptive-name> -</para> - - -<para> -The organization field above is the organization name as registered in section -1 of the X Registry (the registry is provided as a free service by the X -Consortium.) This prevents conflicts among different vendor’s extensions. -</para> - - -<para> -As an example, the X Consortium defines a zlib-based stream compression -algorithm called XC-ZLIB. -</para> - - -</sect1> -<sect1 id='encoding'> -<title>Encoding</title> - -<para> -The syntax and types used in the encoding are taken from the X protocol -encoding. Where LBX defines new types, they are defined earlier in this -document. -</para> - - -<para> -As in the X protocol, in various cases, the number of bytes occupied by a -component will be specified by a lowercase single-letter variable name instead -of a specific numeric value, and often some other component will have its value -specified as a simple numeric expression involving these variables. Components -specified with such expressions are always interpreted as unsigned integers. -The scope of such variables is always just the enclosing request, reply, error, -event, or compound type structure. -</para> - - -<para> -For unused bytes, the encode-form is: -</para> - -<literallayout> -N unused -</literallayout> - -<para> -If the number of unused bytes is variable, the encode-form typically is: -</para> - -<literallayout> -p unused, p=pad(E) -</literallayout> - -<para> -where E is some expression, and pad(E) is the number of bytes needed to round E -up to a multiple of four. -</para> - - -<para> -pad(E) = (4 - (E mod 4)) mod 4 -</para> - - -<para> -In many of the encodings, the length depends on many variable length fields. -The variable L is used to indicate the number of padded 4 byte units needed to -carry the request. Similarly, the variable Lpad indicates the number of bytes -needed to pad the request to a 4 byte boundary. -</para> - -<literallayout> -For counted lists there is a common encoding of NLISTofFOO: -</literallayout> - -<literallayout class='monospaced'> -<emphasis role='bold'>NLISTofFOO</emphasis> -1 m num items -m LISTofFOO items -</literallayout> - -<para> -For cached GC and Drawables: -</para> - -<literallayout> -<emphasis role='bold'>LBXGCANDDRAWUPDATE</emphasis> -4 or 0 DRAWBLE optional drawable -4 or 0 GC optional GC -</literallayout> - - - -<literallayout> -<emphasis role='bold'>LBXGCANDDRAWABLE</emphasis> -8 LBXGCANDDRAWENT cache-entries -8 unused -m LBXGCANDDRAWUPDATE optional GC and Drawable -</literallayout> - - -<sect2 id='errors2'> -<title>Errors</title> - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxClient</emphasis> -1 0 Error -1 CARD8 error-base + 0 -2 CARD16 sequence number -4 unused -2 CARD16 lbx opcode -1 CARD8 major opcode -21 unused -</literallayout> - -</sect2> -<sect2 id='requests2'> -<title>Requests</title> - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxQueryVersion</emphasis> -1 CARD8 opcode -1 0 lbx opcode -2 1 request length -=> -1 1 Reply -1 unused -2 CARD16 sequence number -4 0 reply length -2 CARD16 major version -2 CARD16 minor version -20 unused -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#18761">See -LbxQueryVersion</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxStartProxy</emphasis> -1 CARD8 opcode -1 1 lbx opcode -2 L request length -n NLISTofOPTION-REQUEST options -p unused, p=pad(n) - -<emphasis role='bold'>OPTION-REQUEST</emphasis> -1 OPTCODE option-code -m OPTLEN option-request-byte-length, (b=m+a+1) -a DELTAOPT or option - NLISTofNAMEDOPT or - NLISTofSTR or - NLISTofPIXMAPMETHOD or - BOOL -</literallayout> - -<para> -The encoding of the option field depends on the option-code. -See <ulink url="lbx.htm#35444">See StartProxy Options</ulink>. -</para> - -<literallayout class='monospaced'> -1 OPTCODE option-code -0 LbxOptionDeltaProxy -1 LbxOptionDeltaServer -2 LbxOptionStreamCompression -3 LbxOptionBitmapCompression -4 LbxOptionPixmapCompression -5 LbxOptionMessageCompression /* also known as squishing */ -6 LbxOptionUseTags -7 LbxOptionColormapAllocation -255 LbxOptionExtension -</literallayout> - -<para> -OPTLEN has two possible encodings, depending on the size of the value carried: -</para> - -<literallayout class='monospaced'> -<emphasis role='bold'>OPTLEN</emphasis> -1 CARD8 b (0 < b <= 255) - -<emphasis role='bold'>OPTLEN</emphasis> -1 0 long length header -1 c length0, c = b >> 8 -1 d length1, d= b & #xff - -<emphasis role='bold'>DELTAOPT</emphasis> -1 CARD8 min-cache-size -1 CARD8 max-cache-size -1 CARD8 preferred-cache-size -1 CARD8 min-message-length -1 CARD8 max-message-length (in 4-byte units) -1 CARD8 preferred-message-length - -<emphasis role='bold'>NAMEDOPT</emphasis> -f STR type-name -1 g+1 option-data-length -g LISTofBYTE option-data (option specific) - -<emphasis role='bold'>PIXMAPMETHOD</emphasis> -h STR name -1 BITMASK format mask -1 j depth count -j LISTofCARD8 depths - -=> -=> - -1 1 Reply -1 CARD8 count - -0xff options in request cannot be decoded -2 CARD16 sequence number -4 (a+p-32)/4 reply length -a LISTofCHOICE options-reply -p unused, if (n<24) p=24-n else p=pad(n) - -<emphasis role='bold'>CHOICE</emphasis> -1 CARD8 request-option-index -b OPTLEN reply-option-byte-length -c DELTACHOICE or choice - INDEXEDCHOICE or - NLISTofINDEXEDOPT or - NLISTofPIXMAPCHOICE or - BOOL or - INDEXEDCHOICE -</literallayout> - -<para> -The encoding of the choice field depends on the option-code. See <ulink -url="lbx.htm#35444">See StartProxy Options</ulink>. -</para> - -<literallayout class='monospaced'> -<emphasis role='bold'>DELTACHOICE</emphasis> -1 CARD8 preferred cache size -1 CARD8 preferred message length in 4-byte units - -<emphasis role='bold'>INDEXEDCHOICE</emphasis> -1 CARD8 index -d LISTofBYTE data - -<emphasis role='bold'>PIXMAPCHOICE</emphasis> -1 CARD8 index -1 CARD8 opcode -1 BITMASK format mask -e NLISTofCARD8 depths -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#20870">See -LbxStartProxy</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxStopProxy</emphasis> -1 CARD8 opcode -1 2 lbx opcode -2 1 request length -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#27455">See -LbxStopProxy</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxSwitch</emphasis> -1 CARD8 opcode -1 3 lbx opcode -2 2 request length -4 CARD32 client -</literallayout> - -<para> -The description of this request is on -<ulink url="lbx.htm#33500">See LbxSwitch</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxNewClient</emphasis> -1 CARD8 opcode -1 4 lbx opcode -2 L request length -4 CARD32 client -The remaining bytes of the request are the core connection setup. -=> -If the connection is rejected, a core connection reply is sent. Otherwise the -reply has the form: -1 BOOL success -1 change type - 0 no-deltas - 1 normal-client-deltas - 2 app-group-deltas -2 CARD16 major version -2 CARD16 minor version -2 1 + a length -4 CARD32 tag id -</literallayout> - -<para> -The remaining bytes depend on the value of change-type and length. -</para> - -<para> -For no-deltas, the remaining bytes are the "additional data" -bytes of the core reply. (a = length of core reply, in 4 byte quantities). -</para> - -<para> -For normal-client-deltas, the additional bytes have the form, with a length (a -= 1 +b): -</para> - -<literallayout class='monospaced'> -4 CARD32 resource id base -4b LISTofSETofEVENT root input masks -</literallayout> - -<para> -For app-group-deltas, the additional bytes have the following form, with a -length of (a = 1 + 4c): -</para> - -<literallayout class='monospaced'> -4 CARD32 resource id base -4 WINDOW root id base -4 VISUALID visual -4 COLORMAP colormap -4 CARD32 white pixel -4 CARD32 black pixel -4c LISTofSETofEVENT root input masks -</literallayout> - -<para> -The description of this request is on -<ulink url="lbx.htm#17810">See LbxNewClient</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxCloseClient</emphasis> -1 CARD8 opcode -1 5 lbx opcode -2 2 request length -4 CARD32 client -</literallayout> - -<para> -The description of this request is on -<ulink url="lbx.htm#21625">See LbxCloseClient</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxModifySequence</emphasis> -1 CARD8 opcode -1 6 lbx opcode -2 2 request length -4 CARD32 offset to sequence number -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#36693">See -LbxModifySequence</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxAllowMotion</emphasis> -1 CARD8 opcode -1 7 lbx opcode -2 2 request length -4 CARD32 number of MotionNotify events -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#15895">See -LbxAllowMotion</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxIncrementPixel</emphasis> -1 CARD8 opcode -1 8 lbx opcode -2 3 request length -4 COLORMAP colormap -4 CARD32 pixel -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#27227">See -LbxIncrementPixel</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxDelta</emphasis> -1 CARD8 opcode -1 9 lbx opcode -2 1+(2n +p+2)/4 request length -1 n count of diffs -1 CARD8 cache index -2n LISTofDIFFITEM offsets and differences -p unused, p=pad(2n + 2) -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#26857">See -LbxDelta</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxGetModifierMapping</emphasis> -1 CARD8 opcode -1 10 lbx opcode -2 1 request length -=> -1 1 Reply -1 n keycodes-per-modifier -2 CARD16 sequence number -4 2n reply length -4 CARD32 tag -20 unused -8n LISTofKEYCODE keycodes -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#37687">See -LbxGetModifierMapping</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxInvalidateTag</emphasis> -1 CARD8 opcode -1 12 lbx opcode -2 2 request length -4 CARD32 tag -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#12515">See -LbxInvalidateTag</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxPolyPoint</emphasis> -1 CARD8 opcode -1 13 lbx opcode -2 1+(m+n+p)/4 request length -m LBXGCANDDRAWABLE cache entries -n LISTofLBXPOINT points (n is data-dependent) -p 0 unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#37179">See -LbxPolyPoint</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxPolyLine</emphasis> -1 CARD8 opcode -1 14 lbx opcode -2 1+(m+n+p)/4 request length -m LBXGCANDDRAWABLE cache entries -n LISTofLBXPOINT points (n is data-dependent) -p 0 unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#16574">See -LbxPolyLine</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxPolySegment</emphasis> -1 CARD8 opcode -1 15 lbx opcode -2 1+(m+n+p)/4 request length -m LBXGCANDDRAWABLE cache entries -n LISTofLBXSEGMENT segments (n is data-dependent) -p 0 unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#26077">See -LbxPolySegment</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxPolyRectangle</emphasis> -1 CARD8 opcode -1 16 lbx opcode -2 1+(m+n+p)/4 request length -m LBXGCANDDRAWABLE cache entries -n LISTofLBXRECTANGLE rectangles (n is data-dependent) -p 0 unused, p=pad(m+n) -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#40958">See -LbxPolyRectangle</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxPolyArc</emphasis> -1 CARD8 opcode -1 17 lbx opcode -2 1+(m+n+p)/4 request length -m LBXGCANDDRAWABLE cache entries -n LISTofLBXARCS arcs (n is data-dependent) -p 0 unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#15317">See -LbxPolyArc</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxFillPoly</emphasis> -1 CARD8 opcode -1 18 lbx opcode -2 1+(3+m+n+p)/4 request length -1 LBXGCANDDRAWENT cache entries -1 shape -0 Complex -1 Nonconvex -2 Convex -1 p pad byte count -m LBXGCANDDRAWUPDATE optional gc and drawable -n LISTofLBXPOINT points (n is data-dependent) -p 0 unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#35796">See -LbxFillPoly</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxPolyFillRectangle</emphasis> -1 CARD8 opcode -1 19 lbx opcode -2 1+(m+n+p)/4 request length -m LBXGCANDDRAWABLE cache entries -n LISTofLBXRECTANGLE rectangles (n is data-dependent) -p 0 unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#25511">See -LbxPolyFillRectangle</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxPolyFillArc</emphasis> -1 CARD8 opcode -1 20 lbx opcode -2 1+(m+n+p)/4 request length -m LBXGCANDDRAWABLE cache entries -n LISTofLBXARC arcs (n is data-dependent) -p 0 unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#42698">See -LbxPolyFillArc</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxGetKeyboardMapping</emphasis> -1 CARD8 opcode -1 21 lbx opcode -2 2 request length -1 KEYCODE first keycode -1 m count -2 unused -=> -1 1 Reply -1 n keysyms-per-keycode -2 CARD16 sequence number -4 nm reply length (m = count field from the request) -4 CARD32 tag -20 unused -4nm LISTofKEYSYM keysyms -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#33719">See -LbxGetKeyboardMapping</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxQueryFont</emphasis> -1 CARD8 opcode -1 22 lbx opcode -2 2 request length -4 FONTABLE font -=> -1 1 Reply -1 BOOL compression -2 CARD16 sequence number -4 L reply length -4 CARD32 tag -20 unused -All of the following is conditional: -12 CHARINFO min-bounds -4 unused -12 CHARINFO max-bounds -4 unused -2 CARD16 min-char-or-byte2 -2 CARD16 max-char-or-byte2 -2 CARD16 default-char -2 n number of FONTPROPs in properties -1 draw-direction -0 <emphasis>LeftToRight</emphasis> -1 <emphasis>RightToLeft</emphasis> -1 CARD8 min-byte1 -1 CARD8 max-byte1 -1 BOOL all-chars-exist -2 INT16 font-ascent -2 INT16 font-descent -4 m number of elements in char-infos -8n LISTofFONTPROP properties -and either -12m LISTofCHARINFO char-infos -or -m LISTofLBXCHARINFO char-infos -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#18818">See -LbxQueryFont</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxChangeProperty</emphasis> -1 CARD8 opcode -1 23 lbx opcode -2 6 request length -4 WINDOW window -4 ATOM property -4 ATOM type -1 CARD8 format -1 mode -0 Replace -1 Preprend -2 Append -2 unused -4 CARD32 length of data in format units - (= n for format = 8) - (= n/2 for format = 16) - (= n/4 for format = 32) -=> -1 1 Reply -1 unused -2 CARD16 sequence number -4 0 reply length -4 CARD32 tag -20 unused -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#40098">See -LbxChangeProperty</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxGetProperty</emphasis> -1 CARD8 opcode -1 24 lbx opcode -2 7 request length -4 WINDOW window -4 ATOM property -4 ATOM type -0 AnyPropertyType -1 CARD8 delete -3 unused -4 CARD32 long-offset -4 CARD32 long-length -=> -1 1 Reply -1 CARD8 format -2 CARD16 sequence number -4 CARD32 reply length -4 ATOM type -0 None -4 CARD32 bytes-after -4 CARD32 length of value in format units - (= 0 for format = 0) - (= n for format = 8) - (= n/2 for format = 16) - (= n/4 for format = 32) -4 CARD32 tag -8 unused -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#31397">See -LbxGetProperty</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxTagData</emphasis> -1 CARD8 opcode -1 25 lbx opcode -2 3+(n+p)/4 request length -4 CARD32 tag -4 CARD32 length of data in bytes -n LISTofBYTE data -p unused, p=pad(n) -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#17987">See -LbxTagData</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxCopyArea</emphasis> -1 CARD8 opcode -1 26 lbx opcode -2 L request length -1 CARD8 source drawable cache entry -1 LBXGCANDDRAWENT cache entries -4 or 0 DRAWABLE optional source drawable -b LBXGCANDDRAWUPDATE optional gc and dest drawable -c LBXPINT16 src-x -d LBXPINT16 src-y -e LBXPINT16 dst-x -f LBXPINT16 dst-y -g LBXCARD16 width -h LBXCARD16 height -p unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#11409">See -LbxCopyArea</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxCopyPlane</emphasis> -1 CARD8 opcode -1 27 lbx opcode -2 L request length -4 CARD32 bit plane -1 CARD8 source drawable cache entry -1 LBXGCANDDRAWENT cache entries -4 or 0 DRAWABLE optional source drawable -b LBXGCANDDRAWUPDATE optional gc and dest drawable -c LBXPINT16 src-x -d LBXPINT16 src-y -e LBXPINT16 dst-x -f LBXPINT16 dst-y -g LBXCARD16 width -h LBXCARD16 height -p unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#36772">See -LbxCopyPlane</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxPolyText8</emphasis> -1 CARD8 opcode -1 28 lbx opcode -2 L request length -1 LBXGCANDDRAWENT cache entries -a LBXGCANDDRAWUPDATE optional gc and drawable -b LBXPINT16 x -c LBXPINT16 y -n LISTofTEXTITEM8 items -p unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#23201">See -LbxPolyText8</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxPolyText16</emphasis> -1 CARD8 opcode -1 29 lbx opcode -2 L request length -1 LBXGCANDDRAWENT cache entries -a LBXGCANDDRAWUPDATE optional gc and drawable -b LBXPINT16 x -c LBXPINT16 y -2n LISTofTEXTITEM16 items -p unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#13228">See -LbxPolyText16</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxImageText8</emphasis> -1 CARD8 opcode -1 30 lbx opcode -2 L request length -1 LBXGCANDDRAWENT cache entries -a LBXGCANDDRAWUPDATE optional gc and drawable -b LBXPINT16 x -c LBXPINT16 y -n STRING8 string -p unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#10990">See -LbxImageText8</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxImageText16</emphasis> -1 CARD8 opcode -1 31 lbx opcode -2 L request length -1 LBXGCANDDRAWENT cache entries -a LBXGCANDDRAWUPDATE optional gc and drawable -b LBXPINT16 x -c LBXPINT16 y -2n STRING16 string -p unused, p=Lpad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#39584">See -LbxImageText16</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxQueryExtension</emphasis> -1 CARD8 opcode -1 32 lbx opcode -2 2+(n+p)/4 request length -4 n length of extension name -n STRING8 extension name -p unused, p=pad(n) -=> -1 1 Reply -1 n number of requests in the extension -2 CARD16 sequence number -4 0 or 2*(m + p) reply length, m = (n+7)/8 -1 BOOL present -1 CARD8 major opcode -1 CARD8 first event -1 CARD8 first error -20 unused -m LISTofMASK optional reply-mask -p unused, p=pad(m) -m LISTofMASK optional event-mask -p unused, p=pad(m) -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#36662">See -LbxQueryExtension</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxPutImage</emphasis> -1 CARD8 opcode -1 33 lbx opcode -2 L request length -1 CARD8 compression method -1 LBXGCANDDRAWENT cache entries -a PIPACKED bit-packed -b LBXGCANDDRAWUPDATE optional gc and drawable -c LBXCARD16 width -d LBXCARD16 height -e LBXPINT16 x -f LBXPINT16 y -n LISTofBYTE compressed image data -p unused, p=Lpad -</literallayout> - -<para> -If there is no left padding and the depth is less than or equal to nine, -PIPPACKED is encoded as follows: -</para> - -<literallayout class='monospaced'> -<emphasis role='bold'>PIPACKED</emphasis> -1 #x80 | (format << 5) | ((depth -1) << 2) -</literallayout> - -<para> -Otherwise PIPACKED is defined as: -</para> - -<literallayout class='monospaced'> -<emphasis role='bold'>PIPACKED</emphasis> -1 (depth -1) << 2) -1 (format << 5) | left-pad -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#21218">See -LbxPutImage</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxGetImage</emphasis> -1 CARD8 opcode -1 34 lbx opcode -2 6 request length -4 DRAWABLE drawable -2 INT16 x -2 INT16 y -2 CARD16 width -2 CARD16 height -4 CARD32 plane mask -1 CARD8 format -3 unused -=> -1 1 Reply -1 CARD8 depth -2 CARD16 sequence number -4 (n+p)/4 reply length -4 (m+p)/4 X reply length; if uncompressed, m=n -4 VISUALID visual -0 None -1 compression method -15 unused -n LISTofBYTE data -p unused, p=pad(n) -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#26896">See -LbxGetImage</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxBeginLargeRequest</emphasis> -1 CARD8 opcode -1 35 lbx opcode -2 2 request length -4 CARD32 large request length -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#31209">See -LbxBeginLargeRequest</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxLargeRequestData</emphasis> -1 CARD8 opcode -1 36 lbx opcode -2 1+n request length -4n LISTofBYTE data -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#36982">See -LbxLargeRequestData</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxEndLargeRequest</emphasis> -1 CARD8 opcode -1 37 lbx opcode -2 1 request length -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#31841">See -LbxEndLargeRequest</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxInternAtoms</emphasis> -1 CARD8 opcode -1 38 lbx opcode -2 1+(2+m+n+p)/4 request length -2 m num-atoms -n LISTofLONGSTR names -p pad p=Lpad -=> -1 1 Reply -1 unused -2 CARD16 sequence number -4 a reply length, a = MAX(m - 6, 0) -4*m LISTofATOM atoms -p pad p = MAX(0, 4*(6 - m)) - -LONGSTR -2 c string length -c STRING8 string -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#21636">See -LbxInternAtoms</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxGetWinAttrAndGeom</emphasis> -1 CARD8 opcode -1 39 lbx opcode -2 2 request length -4 CARD32 window id -=> -1 1 Reply -1 backing store -0 NotUseful -1 WhenMapped -2 Always -2 CARD16 sequence number -4 7 reply length -4 VISUALID visual id -2 class -1 InputOutput -2 InputOnly -1 BITGRAVITY bit gravity -1 WINGRAVITY window gravity -4 CARD32 backing bit planes -4 CARD32 backing pixel -1 BOOL save under -1 BOOL map installed -1 map state -0 Unmapped -1 Unviewable -2 Viewable -1 BOOL override -4 COLORMAP colormap -4 SETofEVENT all events mask -4 SETofEVENT your event mask -2 SETofDEVICEEVENT do not propagate mask -2 unused -4 WINDOW root -2 INT16 x -2 INT16 y -2 CARD16 width -2 CARD16 height -2 CARD16 border width -1 CARD8 depth -1 unused -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#39382">See -LbxGetWinAttrAndGeom</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxGrabCmap</emphasis> -1 CARD8 opcode -1 40 lbx opcode -2 2 request length -4 COLORMAP colormap -=> -</literallayout> - -<para> -If smart-grab is true, the reply is as follows: -</para> - -<literallayout class='monospaced'> -1 1 Reply -1 #x80 flags -2 CARD16 sequence number -4 0 reply length -24 unused - -If smart-grab is false, the reply is as follows: - -1 1 Reply -1 flags (set of) - #x40 auto-release - #x20 three-channels - #x10 two-byte-pixels -lower four bits specifies bits-per-pixel -2 CARD16 sequence number -4 L reply length -m CHAN or CHANNELS cells (CHAN if !three-channels) -p 0 pad(m) - -<emphasis role='bold'>CHANNELS</emphasis> -a CHAN red -1 5 next channel -b CHAN green -1 5 next channel -c CHAN blue -1 0 list end - -<emphasis role='bold'>CHAN</emphasis> -d LISTofLBXPIXEL - -<emphasis role='bold'>LBXPIXEL</emphasis> -e PIXELPRIVATE or - PIXELPRIVATERANGE or - PIXELALLOC or - PIXELALLOCRANGE - -<emphasis role='bold'>PIXELPRIVATE</emphasis> -1 1 pixel-private -f PIXEL pixel - -<emphasis role='bold'>PIXEL</emphasis> -f CARD8 or CARD16 (CARD8 if !two-byte-pixels) - -<emphasis role='bold'>PIXELPRIVATERANGE</emphasis> -1 2 pixel-private-range -f PIXEL fist-pixel -f PIXEL last-pixel - -<emphasis role='bold'>PIXELALLOC</emphasis> -1 3 pixel-private -f PIXEL pixel -g COLORSINGLE or COLORTRIPLE color (COLORSINGLE if -three-channels) - -<emphasis role='bold'>COLORSINGLE</emphasis> -h CARD8 or CARD16 value (CARD8 if bits-per-rgb =< 7) - -<emphasis role='bold'>COLORTRIPLE</emphasis> -h COLORSINGLE red -h COLORSINGLE green -h COLORSINGLE blue - -<emphasis role='bold'>PIXELALLOCRANGE</emphasis> -1 4 pixel-private -f PIXEL first-pixel -f PIXEL last-pixel -j LISTofCOLORSINGLE or color (COLORSINGLE if three-channels) - LISTofCOLORTRIPLE -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#10922">See -LbxGrabCmap</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxReleaseCmap</emphasis> -1 CARD8 opcode -1 41 lbx opcode -2 2 request length -4 COLORMAP cmap -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#34675">See -LbxReleaseCmap</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxAllocColor</emphasis> -1 CARD8 opcode -1 42 lbx opcode -2 5 request length -4 COLORMAP colormap -4 CARD32 pixel -2 CARD16 red -2 CARD16 green -2 CARD16 blue -2 unused -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#10446">See -LbxAllocColor</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxSync</emphasis> -1 CARD8 opcode -1 43 lbx opcode -2 1 request length -=> -1 1 Reply -1 n unused -2 CARD16 sequence number -4 0 reply length -24 unused -</literallayout> - -<para> -The description of this request is on <ulink url="lbx.htm#30719">See -LbxSync</ulink>. -</para> - - - -</sect2> -<sect2 id='events2'> -<title>Events</title> - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxSwitchEvent</emphasis> -1 base + 0 code -1 0 lbx type -2 CARD16 sequence number -4 CARD32 client -24 unused -</literallayout> - -<para> -The description of this event is on <ulink url="lbx.htm#33748">See -LbxSwitchEvent</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxCloseEvent</emphasis> -1 base + 0 code -1 1 lbx type -2 CARD16 sequence number -4 CARD32 client -24 unused -</literallayout> - -<para> -The description of this event is on <ulink url="lbx.htm#17292">See -LbxCloseEvent</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxInvalidateTagEvent</emphasis> -1 base + 0 code -1 3 lbx type -2 CARD16 sequence number -4 CARD32 tag -4 tag-type -1 <emphasis>LbxTagTypeModmap</emphasis> -2 <emphasis>LbxTagTypeKeymap</emphasis> -3 <emphasis>LbxTagTypeProperty</emphasis> -4 <emphasis>LbxTagTypeFont</emphasis> -5 <emphasis>LbxTagTypeConnInfo</emphasis> -20 unused -</literallayout> - -<para> -The description of this event is on <ulink url="lbx.htm#23016">See -LbxInvalidateTagEvent</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxSendTagDataEvent</emphasis> -1 base + 0 code -1 4 lbx type -2 CARD16 sequence number -4 CARD32 tag -4 tag-type -3 <emphasis>LbxTagTypeProperty</emphasis> -20 unused -</literallayout> - -<para> -The description of this event is on <ulink url="lbx.htm#20373">See -LbxSendTagDataEvent</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxListenToOne</emphasis> -1 base + 0 code -1 5 lbx type -2 CARD16 sequence number -4 CARD32 client -<emphasis>#xFFFFFFFF</emphasis> -a client not managed by the proxy -24 unused -</literallayout> - -<para> -The description of this event is on <ulink url="lbx.htm#25209">See -LbxListenToOne</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxListenToAll</emphasis> -1 base + 0 code -1 6 lbx type -2 CARD16 sequence number -28 unused -</literallayout> - -<para> -The description of this event is on <ulink url="lbx.htm#11095">See -LbxListenToAll</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxQuickMotionDeltaEvent</emphasis> -1 base + 1 code -1 CARD8 delta-time -1 INT8 delta-x -1 INT8 delta-y -</literallayout> - -<para> -This event is not padded to 32 bytes. -</para> - - -<para> -The description of this event is on <ulink url="lbx.htm#40268">See -LbxQuickMotionDeltaEvent</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxMotionDeltaEvent</emphasis> -1 base + 0 code -1 7 lbx type -1 INT8 delta-x -1 INT8 delta-y -2 CARD16 delta-time -2 CARD16 delta-sequence -</literallayout> - -<para> -This event is not padded to 32 bytes. -</para> - - -<para> -The description of this event is on <ulink url="lbx.htm#30033">See -LbxMotionDeltaEvent</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxReleaseCmapEvent</emphasis> -1 base + 0 code -1 8 lbx type -2 CARD16 sequence number -4 COLORMAP colormap -24 unused -</literallayout> - -<para> -The description of this event is on <ulink url="lbx.htm#19129">See -LbxReleaseCmapEvent</ulink>. -</para> - - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxFreeCellsEvent</emphasis> -1 base + 0 code -1 9 lbx type -2 CARD16 sequence number -4 COLORMAP colormap -4 PIXEL pixel start -4 PIXEL pixel end -16 unused -</literallayout> - -<para> -The description of this event is on <ulink url="lbx.htm#38041">See -LbxFreeCellsEvent</ulink>. -</para> - - -</sect2> -<sect2 id='re_encoding_of_x_events'> -<title>Re-encoding of X Events</title> - -<para> -The X protocol requires all X events to be 32 bytes. The LBX server reduces the -number of bytes sent between the server and the proxy for some X events by not -appending unused pad bytes to the event data. The offsets of X event data are -unchanged. The proxy will pad the events to 32 bytes before passing them on to -the client. -</para> - - -<para> -LBX reencodes X event representations into the following sizes, if squishing is -enabled: -</para> - -<para><programlisting> -KeyOrButton 32 -EnterOrLeave 32 -Keymap 32 -Expose 20 -GraphicsExposure 24 -NoExposure 12 -VisibilityNotify 12 -CreateNotify 24 -DestroyNotify 12 -UnmapNotify 16 -MapNotify 16 -MapRequest 12 -Reparent 24 -ConfigureNotify 28 -ConfigureRequest 28 -GravityNotify 16 -ResizeRequest 12 -Circulate 20 -Property Notify 20 -SelectionClear 20 -SelectionRequest 28 -SelectionNotify 24 -Colormap Notify 16 -MappingNotify 8 -ClientMessage 32 -Unknown 32 -</programlisting></para> - -</sect2> -<sect2 id='responses2'> -<title>Responses</title> - -<literallayout class='monospaced'> -<emphasis role='bold'>LbxDeltaResponse</emphasis> -1 event_base + 0 event code -1 2 lbx type -2 1+(2+2n+p)/4 request length -1 n count of diffs -1 CARD8 cache index -2n LISTofDIFFITEM offsets and differences -p unused, p=pad(2n) -</literallayout> - -<para> -The description of this response is on <ulink url="lbx.htm#34042">See -LbxDeltaResponse</ulink>. -</para> - -</sect2> -</sect1> -</article> |