1ea1d6981Smrg<?xml version="1.0" encoding="UTF-8" ?>
2ea1d6981Smrg<!DOCTYPE article
3ea1d6981Smrg          PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
4ea1d6981Smrg          "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
5ea1d6981Smrg[
6ea1d6981Smrg<!ENTITY % defs SYSTEM "defs.ent"> %defs;
7ea1d6981Smrg]>
8ea1d6981Smrg
9ea1d6981Smrg<article id="lbx">
10ea1d6981Smrg
11ea1d6981Smrg<articleinfo>
12ea1d6981Smrg   <title>Low Bandwidth X Extension</title>
13ea1d6981Smrg   <subtitle>X Consortium Standard</subtitle>
14ea1d6981Smrg   <authorgroup>
15ea1d6981Smrg     <author>
16ea1d6981Smrg       <firstname>Donna</firstname>
17ea1d6981Smrg       <surname>Converse</surname>
18ea1d6981Smrg     </author>
19ea1d6981Smrg     <author>
20ea1d6981Smrg       <firstname>Jim</firstname>
21ea1d6981Smrg       <surname>Fulton</surname>
22ea1d6981Smrg     </author>
23ea1d6981Smrg     <author>
24ea1d6981Smrg       <firstname>David</firstname>
25ea1d6981Smrg       <surname>Lemke</surname>
26ea1d6981Smrg     </author>
27ea1d6981Smrg     <author>
28ea1d6981Smrg       <firstname>Ralph</firstname>
29ea1d6981Smrg       <surname>Mor</surname>
30ea1d6981Smrg     </author>
31ea1d6981Smrg     <author>
32ea1d6981Smrg       <firstname>Keith</firstname>
33ea1d6981Smrg       <surname>Packard</surname>
34ea1d6981Smrg     </author>
35ea1d6981Smrg     <author>
36ea1d6981Smrg       <firstname>Ray</firstname>
37ea1d6981Smrg       <surname>Tice</surname>
38ea1d6981Smrg     </author>
39ea1d6981Smrg     <author>
40ea1d6981Smrg       <firstname>Dale</firstname>
41ea1d6981Smrg       <surname>Tonogai</surname>
42ea1d6981Smrg     </author>
43ea1d6981Smrg   </authorgroup>
44ea1d6981Smrg   <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo>
45ea1d6981Smrg   <releaseinfo>Version 1.0</releaseinfo>
46ea1d6981Smrg   <copyright><year>1996</year><holder>X Consortium</holder></copyright>
47ea1d6981Smrg
48ea1d6981Smrg<legalnotice>
49ea1d6981Smrg<para>
50ea1d6981SmrgPermission is hereby granted, free of charge, to any person obtaining a copy of
51ea1d6981Smrgthis software and associated
52ea1d6981Smrgdocumentation files (the "Software"), to deal in the Software without
53ea1d6981Smrgrestriction, including without limitation
54ea1d6981Smrgthe rights to use, copy, modify, merge, publish, distribute, sublicense, and
55ea1d6981Smrgsell copies of the Software,
56ea1d6981Smrgand to permit persons to whom the Software is furnished to do so, subject to
57ea1d6981Smrgthe following conditions:
58ea1d6981Smrg</para>
59ea1d6981Smrg<para>
60ea1d6981SmrgThe above copyright notice and this permission notice shall be included in all
61ea1d6981Smrgcopies or substantial portions
62ea1d6981Smrgof the Software.
63ea1d6981Smrg</para>
64ea1d6981Smrg<para>
65ea1d6981SmrgTHE SOFTWARE IS PROVIDED &ldquo;AS IS&rdquo;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
66ea1d6981SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
67ea1d6981SmrgFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X
68ea1d6981SmrgCONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
69ea1d6981SmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
70ea1d6981SmrgWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
71ea1d6981Smrg</para>
72ea1d6981Smrg<para>
73ea1d6981SmrgExcept as contained in this notice, the name of the X Consortium shall not be
74ea1d6981Smrgused in advertising or otherwise
75ea1d6981Smrgto promote the sale, use or other dealings in this Software without prior
76ea1d6981Smrgwritten authorization from the
77ea1d6981SmrgX Consortium.
78ea1d6981Smrg</para>
79ea1d6981Smrg<para>X Window System is a trademark of The OpenGroup.</para>
80ea1d6981Smrg</legalnotice>
81ea1d6981Smrg</articleinfo>
82ea1d6981Smrg
83ea1d6981Smrg<sect1 id='introduction'>
84ea1d6981Smrg<title>Introduction</title>
85ea1d6981Smrg
86ea1d6981Smrg<para>
87ea1d6981SmrgLow Bandwidth X (LBX) is a network-transparent protocol for running X Window
88ea1d6981SmrgSystem applications over transport channels whose bandwidth and latency are
89ea1d6981Smrgsignificantly worse than that used in local area networks. It combines a
90ea1d6981Smrgvariety of caching and reencoding techniques to reduce the volume of data that
91ea1d6981Smrgmust be sent over the wire. It can be used with existing clients by placing a
92ea1d6981Smrgproxy between the clients and server, so that the low bandwidth/high latency
93ea1d6981Smrgcommunication occurs between the proxy and server.
94ea1d6981Smrg</para>
95ea1d6981Smrg
96ea1d6981Smrg
97ea1d6981Smrg<para>
98ea1d6981SmrgThis extension was designed and implemented by Jim Fulton, David Lemke, Keith
99ea1d6981SmrgPackard, and Dale Tonogai, all of Network Computing Devices (NCD). Chris Kent
100ea1d6981SmrgKantarjiev (Xerox PARC) participated in early design discussions. Ralph Mor (X
101ea1d6981SmrgConsortium) designed and implemented additional sections. Donna Converse (X
102ea1d6981SmrgConsortium) authored the protocol description and encoding from design notes
103ea1d6981Smrgand the implementation. Ray Tice (X Consortium) resolved the open issues in the
104ea1d6981Smrgdesign and specification. Bob Scheifler (X Consortium) helped out in many areas.
105ea1d6981Smrg</para>
106ea1d6981Smrg
107ea1d6981Smrg
108ea1d6981Smrg<para>
109ea1d6981SmrgThe extension name is &quot;LBX&quot;.
110ea1d6981Smrg</para>
111ea1d6981Smrg
112ea1d6981Smrg
113ea1d6981Smrg</sect1>
114ea1d6981Smrg<sect1 id='description'>
115ea1d6981Smrg<title>Description</title>
116ea1d6981Smrg
117ea1d6981Smrg<para>
118ea1d6981SmrgThe design center for LBX is to use a proxy as an intermediary between the
119ea1d6981Smrgclient and server. The proxy reencodes and compresses requests, events, replies
120ea1d6981Smrgand errors, as well as the resulting data stream. Additionally, the proxy can
121ea1d6981Smrgcache information from the server to provide low-latency replies to clients.
122ea1d6981SmrgThis reply generation by the proxy is known as short-circuiting. A proxy can
123ea1d6981Smrghandle multiple clients for a given server, but does not prevent clients from
124ea1d6981Smrgconnecting directly to the server. The design allows the proxy to multiplex
125ea1d6981Smrgmultiple clients into a single data stream to the server.
126ea1d6981Smrg</para>
127ea1d6981Smrg
128ea1d6981Smrg
129ea1d6981Smrg<para>
130ea1d6981SmrgMuch of LBX is implemented as an extension. The compression and reencoding
131ea1d6981Smrgchanges can be isolated to the transport and dispatch portions of the server,
132ea1d6981Smrgwhile short-circuiting requires minor changes to the server’s colormap and
133ea1d6981Smrgproperty code.
134ea1d6981Smrg</para>
135ea1d6981Smrg
136ea1d6981Smrg
137ea1d6981Smrg<para>
138ea1d6981SmrgLBX employs several different compression and short-circuiting methods. Use of
139ea1d6981Smrgthese methods is negotiable, and in some cases, the algorithm used by a given
140ea1d6981Smrgmethod is negotiable as well. LBX also provides for negotiation of extensions
141ea1d6981Smrgto LBX.
142ea1d6981Smrg</para>
143ea1d6981Smrg
144ea1d6981Smrg
145ea1d6981Smrg<sect2 id='data_flow'>
146ea1d6981Smrg<title>Data Flow</title>
147ea1d6981Smrg
148ea1d6981Smrg<para>
149ea1d6981SmrgThe LBX data stream goes through a number of layers:
150ea1d6981Smrg</para>
151ea1d6981Smrg
152ea1d6981Smrg
153ea1d6981Smrg<orderedlist>
154ea1d6981Smrg  <listitem>
155ea1d6981Smrg<para>Client requests</para>
156ea1d6981Smrg  </listitem>
157ea1d6981Smrg  <listitem>
158ea1d6981Smrg<para>Read by LBX and potential byte-swapping</para>
159ea1d6981Smrg  </listitem>
160ea1d6981Smrg  <listitem>
161ea1d6981Smrg<para>Request-specific compression</para>
162ea1d6981Smrg  </listitem>
163ea1d6981Smrg  <listitem>
164ea1d6981Smrg<para>Potential byte swapping</para>
165ea1d6981Smrg  </listitem>
166ea1d6981Smrg  <listitem>
167ea1d6981Smrg<para>Multiplexing of client request streams</para>
168ea1d6981Smrg  </listitem>
169ea1d6981Smrg  <listitem>
170ea1d6981Smrg<para>Delta replacement</para>
171ea1d6981Smrg  </listitem>
172ea1d6981Smrg  <listitem>
173ea1d6981Smrg<para>Stream compression</para>
174ea1d6981Smrg  </listitem>
175ea1d6981Smrg</orderedlist>
176ea1d6981Smrg
177ea1d6981Smrg<para>
178ea1d6981SmrgTransport
179ea1d6981Smrg</para>
180ea1d6981Smrg
181ea1d6981Smrg<!-- FIXME:  descending -->
182ea1d6981Smrg<orderedlist>
183ea1d6981Smrg  <listitem>
184ea1d6981Smrg<para>Stream decompression</para>
185ea1d6981Smrg  </listitem>
186ea1d6981Smrg  <listitem>
187ea1d6981Smrg<para>Delta substitution</para>
188ea1d6981Smrg  </listitem>
189ea1d6981Smrg  <listitem>
190ea1d6981Smrg<para>Demultiplexing of client request streams</para>
191ea1d6981Smrg  </listitem>
192ea1d6981Smrg  <listitem>
193ea1d6981Smrg<para>Potential byte swapping</para>
194ea1d6981Smrg  </listitem>
195ea1d6981Smrg  <listitem>
196ea1d6981Smrg<para>Reencoding</para>
197ea1d6981Smrg  </listitem>
198ea1d6981Smrg  <listitem>
199ea1d6981Smrg<para>Request processing</para>
200ea1d6981Smrg  </listitem>
201ea1d6981Smrg</orderedlist>
202ea1d6981Smrg
203ea1d6981Smrg<para>
204ea1d6981SmrgThe reverse process occurs with X server replies, events, and errors.
205ea1d6981Smrg</para>
206ea1d6981Smrg
207ea1d6981Smrg
208ea1d6981Smrg</sect2>
209ea1d6981Smrg<sect2 id='tags'>
210ea1d6981Smrg<title>Tags</title>
211ea1d6981Smrg
212ea1d6981Smrg<para>
213ea1d6981SmrgTags are used to support caching of large data items that are expected to be
214ea1d6981Smrgqueried multiple times. Such things as the keyboard map and font metrics are
215ea1d6981Smrgoften requested by multiple clients. Rather than send the data each time, the
216ea1d6981Smrgfirst time the data is sent it includes a tag. The proxy saves this data, so
217ea1d6981Smrgthat subsequent requests can send only the tag to refer to that same data. The
218ea1d6981Smrgdifferent types of tags are used for connection information, keyboard maps,
219ea1d6981Smrgmodifier maps, fonts information and properties.
220ea1d6981Smrg</para>
221ea1d6981Smrg
222ea1d6981Smrg
223ea1d6981Smrg<para>
224ea1d6981SmrgTag usage is negotiated as a boolean in the <emphasis>
225ea1d6981SmrgLbxStartProxy</emphasis>
226ea1d6981Smrg message. The proxy controls how many tags are stored in the proxy. The server
227ea1d6981Smrgmay wish to observe the proxy’s InvalidateTag behavior to limit how many tags
228ea1d6981Smrgare cached at any one time. Tagged data is not shared across types of tags, but
229ea1d6981Smrgthe number space used for the tag ids is. The tag ids are generated by the
230ea1d6981Smrgserver.
231ea1d6981Smrg</para>
232ea1d6981Smrg
233ea1d6981Smrg
234ea1d6981Smrg<para>
235ea1d6981SmrgThe X server keeps track of what tags are known to the proxy. The proxy can
236ea1d6981Smrginvalidate a tag if no tag bearing replies of that type are pending. The proxy
237ea1d6981Smrgsends an <emphasis>
238ea1d6981SmrgLbxInvalidateTag</emphasis>
239ea1d6981Smrg message to release the tagged data. The proxy must not invalidate connection
240ea1d6981Smrgtags unless instructed to do so by the server.
241ea1d6981Smrg</para>
242ea1d6981Smrg
243ea1d6981Smrg
244ea1d6981Smrg<para>
245ea1d6981SmrgIf the server wishes to discard tagged data, it must either have received an
246ea1d6981Smrg<emphasis>
247ea1d6981SmrgLbxInvalidateTag</emphasis>
248ea1d6981Smrg request from the proxy or send an <emphasis>
249ea1d6981SmrgLbxInvalidateTag</emphasis>
250ea1d6981Smrg event to the proxy for that tag.
251ea1d6981Smrg</para>
252ea1d6981Smrg
253ea1d6981Smrg
254ea1d6981Smrg<sect3 id='tag_substitution_in_requests'>
255ea1d6981Smrg<title>Tag Substitution in Requests</title>
256ea1d6981Smrg
257ea1d6981Smrg<para>
258ea1d6981SmrgMany substitution requests have a tag field, followed by fields marked
259ea1d6981Smrgoptional. For these requests, if the optional fields are present, the
260ea1d6981Smrgdata in them is stored in the indicated tag, unless the tag is 0. If
261ea1d6981Smrgthe optional fields are absent, the tag field indicates the tag that
262ea1d6981Smrgcontains the data for the &quot;optional&quot; fields.
263ea1d6981Smrg</para>
264ea1d6981Smrg
265ea1d6981Smrg
266ea1d6981Smrg</sect3>
267ea1d6981Smrg<sect3 id='property_tags'>
268ea1d6981Smrg<title>Property Tags</title>
269ea1d6981Smrg
270ea1d6981Smrg<para>
271ea1d6981SmrgProperty data makes special use of tags. A common use of properties is for
272ea1d6981Smrginter-client communication. If both clients use the proxy, it is wasteful to
273ea1d6981Smrgsend the data to the server and then back, when the server may never need it.
274ea1d6981Smrg<emphasis>
275ea1d6981SmrgLbxChangeProperty</emphasis>
276ea1d6981Smrg request does the same work as the core <emphasis>
277ea1d6981SmrgChangeProperty</emphasis>
278ea1d6981Smrg request, but it does not send the data. The reply to this request contains a
279ea1d6981Smrgtag id corresponding to the data. If the property information is used locally,
280ea1d6981Smrgthe server responds to <emphasis>
281ea1d6981SmrgLbxGetProperty</emphasis>
282ea1d6981Smrg with the tag, and the property data need never be sent to the server. If the
283ea1d6981Smrgserver does require the data, it can issue an <emphasis>
284ea1d6981SmrgLbxQueryTag</emphasis>
285ea1d6981Smrg message. The proxy can also send the data on at any time if it judges it
286ea1d6981Smrgappropriate (i.e., when the wire goes idle). Since the proxy owns the property
287ea1d6981Smrgdata, it must not invalidate the tag before sending the data back to the server
288ea1d6981Smrgvia an <emphasis>
289ea1d6981SmrgLbxTagData</emphasis>
290ea1d6981Smrg request.
291ea1d6981Smrg</para>
292ea1d6981Smrg
293ea1d6981Smrg
294ea1d6981Smrg</sect3>
295ea1d6981Smrg</sect2>
296ea1d6981Smrg<sect2 id='short_circuiting'>
297ea1d6981Smrg<title>Short-circuiting</title>
298ea1d6981Smrg
299ea1d6981Smrg<para>
300ea1d6981SmrgShort-circuiting is used to handle constant data. This includes atoms, color
301ea1d6981Smrgname/RGB mappings, and <emphasis>
302ea1d6981SmrgAllocColor</emphasis>
303ea1d6981Smrg calls. Atoms and color name/RGB mappings stay constant for the life of the
304ea1d6981Smrgserver. <emphasis>
305ea1d6981SmrgAllocColor</emphasis>
306ea1d6981Smrg<emphasis>
307ea1d6981Smrg </emphasis>
308ea1d6981Smrgreplies are constant for each colormap. Short-circuiting replaces round-trip
309ea1d6981Smrgrequests with one-way requests, and can sometimes use one in place of many.
310ea1d6981Smrg</para>
311ea1d6981Smrg
312ea1d6981Smrg
313ea1d6981Smrg<para>
314ea1d6981SmrgAtoms are used heavily for ICCCM communication. Once the proxy knows the string
315ea1d6981Smrgto atom mapping, it has no need to send subsequent requests for this atom to
316ea1d6981Smrgthe server.
317ea1d6981Smrg</para>
318ea1d6981Smrg
319ea1d6981Smrg
320ea1d6981Smrg<para>
321ea1d6981SmrgColorname/RGB mappings are constant, so once the proxy sees the response from
322ea1d6981Smrg<emphasis>
323ea1d6981SmrgLookupColor</emphasis>
324ea1d6981Smrg, it need not forward any subsequent requests.
325ea1d6981Smrg</para>
326ea1d6981Smrg
327ea1d6981Smrg
328ea1d6981Smrg<para>
329ea1d6981SmrgClients often use the same color cells, so once a read-only color allocation
330ea1d6981Smrghas occurred, the proxy knows what RGB values should be returned to the client.
331ea1d6981SmrgThe proxy doesn't need to forward any <emphasis>
332ea1d6981SmrgAllocColor</emphasis>
333ea1d6981Smrg requests it can resolve, but it must tell the server to modify the color
334ea1d6981Smrgcell's reference count. <emphasis>
335ea1d6981SmrgLbxIncrementPixel</emphasis>
336ea1d6981Smrg is used to support this.
337ea1d6981Smrg</para>
338ea1d6981Smrg
339ea1d6981Smrg
340ea1d6981Smrg<para>
341ea1d6981SmrgFor all three classes of short-circuiting, the proxy must still tell the server
342ea1d6981Smrga request has occurred, so that the request sequence numbers stay in sync. This
343ea1d6981Smrgis done with <emphasis>
344ea1d6981SmrgLbxModifySequence</emphasis>
345ea1d6981Smrg.
346ea1d6981Smrg</para>
347ea1d6981Smrg
348ea1d6981Smrg
349ea1d6981Smrg<para>
350ea1d6981SmrgSequence numbers cause the major complication with short-circuiting. X
351ea1d6981Smrgguarantees that any replies, events or errors generated by a previous request
352ea1d6981Smrgwill be sent before those of a later request. This means that any requests that
353ea1d6981Smrgcan be handled by the proxy must have their reply sent after any previous
354ea1d6981Smrgevents or errors.
355ea1d6981Smrg</para>
356ea1d6981Smrg
357ea1d6981Smrg
358ea1d6981Smrg<para>
359ea1d6981SmrgIf a proxy’s applications do not require strict adherence to the X protocol
360ea1d6981Smrgordering of errors or events, a proxy might provide further optimization by
361ea1d6981Smrgavoiding the overhead of maintaining this ordering, however, the resulting
362ea1d6981Smrgprotocol is not strictly X11 compliant.
363ea1d6981Smrg</para>
364ea1d6981Smrg
365ea1d6981Smrg
366ea1d6981Smrg</sect2>
367ea1d6981Smrg<sect2 id='graphics_re_encoding'>
368ea1d6981Smrg<title>Graphics Re-encoding</title>
369ea1d6981Smrg
370ea1d6981Smrg<para>
371ea1d6981SmrgThe LBX proxy attempts to reencode <emphasis>PolyPoint</emphasis>,
372ea1d6981Smrg<emphasis>PolyLine</emphasis>, <emphasis>PolySegment</emphasis>,
373ea1d6981Smrg<emphasis>PolyRectangle</emphasis>, <emphasis>PolyArc</emphasis>,
374ea1d6981Smrg<emphasis>FillPoly</emphasis>, <emphasis>PolyFillRectangle</emphasis>,
375ea1d6981Smrg<emphasis>PolyFillArc</emphasis>, <emphasis>CopyArea</emphasis>,
376ea1d6981Smrg<emphasis>CopyPlane</emphasis>, <emphasis>PolyText8</emphasis>,
377ea1d6981Smrg<emphasis>PolyText16</emphasis>, <emphasis>ImageText8</emphasis>,
378ea1d6981Smrgand <emphasis>ImageText16</emphasis> requests. If the request can be
379ea1d6981Smrgreencoded, it may be replaced by an equivalent LBX form of the request.
380ea1d6981SmrgThe requests are reencoded by attempting to reduce 2-byte coordinate,
381ea1d6981Smrglength, width and angle fields to 1 byte. Where applicable, the
382ea1d6981Smrgcoordinate mode is also converted to <emphasis>Previous</emphasis>
383ea1d6981Smrg to improve the compressibility of the resulting data. In image requests,
384ea1d6981Smrgthe image data may also be compressed.
385ea1d6981Smrg</para>
386ea1d6981Smrg
387ea1d6981Smrg</sect2>
388ea1d6981Smrg<sect2 id='motion_events'>
389ea1d6981Smrg<title>Motion events</title>
390ea1d6981Smrg
391ea1d6981Smrg<para>
392ea1d6981SmrgTo prevent clogging the wire with <emphasis>MotionNotify</emphasis>
393ea1d6981Smrg events, the server and proxy work together to control the number
394ea1d6981Smrgof events on the wire. This is done with the
395ea1d6981Smrg<emphasis>LbxAllowMotion</emphasis>
396ea1d6981Smrg request. The request adds an amount to an allowed motion count in
397ea1d6981Smrgthe server, which is kept on a per-proxy basis. Every motion notify
398ea1d6981Smrgevent sent to the proxy decrements the allowed motion counter. If
399ea1d6981Smrgthe allowed motion count is less than or equal to zero, motion
400ea1d6981Smrgevents not required by the X protocol definition are not sent to the
401ea1d6981Smrgproxy. The allowed motion counter has a minimum value of -2^31.
402ea1d6981Smrg</para>
403ea1d6981Smrg
404ea1d6981Smrg</sect2>
405ea1d6981Smrg<sect2 id='event_squishing'>
406ea1d6981Smrg<title>Event Squishing</title>
407ea1d6981Smrg
408ea1d6981Smrg<para>
409ea1d6981SmrgIn the core protocol, all events are padded as needed to be 32 bytes long. The
410ea1d6981SmrgLBX extension reduces traffic by removing padding at the end of events, and
411ea1d6981Smrgimplying the event length from its type. This is known as squishing.
412ea1d6981Smrg</para>
413ea1d6981Smrg
414ea1d6981Smrg</sect2>
415ea1d6981Smrg<sect2 id='master_client_'>
416ea1d6981Smrg<title>Master Client </title>
417ea1d6981Smrg
418ea1d6981Smrg<para>
419ea1d6981SmrgWhen the initial X connection between the proxy and the server is converted to
420ea1d6981SmrgLBX mode, the proxy itself becomes the master client. New client requests and
421ea1d6981Smrgsome tag messages are sent in the context of the master client.
422ea1d6981Smrg</para>
423ea1d6981Smrg
424ea1d6981Smrg
425ea1d6981Smrg</sect2>
426ea1d6981Smrg<sect2 id='multiplexing_of_clients'>
427ea1d6981Smrg<title>Multiplexing of Clients</title>
428ea1d6981Smrg
429ea1d6981Smrg<para>
430ea1d6981SmrgThe LBX proxy multiplexes the data streams of all its clients into one stream,
431ea1d6981Smrgand then splits them apart again when they are received. The <emphasis>
432ea1d6981SmrgLbxSwitch</emphasis>
433ea1d6981Smrg message is used to tell each end which client is using the wire at the time.
434ea1d6981Smrg</para>
435ea1d6981Smrg
436ea1d6981Smrg
437ea1d6981Smrg<para>
438ea1d6981SmrgThe server should process delta requests in the order that they appear on the
439ea1d6981SmrgLBX connection. If the server does not maintain the interclient request order
440ea1d6981Smrgfor requests sent by the proxy, it must still obey the semantics implied by the
441ea1d6981Smrginterclient request order so that the delta cache functions correctly.
442ea1d6981Smrg</para>
443ea1d6981Smrg
444ea1d6981Smrg
445ea1d6981Smrg<para>
446ea1d6981SmrgThe server can affect the multiplexing of clients by the proxy using the
447ea1d6981Smrg<emphasis>
448ea1d6981SmrgLbxListenToOne</emphasis>
449ea1d6981Smrg and <emphasis>
450ea1d6981SmrgLbxListenToAll</emphasis>
451ea1d6981Smrg messages. This is useful during grabs, since the master connection can not be
452ea1d6981Smrgblocked during grabs like other clients. The proxy is responsible for tracking
453ea1d6981Smrgserver grabs issued by its clients so that the proxy can multiplex the client
454ea1d6981Smrgstreams in an order executable by the server.
455ea1d6981Smrg</para>
456ea1d6981Smrg
457ea1d6981Smrg
458ea1d6981Smrg<para>
459ea1d6981SmrgReplies must be ordered in the multiplexed data stream from the server to the
460ea1d6981Smrgproxy such that the reply carrying tagged data precedes replies that refer to
461ea1d6981Smrgthat tagged data.
462ea1d6981Smrg</para>
463ea1d6981Smrg
464ea1d6981Smrg
465ea1d6981Smrg</sect2>
466ea1d6981Smrg<sect2 id='swapping'>
467ea1d6981Smrg<title>Swapping</title>
468ea1d6981Smrg
469ea1d6981Smrg<para>
470ea1d6981SmrgSwapping is handled as with any X extension, with one caveat. Since a proxy can
471ea1d6981Smrgbe supporting clients with different byte orders, and they all share the same
472ea1d6981Smrgwire, the length fields of all messages between the server and proxy are
473ea1d6981Smrgexpressed in the proxy byte order. This prevents any problems with length
474ea1d6981Smrgcomputation that may occur when clients are switched.
475ea1d6981Smrg</para>
476ea1d6981Smrg
477ea1d6981Smrg
478ea1d6981Smrg</sect2>
479ea1d6981Smrg<sect2 id='delta_cache'>
480ea1d6981Smrg<title>Delta cache</title>
481ea1d6981Smrg
482ea1d6981Smrg<para>
483ea1d6981SmrgLBX takes advantage of the fact that an X message may be very similar to one
484ea1d6981Smrgthat has been previously sent. For example, a <emphasis>
485ea1d6981SmrgKeyPress</emphasis>
486ea1d6981Smrg event may differ from a previous <emphasis>
487ea1d6981SmrgKeyPress</emphasis>
488ea1d6981Smrg event in just a few bytes. By sending just the bytes that differ (or
489ea1d6981Smrg"deltas"), the number of bytes sent over the wire can be substantially reduced.
490ea1d6981SmrgDelta compaction is used on requests being sent by the proxy as well as on
491ea1d6981Smrgreplies and events being sent by the server.
492ea1d6981Smrg</para>
493ea1d6981Smrg
494ea1d6981Smrg
495ea1d6981Smrg<para>
496ea1d6981SmrgThe server and the proxy each keep per-proxy request and response caches. The
497ea1d6981Smrgresponse cache contains events, errors and replies. All messages are saved in
498ea1d6981Smrgthe appropriate delta cache if they are of an appropriate type and more than 8
499ea1d6981Smrgbytes long but fit within the delta cache. The number of entries in the delta
500ea1d6981Smrgcache and the maximum saved message size are negotiated in the <emphasis>
501ea1d6981SmrgLbxStartProxy</emphasis>
502ea1d6981Smrg request.
503ea1d6981Smrg</para>
504ea1d6981Smrg
505ea1d6981Smrg
506ea1d6981Smrg<para>
507ea1d6981SmrgThe LBX requests that are never stored in the request delta cache are the
508ea1d6981Smrg<emphasis>
509ea1d6981SmrgLbxQueryVersion</emphasis>
510ea1d6981Smrg, <emphasis>
511ea1d6981SmrgLbxStartProxy</emphasis>
512ea1d6981Smrg, <emphasis>
513ea1d6981SmrgLbxSwitch</emphasis>
514ea1d6981Smrg, <emphasis>
515ea1d6981SmrgLbxNewClient</emphasis>
516ea1d6981Smrg, <emphasis>
517ea1d6981SmrgLbxAllowMotion</emphasis>
518ea1d6981Smrg, <emphasis>
519ea1d6981SmrgLbxDelta</emphasis>
520ea1d6981Smrg, <emphasis>
521ea1d6981SmrgLbxQueryExtension</emphasis>
522ea1d6981Smrg, <emphasis>
523ea1d6981SmrgLbxPutImage</emphasis>
524ea1d6981Smrg, <emphasis>
525ea1d6981SmrgLbxGetImage</emphasis>
526ea1d6981Smrg, <emphasis>
527ea1d6981SmrgLbxBeginLargeRequest</emphasis>
528ea1d6981Smrg, <emphasis>
529ea1d6981SmrgLbxLargeRequestData</emphasis>
530ea1d6981Smrg, <emphasis>
531ea1d6981SmrgLbxEndLargeRequest</emphasis>
532ea1d6981Smrg and <emphasis>
533ea1d6981SmrgLbxInternAtoms</emphasis>
534ea1d6981Smrg requests. The responses that are never stored in the response cache are
535ea1d6981Smrg<emphasis>
536ea1d6981SmrgLbxSwitchEvent</emphasis>
537ea1d6981Smrg and <emphasis>
538ea1d6981SmrgLbxDeltaResponse</emphasis>
539ea1d6981Smrg. The message carried by a <emphasis>
540ea1d6981Smrgdelta </emphasis>
541ea1d6981Smrgmessage is also cached, if it meets the other requirements. Messages after the
542ea1d6981Smrg<emphasis>
543ea1d6981SmrgLbxStartProxy</emphasis>
544ea1d6981Smrg request are cached starting at index 0, and incrementing the index, modulo the
545ea1d6981Smrgnumber of entries, thereafter. The request and response caches are
546ea1d6981Smrgindependently indexed.
547ea1d6981Smrg</para>
548ea1d6981Smrg
549ea1d6981Smrg
550ea1d6981Smrg<para>
551ea1d6981SmrgIf the current message is cachable and the same length as a message in the
552ea1d6981Smrgcorresponding delta cache, a delta message may be substituted in place of the
553ea1d6981Smrgoriginal message in the protocol stream.
554ea1d6981Smrg</para>
555ea1d6981Smrg
556ea1d6981Smrg
557ea1d6981Smrg</sect2>
558ea1d6981Smrg<sect2 id='stream_compression'>
559ea1d6981Smrg<title>Stream Compression</title>
560ea1d6981Smrg
561ea1d6981Smrg<para>
562ea1d6981SmrgBefore being passed down to the transport layer messages can be passed through
563ea1d6981Smrga general purpose data compressor. The choice of compression algorithm is
564ea1d6981Smrgnegotiated with <ulink url="lbx.htm#20870">See LbxStartProxy</ulink>. The proxy
565ea1d6981Smrgand server are not required to support any specific stream compressor. As an
566ea1d6981Smrgexample, however, the X Consortium implementation of a ZLIB based compressor is
567ea1d6981Smrgdescribed below.
568ea1d6981Smrg</para>
569ea1d6981Smrg
570ea1d6981Smrg<note><para>
571ea1d6981SmrgThe XC-ZLIB compressor is presented with a simple byte stream - the X and LBX
572ea1d6981Smrgmessage boundaries are not apparent. The data is broken up into fixed sized
573ea1d6981Smrgblocks. Each block is compressed using zlib 1.0 (by Gailly &amp; Adler), then a
574ea1d6981Smrgtwo byte header is prepended, and then the entire packet is transmitted. The
575ea1d6981Smrgheader has the following information:
576ea1d6981Smrg</para></note>
577ea1d6981Smrg<para><programlisting>
578ea1d6981Smrg      out[0] = (length &amp; 0xfff) &gt;&gt; 8 | ((compflag) ? 0x80 : 0);
579ea1d6981Smrg      out[1] = length &amp; 0xff;
580ea1d6981Smrg</programlisting></para>
581ea1d6981Smrg
582ea1d6981Smrg</sect2>
583ea1d6981Smrg<sect2 id='authentication_protocols'>
584ea1d6981Smrg<title>Authentication Protocols</title>
585ea1d6981Smrg
586ea1d6981Smrg<para>
587ea1d6981SmrgThe current version of LBX does not support multipass authentication protocols
588ea1d6981Smrgfor clients of the proxy. These authentication protocols return an <emphasis>
589ea1d6981SmrgAuthenticate</emphasis>
590ea1d6981Smrg message in response to a connection setup request, and require additional
591ea1d6981Smrgauthentication data from the client after the <emphasis>
592ea1d6981SmrgLbxNewClient</emphasis>
593ea1d6981Smrg request, and before the reply to <emphasis>
594ea1d6981SmrgLbxNewClient</emphasis>
595ea1d6981Smrg. One example of such a protocol is XC-QUERY-SECURITY-1.
596ea1d6981Smrg</para>
597ea1d6981Smrg
598ea1d6981Smrg
599ea1d6981Smrg</sect2>
600ea1d6981Smrg</sect1>
601ea1d6981Smrg<sect1 id='c_library_interfaces_'>
602ea1d6981Smrg<title>C Library Interfaces </title>
603ea1d6981Smrg
604ea1d6981Smrg<para>
605ea1d6981SmrgThe C Library routines for LBX are in the Xext library. The prototypes are
606ea1d6981Smrglocated in a file named &quot;XLbx.h&quot;.
607ea1d6981Smrg</para>
608ea1d6981Smrg
609ea1d6981Smrg
610ea1d6981Smrg<sect2 id='application_library_interfaces'>
611ea1d6981Smrg<title>Application Library Interfaces</title>
612ea1d6981Smrg
613ea1d6981Smrg<para>
614ea1d6981SmrgIn a proxy environment, applications do not need to call these routines to take
615ea1d6981Smrgadvantage of LBX. Clients can, however, obtain information about the LBX
616ea1d6981Smrgextension to the server using this interface. Use of this routine may be
617ea1d6981Smrgaltered when connected through a proxy, as described in <ulink
618ea1d6981Smrgurl="lbx.htm#33319">See C Library Interfaces</ulink>.
619ea1d6981Smrg</para>
620ea1d6981Smrg
621ea1d6981Smrg
622ea1d6981Smrg<sect3 id='xlbxqueryversion'>
623ea1d6981Smrg<title>XLbxQueryVersion</title>
624ea1d6981Smrg
625ea1d6981Smrg<para>
626ea1d6981SmrgTo determine the version of LBX supported by the X server, call <emphasis>
627ea1d6981SmrgXLbxQueryVersion</emphasis>
628ea1d6981Smrg.
629ea1d6981Smrg</para>
630ea1d6981Smrg
631ea1d6981Smrg<funcsynopsis>
632ea1d6981Smrg<funcprototype>
633ea1d6981Smrg<funcdef>Bool <function>XLbxQueryVersion</function></funcdef>
634ea1d6981Smrg      <paramdef>Display * <parameter>display</parameter></paramdef>
635ea1d6981Smrg      <paramdef>int * <parameter>major_version_return</parameter></paramdef>
636ea1d6981Smrg      <paramdef>int * <parameter>minor_version_return</parameter></paramdef>
637ea1d6981Smrg</funcprototype>
638ea1d6981Smrg</funcsynopsis>
639ea1d6981Smrg
640ea1d6981Smrg<variablelist>
641ea1d6981Smrg  <varlistentry>
642ea1d6981Smrg    <term>display</term>
643ea1d6981Smrg    <listitem><para>Specifies the connection to the X server.</para></listitem>
644ea1d6981Smrg  </varlistentry>
645ea1d6981Smrg  <varlistentry>
646ea1d6981Smrg    <term>major_version_return</term>
647ea1d6981Smrg    <listitem><para>Returns the extension major version number.</para></listitem>
648ea1d6981Smrg  </varlistentry>
649ea1d6981Smrg  <varlistentry>
650ea1d6981Smrg    <term>minor_version_return</term>
651ea1d6981Smrg    <listitem><para>Returns the extension minor version number.</para></listitem>
652ea1d6981Smrg  </varlistentry>
653ea1d6981Smrg</variablelist>
654ea1d6981Smrg
655ea1d6981Smrg<para>
656ea1d6981SmrgThe <emphasis>
657ea1d6981SmrgXLbxQueryVersion</emphasis>
658ea1d6981Smrg function determines if the LBX extension is present. If the extension is not
659ea1d6981Smrgpresent, <emphasis>
660ea1d6981SmrgXLbxQueryVersion</emphasis>
661ea1d6981Smrg returns <emphasis>
662ea1d6981SmrgFalse</emphasis>
663ea1d6981Smrg; otherwise, it returns <emphasis>
664ea1d6981SmrgTrue</emphasis>
665ea1d6981Smrg. If the extension is present, <emphasis>
666ea1d6981SmrgXLbxQueryVersion</emphasis>
667ea1d6981Smrg returns the major and minor version numbers of the extension as supported by
668ea1d6981Smrgthe X server.
669ea1d6981Smrg</para>
670ea1d6981Smrg
671ea1d6981Smrg
672ea1d6981Smrg</sect3>
673ea1d6981Smrg</sect2>
674ea1d6981Smrg<sect2 id='proxy_library_interfaces'>
675ea1d6981Smrg<title>Proxy Library Interfaces</title>
676ea1d6981Smrg
677ea1d6981Smrg<para>
678ea1d6981SmrgThe following interfaces are intended for use by the proxy.
679ea1d6981Smrg</para>
680ea1d6981Smrg
681ea1d6981Smrg<sect3 id='xlbxqueryextension'>
682ea1d6981Smrg<title>XLbxQueryExtension</title>
683ea1d6981Smrg
684ea1d6981Smrg<para>
685ea1d6981SmrgTo determine the dynamically assigned codes for the extension, use the Xlib
686ea1d6981Smrgfunction <emphasis>
687ea1d6981SmrgXQueryExtension</emphasis>
688ea1d6981Smrg or the LBX function <emphasis>
689ea1d6981SmrgXLbxQueryExtension</emphasis>
690ea1d6981Smrg.</para>
691ea1d6981Smrg
692ea1d6981Smrg
693ea1d6981Smrg<funcsynopsis>
694ea1d6981Smrg<funcprototype>
695ea1d6981Smrg<funcdef>Bool <function>XLbxQueryExtension</function></funcdef>
696ea1d6981Smrg      <paramdef>Display * <parameter>display</parameter></paramdef>
697ea1d6981Smrg      <paramdef>int * <parameter>major_opcode_return</parameter></paramdef>
698ea1d6981Smrg      <paramdef>int * <parameter>first_event_return</parameter></paramdef>
699ea1d6981Smrg      <paramdef>int * <parameter>first_error_return</parameter></paramdef>
700ea1d6981Smrg</funcprototype>
701ea1d6981Smrg</funcsynopsis>
702ea1d6981Smrg
703ea1d6981Smrg<variablelist>
704ea1d6981Smrg  <varlistentry>
705ea1d6981Smrg    <term>display</term>
706ea1d6981Smrg    <listitem><para>Specifies the connection to the X server.</para></listitem>
707ea1d6981Smrg  </varlistentry>
708ea1d6981Smrg  <varlistentry>
709ea1d6981Smrg    <term>major_opcode_return</term>
710ea1d6981Smrg    <listitem><para>Returns the major opcode.</para></listitem>
711ea1d6981Smrg  </varlistentry>
712ea1d6981Smrg  <varlistentry>
713ea1d6981Smrg    <term>first_event_return</term>
714ea1d6981Smrg    <listitem><para>Returns the first event code.</para></listitem>
715ea1d6981Smrg  </varlistentry>
716ea1d6981Smrg  <varlistentry>
717ea1d6981Smrg    <term>first_error_return</term>
718ea1d6981Smrg    <listitem><para>Returns the first error code.</para></listitem>
719ea1d6981Smrg  </varlistentry>
720ea1d6981Smrg</variablelist>
721ea1d6981Smrg
722ea1d6981Smrg<para>
723ea1d6981SmrgThe <emphasis>
724ea1d6981SmrgXLbxQueryExtension</emphasis>
725ea1d6981Smrg function determines if the LBX extension is present. If the extension is not
726ea1d6981Smrgpresent, <emphasis>
727ea1d6981SmrgXLbxQueryExtension</emphasis>
728ea1d6981Smrg returns <emphasis>
729ea1d6981SmrgFalse</emphasis>
730ea1d6981Smrg; otherwise, it returns <emphasis>
731ea1d6981SmrgTrue</emphasis>
732ea1d6981Smrg. If the extension is present, <emphasis>
733ea1d6981SmrgXLbxQueryExtension</emphasis>
734ea1d6981Smrg returns the major opcode for the extension to major_opcode_return, the base
735ea1d6981Smrgevent type code to first_event_return, and the base error code to
736ea1d6981Smrgfirst_error_return; otherwise, the return values are undefined.
737ea1d6981Smrg</para>
738ea1d6981Smrg
739ea1d6981Smrg</sect3>
740ea1d6981Smrg
741ea1d6981Smrg<sect3 id='xlbxgeteventbase'>
742ea1d6981Smrg<title>XLbxGetEventBase</title>
743ea1d6981Smrg<para>
744ea1d6981SmrgTo determine the base event type code, use the Xlib function <emphasis>
745ea1d6981SmrgXQueryExtension</emphasis>
746ea1d6981Smrg or the LBX function <emphasis>
747ea1d6981SmrgXLbxGetEventBase</emphasis>.
748ea1d6981Smrg</para>
749ea1d6981Smrg
750ea1d6981Smrg
751ea1d6981Smrg<funcsynopsis>
752ea1d6981Smrg<funcprototype>
753ea1d6981Smrg<funcdef>int <function>XLbxGetEventBase</function></funcdef>
754ea1d6981Smrg      <paramdef>Display * <parameter>display</parameter></paramdef>
755ea1d6981Smrg</funcprototype>
756ea1d6981Smrg</funcsynopsis>
757ea1d6981Smrg
758ea1d6981Smrg<variablelist>
759ea1d6981Smrg  <varlistentry>
760ea1d6981Smrg    <term>display</term>
761ea1d6981Smrg    <listitem><para>Specifies the connection to the X server.</para></listitem>
762ea1d6981Smrg  </varlistentry>
763ea1d6981Smrg</variablelist>
764ea1d6981Smrg
765ea1d6981Smrg<para>
766ea1d6981SmrgThe <emphasis>XLbxGetEventBase</emphasis>
767ea1d6981Smrgfunction returns the base event type code if the extension is
768ea1d6981Smrgpresent; otherwise, it returns -1.
769ea1d6981Smrg</para>
770ea1d6981Smrg
771ea1d6981Smrg</sect3>
772ea1d6981Smrg</sect2>
773ea1d6981Smrg</sect1>
774ea1d6981Smrg
775ea1d6981Smrg
776ea1d6981Smrg<sect1 id='protocol'>
777ea1d6981Smrg<title>Protocol</title>
778ea1d6981Smrg
779ea1d6981Smrg<sect2 id='syntactic_conventions_and_common_types'>
780ea1d6981Smrg<title>Syntactic Conventions and Common Types</title>
781ea1d6981Smrg
782ea1d6981Smrg<para>
783ea1d6981SmrgPlease refer to the X Window System Protocol specification,
784ea1d6981Smrgas this document uses the syntactic conventions established
785ea1d6981Smrgthere and references types defined there.
786ea1d6981Smrg</para>
787ea1d6981Smrg
788ea1d6981Smrg
789ea1d6981Smrg<para>
790ea1d6981SmrgThe following additional types are defined by this extension:
791ea1d6981Smrg</para>
792ea1d6981Smrg
793ea1d6981Smrg<literallayout>
794ea1d6981Smrg<emphasis role='bold'>DIFFITEM</emphasis>
795ea1d6981Smrg1      CARD8      offset
796ea1d6981Smrg1      CARD8      diff
797ea1d6981Smrg</literallayout>
798ea1d6981Smrg
799ea1d6981Smrg<literallayout>
800ea1d6981Smrg<emphasis role='bold'>LBXANGLE: CARD8 or 2 BYTE</emphasis>
801ea1d6981Smrg      where (in order of precedence):
802ea1d6981Smrg      (0 &lt;= in &lt;= A(95)) &amp;&amp; !(in % A(5))       out = 0x5a + (in /
803ea1d6981SmrgA(5))
804ea1d6981Smrg      A(105) &lt;= in &lt;= A(360) &amp;&amp; !(in % A(15))      out = 0x67 +
805ea1d6981Smrg(in / A(15))
806ea1d6981Smrg      -A(100) &lt;= in &lt;= -A(5) &amp;&amp; !(in % A(5))      out = 0xa6 +
807ea1d6981Smrg(in / A(5))
808ea1d6981Smrg      -A(360) &lt; in &lt;= -A(105) &amp;&amp; !(in % A(15))      out = 0x98 +
809ea1d6981Smrg(in / A(15))
810ea1d6981Smrg      -A(360) &lt; in &lt;= A(360)      out[0] = in &gt;&gt; 8; out[1] = in
811ea1d6981Smrg</literallayout>
812ea1d6981Smrg
813ea1d6981Smrg<literallayout>
814ea1d6981Smrg<emphasis role='bold'>LBXARC:</emphasis>
815ea1d6981Smrg      [x, y: LBXINT16,
816ea1d6981Smrg      width, height: LBXCARD16,
817ea1d6981Smrg      angle1, angle2: LBXANGLE]
818ea1d6981Smrg</literallayout>
819ea1d6981Smrg
820ea1d6981Smrg<para>
821ea1d6981SmrgWithin a list of arcs, after the first arc, x and y are
822ea1d6981Smrgrelative to the corresponding fields of the prior arc.
823ea1d6981Smrg</para>
824ea1d6981Smrg
825ea1d6981Smrg<literallayout>
826ea1d6981Smrg<emphasis role='bold'>LBXCARD16: CARD8 or 2 BYTE</emphasis>
827ea1d6981Smrg      where:
828ea1d6981Smrg      0x0000 &lt;= in &lt; 0x00F0      CARD8
829ea1d6981Smrg      0x00F0 &lt;= in &lt; 0x10F0      out[0] = 0xF0 | ((in - 0xF0) &gt;&gt;
830ea1d6981Smrg8)
831ea1d6981Smrg            out[1] = in - 0xF0
832ea1d6981Smrg</literallayout>
833ea1d6981Smrg
834ea1d6981Smrg<literallayout>
835ea1d6981Smrg<emphasis role='bold'>LBXGCANDDRAWENT</emphasis>
836ea1d6981Smrg[ gc-cache-index, drawable-cache-index: CARD4 ]
837ea1d6981Smrg</literallayout>
838ea1d6981Smrg
839ea1d6981Smrg<literallayout>
840ea1d6981Smrg<emphasis role='bold'>LBXGCANDDRAWUPDATE</emphasis>
841ea1d6981Smrg      drawable: DRAWABLE      /* present only if
842ea1d6981Smrg<emphasis>drawable-cache-index</emphasis>
843ea1d6981Smrg == 0 */
844ea1d6981Smrggc: GC]      /* present only if <emphasis>gc-cache-index</emphasis> == 0 */
845ea1d6981Smrg</literallayout>
846ea1d6981Smrg
847ea1d6981Smrg<literallayout>
848ea1d6981Smrg<emphasis role='bold'>LBXGCANDDRAWABLE</emphasis>
849ea1d6981Smrg      cache-entries: LBXGCANDDRAWENT
850ea1d6981Smrg      updates: LBXGCANDDRAWUPDATE
851ea1d6981Smrg</literallayout>
852ea1d6981Smrg
853ea1d6981Smrg<literallayout>
854ea1d6981Smrg<emphasis role='bold'>LBXINT16</emphasis>: INT8 or 2 BYTE
855ea1d6981Smrg      where:
856ea1d6981Smrg      0xF790 &lt;= in &lt; 0xFF90      out[0] = 0x80 | (((in + 0x70) &gt;&gt;
857ea1d6981Smrg8) &amp; 0x0F)
858ea1d6981Smrg            out[1] = in + 0x70
859ea1d6981Smrg      0xFF90 &lt;= in &lt; 0x0080      CARD8
860ea1d6981Smrg      0x0080 &lt;= in &lt; 0x0880      out[0] = 0x80 | (((in - 0x80) &gt;&gt;
861ea1d6981Smrg8) &amp; 0x0F)
862ea1d6981Smrg            out[1] = in - 0x80
863ea1d6981Smrg</literallayout>
864ea1d6981Smrg
865ea1d6981Smrg<literallayout>
866ea1d6981Smrg<emphasis role='bold'>LBXPINT16</emphasis>: CARD8 or 2 BYTE       /* for
867ea1d6981Smrgusually positive numbers */
868ea1d6981Smrg      where:
869ea1d6981Smrg      0xFE00 &lt;= in &lt; 0x0000      out[0] = 0xF0 | (((in + 0x1000)
870ea1d6981Smrg&gt;&gt; 8) &amp; 0x0F)
871ea1d6981Smrg            out[1] = in + 0x1000
872ea1d6981Smrg      0x0000 &lt;= in &lt; 0x00F0       CARD8
873ea1d6981Smrg      0x00F0 &lt;= in &lt; 0x0EF0      out[0] = 0xF0 | ((in - 0xF0) &gt;&gt;8)
874ea1d6981Smrg            out[1] = in - 0xF0
875ea1d6981Smrg</literallayout>
876ea1d6981Smrg
877ea1d6981Smrg<literallayout>
878ea1d6981Smrg<emphasis role='bold'>LBXPOINT</emphasis>: [x, y: LBXINT16]
879ea1d6981Smrg      Within a list of points, after the first rectangle, x and y are
880ea1d6981Smrgrelative to the corresponding fields of the prior point.
881ea1d6981Smrg</literallayout>
882ea1d6981Smrg
883ea1d6981Smrg<literallayout>
884ea1d6981Smrg<emphasis role='bold'>LBXRECTANGLE</emphasis>:
885ea1d6981Smrg      [x, y: LBXINT16,
886ea1d6981Smrg      width, height: LBXCARD16]
887ea1d6981Smrg</literallayout>
888ea1d6981Smrg
889ea1d6981Smrg<para>
890ea1d6981SmrgWithin a list of rectangles, after the first rectangle, x and
891ea1d6981Smrgy are relative to the corresponding fields of the prior rectangle.
892ea1d6981Smrg</para>
893ea1d6981Smrg
894ea1d6981Smrg<para>
895ea1d6981SmrgMASK: CARD8
896ea1d6981Smrg</para>
897ea1d6981Smrg
898ea1d6981Smrg
899ea1d6981Smrg</sect2>
900ea1d6981Smrg<sect2 id='errors'>
901ea1d6981Smrg<title>Errors</title>
902ea1d6981Smrg
903ea1d6981Smrg<para>
904ea1d6981SmrgAs with the X11 protocol, when a request terminates with an error,
905ea1d6981Smrgthe request has no side effects (that is, there is no partial execution).
906ea1d6981Smrg</para>
907ea1d6981Smrg
908ea1d6981Smrg
909ea1d6981Smrg<para>
910ea1d6981SmrgThere is one error, <emphasis>
911ea1d6981SmrgLbxClient</emphasis>
912ea1d6981Smrg. This error indicates that the client field of an LBX request was invalid, or
913ea1d6981Smrgthat the proxy’s connection was in an invalid state for a start or stop proxy
914ea1d6981Smrgrequest.
915ea1d6981Smrg</para>
916ea1d6981Smrg
917ea1d6981Smrg
918ea1d6981Smrg</sect2>
919ea1d6981Smrg<sect2 id='requests'>
920ea1d6981Smrg<title>Requests</title>
921ea1d6981Smrg
922ea1d6981Smrg<para>
923ea1d6981SmrgThere is one request that is expected to be used only by the client: <emphasis>
924ea1d6981SmrgLbxQueryVersion</emphasis>
925ea1d6981Smrg</para>
926ea1d6981Smrg
927ea1d6981Smrg
928ea1d6981Smrg<para>
929ea1d6981SmrgThere is one request that is expected to be used by the client or the proxy:
930ea1d6981Smrg<emphasis>
931ea1d6981SmrgLbxQueryExtension</emphasis>
932ea1d6981Smrg.
933ea1d6981Smrg</para>
934ea1d6981Smrg
935ea1d6981Smrg
936ea1d6981Smrg<para>
937ea1d6981SmrgThe following requests are expected to be used only by the proxy, and are
938ea1d6981Smrginstigated by the proxy: <emphasis>
939ea1d6981SmrgLbxStartProxy</emphasis>
940ea1d6981Smrg, <emphasis>
941ea1d6981SmrgLbxStopProxy</emphasis>
942ea1d6981Smrg, <emphasis>
943ea1d6981SmrgLbxNewClient</emphasis>
944ea1d6981Smrg, <emphasis>
945ea1d6981SmrgLbxSwitch</emphasis>
946ea1d6981Smrg, <emphasis>
947ea1d6981SmrgLbxCloseClient</emphasis>
948ea1d6981Smrg, <emphasis>
949ea1d6981SmrgLbxModifySequence</emphasis>
950ea1d6981Smrg, <emphasis>
951ea1d6981SmrgLbxAllowMotion</emphasis>
952ea1d6981Smrg, <emphasis>
953ea1d6981SmrgLbxInvalidateTag</emphasis>
954ea1d6981Smrg, <emphasis>
955ea1d6981SmrgLbxTagData</emphasis>
956ea1d6981Smrg and <emphasis>
957ea1d6981SmrgLbxQueryTag</emphasis>
958ea1d6981Smrg.
959ea1d6981Smrg</para>
960ea1d6981Smrg
961ea1d6981Smrg
962ea1d6981Smrg<para>
963ea1d6981SmrgAll other requests are sent by the proxy to the LBX server and are instigated
964ea1d6981Smrgby reception of an X request from the client. They replace the X request.
965ea1d6981Smrg</para>
966ea1d6981Smrg
967ea1d6981Smrg
968ea1d6981Smrg<sect3 id='requests_initiated_by_the_proxy_or_by_the_client'>
969ea1d6981Smrg<title>Requests Initiated by the Proxy or by the Client</title>
970ea1d6981Smrg
971ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
972ea1d6981Smrg  <?dbfo keep-together="always" ?>
973ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
974ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
975ea1d6981Smrg  <thead>
976ea1d6981Smrg    <row>
977ea1d6981Smrg      <entry role='protoname'>LbxQueryVersion</entry>
978ea1d6981Smrg    </row>
979ea1d6981Smrg  </thead>
980ea1d6981Smrg  <tbody>
981ea1d6981Smrg    <row>
982ea1d6981Smrg     <entry>=&gt;;</entry>
983ea1d6981Smrg    </row>
984ea1d6981Smrg    <row>
985ea1d6981Smrg      <entry role='protoargs'>majorVersion: CARD16</entry>
986ea1d6981Smrg    </row>
987ea1d6981Smrg    <row>
988ea1d6981Smrg      <entry role='protoargs'>minorVersion: CARD16</entry>
989ea1d6981Smrg    </row>
990ea1d6981Smrg  </tbody>
991ea1d6981Smrg  </tgroup>
992ea1d6981Smrg</informaltable>
993ea1d6981Smrg
994ea1d6981Smrg<para>
995ea1d6981SmrgThis request returns the major and minor version numbers of the LBX protocol.
996ea1d6981Smrg</para>
997ea1d6981Smrg
998ea1d6981Smrg
999ea1d6981Smrg<para>
1000ea1d6981SmrgThe encoding of this request is on <ulink url="lbx.htm#34166">See
1001ea1d6981SmrgLbxQueryVersion</ulink>.
1002ea1d6981Smrg</para>
1003ea1d6981Smrg
1004ea1d6981Smrg
1005ea1d6981Smrg
1006ea1d6981Smrg</sect3>
1007ea1d6981Smrg<sect3 id='requests_initiated_or_substituted_by_the_proxy'>
1008ea1d6981Smrg<title>Requests Initiated or Substituted by the Proxy</title>
1009ea1d6981Smrg
1010ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
1011ea1d6981Smrg  <?dbfo keep-together="always" ?>
1012ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
1013ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
1014ea1d6981Smrg  <thead>
1015ea1d6981Smrg    <row>
1016ea1d6981Smrg      <entry role='protoname'>LbxQueryExtension</entry>
1017ea1d6981Smrg    </row>
1018ea1d6981Smrg  </thead>
1019ea1d6981Smrg  <tbody>
1020ea1d6981Smrg    <row>
1021ea1d6981Smrg      <entry role='protoargs'><emphasis>
1022ea1d6981Smrgnbytes</emphasis>
1023ea1d6981Smrg: CARD32</entry>
1024ea1d6981Smrg    </row>
1025ea1d6981Smrg    <row>
1026ea1d6981Smrg      <entry role='protoargs'><emphasis>
1027ea1d6981Smrgname</emphasis>
1028ea1d6981Smrg: STRING8</entry>
1029ea1d6981Smrg    </row>
1030ea1d6981Smrg    <row>
1031ea1d6981Smrg      <entry>=&gt;</entry>
1032ea1d6981Smrg    </row>
1033ea1d6981Smrg    <row>
1034ea1d6981Smrg      <entry role='protoargs'>num-requests: CARD8</entry>
1035ea1d6981Smrg    </row>
1036ea1d6981Smrg    <row>
1037ea1d6981Smrg      <entry role='protoargs'>present: BOOL</entry>
1038ea1d6981Smrg    </row>
1039ea1d6981Smrg    <row>
1040ea1d6981Smrg      <entry role='protoargs'>major-opcode: CARD8</entry>
1041ea1d6981Smrg    </row>
1042ea1d6981Smrg    <row>
1043ea1d6981Smrg      <entry role='protoargs'>first-event: CARD8</entry>
1044ea1d6981Smrg    </row>
1045ea1d6981Smrg    <row>
1046ea1d6981Smrg      <entry role='protoargs'>first-error: CARD8</entry>
1047ea1d6981Smrg    </row>
1048ea1d6981Smrg    <row>
1049ea1d6981Smrg      <entry role='protoargs'>reply-mask: LISTofMASK      /* optional */</entry>
1050ea1d6981Smrg    </row>
1051ea1d6981Smrg    <row>
1052ea1d6981Smrg      <entry role='protoargs'>event-mask:LISTofMASK      /* optional */</entry>
1053ea1d6981Smrg    </row>
1054ea1d6981Smrg    <row>
1055ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
1056ea1d6981SmrgAlloc</emphasis>
1057ea1d6981Smrg</entry>
1058ea1d6981Smrg    </row>
1059ea1d6981Smrg  </tbody>
1060ea1d6981Smrg  </tgroup>
1061ea1d6981Smrg</informaltable>
1062ea1d6981Smrg
1063ea1d6981Smrg<para>
1064ea1d6981SmrgThis request is identical to the <emphasis>
1065ea1d6981SmrgQueryExtension</emphasis>
1066ea1d6981Smrg request, with an additional field, and two optional additional fields. When
1067ea1d6981Smrgthe client issues an <emphasis>
1068ea1d6981SmrgQueryExtension</emphasis>
1069ea1d6981Smrg request, the proxy will substitute an <emphasis>
1070ea1d6981SmrgLbxQueryExtension</emphasis>
1071ea1d6981Smrg request.
1072ea1d6981Smrg</para>
1073ea1d6981Smrg
1074ea1d6981Smrg
1075ea1d6981Smrg<para>
1076ea1d6981SmrgThis request determines if the named extension is present. If so, the major
1077ea1d6981Smrgopcode for the extension is returned, if it has one. Otherwise, zero is
1078ea1d6981Smrgreturned. Any minor opcode and the request formats are specific to the
1079ea1d6981Smrgextension. If the extension involves additional event types, the base event
1080ea1d6981Smrgtype code is returned. Otherwise, zero is returned. The format of events is
1081ea1d6981Smrgspecific to the extension. If the extension involves additional error codes,
1082ea1d6981Smrgthe base error code is returned. Otherwise, zero is returned. The format of
1083ea1d6981Smrgadditional data in the errors is specific to the extension.
1084ea1d6981Smrg</para>
1085ea1d6981Smrg
1086ea1d6981Smrg
1087ea1d6981Smrg<para>
1088ea1d6981SmrgIn addition, the number of requests defined by the named extension is returned.
1089ea1d6981SmrgIf the number of requests is nonzero, and if the information is available,
1090ea1d6981Smrgreply-mask and event-mask will be included in the reply. The reply-mask
1091ea1d6981Smrgrepresents a bit-wise one-to-one correspondence with the extension requests.
1092ea1d6981SmrgThe least significant bit corresponds to the first request, and the next bit
1093ea1d6981Smrgcorresponds to the next request, and so on. Each element in the list contains
1094ea1d6981Smrgeight meaningful bits, except for the last element, which contains eight or
1095ea1d6981Smrgfewer meaningful bits. Unused bits are not guaranteed to be zero. The bit
1096ea1d6981Smrgcorresponding to a request is set if the request could generate a reply,
1097ea1d6981Smrgotherwise it is zero. In the same way, the event-mask represents a bit-wise
1098ea1d6981Smrgone-to-one correspondence with the extension requests. A bit is set if the
1099ea1d6981Smrgcorresponding request could result in the generation of one or more extension
1100ea1d6981Smrgor X11 events. If reply-mask is present in the reply, event-mask will also be
1101ea1d6981Smrgpresent.
1102ea1d6981Smrg</para>
1103ea1d6981Smrg
1104ea1d6981Smrg
1105ea1d6981Smrg<para>
1106ea1d6981SmrgThe encoding of this request is on <ulink url="lbx.htm#37117">See
1107ea1d6981SmrgLbxQueryExtension</ulink>.
1108ea1d6981Smrg</para>
1109ea1d6981Smrg
1110ea1d6981Smrg
1111ea1d6981Smrg
1112ea1d6981Smrg</sect3>
1113ea1d6981Smrg<sect3 id='control_requests_initiated_by_the_proxy'>
1114ea1d6981Smrg<title>Control Requests Initiated by the Proxy</title>
1115ea1d6981Smrg
1116ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
1117ea1d6981Smrg  <?dbfo keep-together="always" ?>
1118ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
1119ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
1120ea1d6981Smrg  <thead>
1121ea1d6981Smrg    <row>
1122ea1d6981Smrg      <entry role='protoname'>LbxStartProxy</entry>
1123ea1d6981Smrg    </row>
1124ea1d6981Smrg  </thead>
1125ea1d6981Smrg  <tbody>
1126ea1d6981Smrg    <row>
1127ea1d6981Smrg      <entry role='protoargs'><emphasis>
1128ea1d6981Smrgoptions</emphasis>
1129ea1d6981Smrg: LISTofOPTION</entry>
1130ea1d6981Smrg    </row>
1131ea1d6981Smrg    <row>
1132ea1d6981Smrg      <entry>=&gt;</entry>
1133ea1d6981Smrg    </row>
1134ea1d6981Smrg    <row>
1135ea1d6981Smrg      <entry role='protoargs'>choices: LISTofCHOICE</entry>
1136ea1d6981Smrg    </row>
1137ea1d6981Smrg    <row>
1138ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
1139ea1d6981SmrgLbxClient</emphasis>
1140ea1d6981Smrg, <emphasis>
1141ea1d6981SmrgAlloc</emphasis>
1142ea1d6981Smrg</entry>
1143ea1d6981Smrg    </row>
1144ea1d6981Smrg    <row>
1145ea1d6981Smrg      <entry>where:</entry>
1146ea1d6981Smrg    </row>
1147ea1d6981Smrg    <row>
1148ea1d6981Smrg      <entry role='protoargs'>OPTION       [optcode: CARD8,</entry>
1149ea1d6981Smrg    </row>
1150ea1d6981Smrg    <row>
1151ea1d6981Smrg      <entry role='protoargs'>      len: OPTLEN,</entry>
1152ea1d6981Smrg    </row>
1153ea1d6981Smrg    <row>
1154ea1d6981Smrg      <entry role='protoargs'>      option:       (See <ulink
1155ea1d6981Smrgurl="lbx.htm#35444">See StartProxy Options</ulink>) ]</entry>
1156ea1d6981Smrg    </row>
1157ea1d6981Smrg    <row>
1158ea1d6981Smrg      <entry role='protoargs'>CHOICE      [optcode: CARD8,</entry>
1159ea1d6981Smrg    </row>
1160ea1d6981Smrg    <row>
1161ea1d6981Smrg      <entry role='protoargs'>      len: OPTLEN,</entry>
1162ea1d6981Smrg    </row>
1163ea1d6981Smrg    <row>
1164ea1d6981Smrg      <entry role='protoargs'>      choice:        (See <ulink
1165ea1d6981Smrgurl="lbx.htm#35444">See StartProxy Options</ulink>) ]</entry>
1166ea1d6981Smrg    </row>
1167ea1d6981Smrg  </tbody>
1168ea1d6981Smrg  </tgroup>
1169ea1d6981Smrg</informaltable>
1170ea1d6981Smrg<!--
1171ea1d6981Smrg    <row>
1172ea1d6981Smrg      <entry role='protoargs'> -->
1173ea1d6981Smrg
1174ea1d6981Smrg
1175ea1d6981Smrg<table frame='topbot'>
1176ea1d6981Smrg <title>StartProxy Options</title>
1177ea1d6981Smrg <?dbfo keep-together="always" ?>
1178ea1d6981Smrg <tgroup cols='4' align='left' colsep='0' rowsep='0'>
1179ea1d6981Smrg <colspec colname='c1' colwidth='1.0*'/>
1180ea1d6981Smrg <colspec colname='c2' colwidth='1.5*'/>
1181ea1d6981Smrg <colspec colname='c3' colwidth='1.5*'/>
1182ea1d6981Smrg <colspec colname='c4' colwidth='1.5*'/>
1183ea1d6981Smrg<thead>
1184ea1d6981Smrg<row rowsep='1'>
1185ea1d6981Smrg  <entry>optcode</entry>
1186ea1d6981Smrg  <entry>option</entry>
1187ea1d6981Smrg  <entry>choice</entry>
1188ea1d6981Smrg  <entry>default</entry>
1189ea1d6981Smrg</row>
1190ea1d6981Smrg</thead>
1191ea1d6981Smrg<tbody>
1192ea1d6981Smrg<row>
1193ea1d6981Smrg    <entry>delta-proxy</entry>
1194ea1d6981Smrg    <entry>DELTAOPT</entry>
1195ea1d6981Smrg    <entry>DELTACHOICE</entry>
1196ea1d6981Smrg    <entry>entries=16, maxlen=64</entry>
1197ea1d6981Smrg</row>
1198ea1d6981Smrg<row>
1199ea1d6981Smrg    <entry>delta-server</entry>
1200ea1d6981Smrg    <entry>DELTAOPT</entry>
1201ea1d6981Smrg    <entry>DELTACHOICE</entry>
1202ea1d6981Smrg    <entry>entries=16, maxlen=64</entry>
1203ea1d6981Smrg</row>
1204ea1d6981Smrg<row>
1205ea1d6981Smrg    <entry>stream-comp</entry>
1206ea1d6981Smrg    <entry>LISTofNAMEDOPT</entry>
1207ea1d6981Smrg    <entry>INDEXEDCHOICE</entry>
1208ea1d6981Smrg    <entry>No Compression</entry>
1209ea1d6981Smrg</row>
1210ea1d6981Smrg<row>
1211ea1d6981Smrg    <entry>bitmap-comp</entry>
1212ea1d6981Smrg    <entry>LISTofSTRING8</entry>
1213ea1d6981Smrg    <entry>LISTofINDEXEDOPT</entry>
1214ea1d6981Smrg    <entry>No Compression</entry>
1215ea1d6981Smrg</row>
1216ea1d6981Smrg<row>
1217ea1d6981Smrg    <entry>pixmap-comp</entry>
1218ea1d6981Smrg    <entry>LISTofPIXMAPMETHOD</entry>
1219ea1d6981Smrg    <entry>LISTofPIXMAPCHOICE</entry>
1220ea1d6981Smrg    <entry>No Compression</entry>
1221ea1d6981Smrg</row>
1222ea1d6981Smrg<row>
1223ea1d6981Smrg    <entry>use-squish</entry>
1224ea1d6981Smrg    <entry>BOOL</entry>
1225ea1d6981Smrg    <entry>BOOL</entry>
1226ea1d6981Smrg    <entry>True</entry>
1227ea1d6981Smrg</row>
1228ea1d6981Smrg<row>
1229ea1d6981Smrg    <entry>use-tags</entry>
1230ea1d6981Smrg    <entry>BOOL</entry>
1231ea1d6981Smrg    <entry>BOOL</entry>
1232ea1d6981Smrg    <entry>True</entry>
1233ea1d6981Smrg</row>
1234ea1d6981Smrg<row>
1235ea1d6981Smrg    <entry>colormap</entry>
1236ea1d6981Smrg    <entry>LISTofSTRING8</entry>
1237ea1d6981Smrg    <entry>INDEXEDCHOICE</entry>
1238ea1d6981Smrg    <entry>No Colormap Grabbing</entry>
1239ea1d6981Smrg</row>
1240ea1d6981Smrg<row>
1241ea1d6981Smrg    <entry>extension</entry>
1242ea1d6981Smrg    <entry>NAMEDOPT</entry>
1243ea1d6981Smrg    <entry>INDEXEDCHOICE</entry>
1244ea1d6981Smrg    <entry>Extension Disabled</entry>
1245ea1d6981Smrg  </row>
1246ea1d6981Smrg</tbody>
1247ea1d6981Smrg</tgroup>
1248ea1d6981Smrg</table>
1249ea1d6981Smrg<!--      </entry>
1250ea1d6981Smrg    </row>
1251ea1d6981Smrg-->
1252ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
1253ea1d6981Smrg  <?dbfo keep-together="always" ?>
1254ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
1255ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
1256ea1d6981Smrg  <tbody>
1257ea1d6981Smrg    <row>
1258ea1d6981Smrg      <entry role='protoargs'>&nbsp;</entry>
1259ea1d6981Smrg    </row>
1260ea1d6981Smrg    <row>
1261ea1d6981Smrg      <entry role='protoargs'>DELTAOPT       [minN, maxN, prefN: CARD8</entry>
1262ea1d6981Smrg    </row>
1263ea1d6981Smrg    <row>
1264ea1d6981Smrg      <entry role='protoargs'>      minMaxMsgLen, maxMaxMsgLen, prefMaxMsgLen:
1265ea1d6981SmrgCARD8]</entry>
1266ea1d6981Smrg    </row>
1267ea1d6981Smrg    <row>
1268ea1d6981Smrg      <entry role='protoargs'>DELTACHOICE      [entries, maxlen:
1269ea1d6981SmrgCARD8]</entry>
1270ea1d6981Smrg    </row>
1271ea1d6981Smrg    <row>
1272ea1d6981Smrg      <entry role='protoargs'>INDEXEDCHOICE      [index: CARD8,</entry>
1273ea1d6981Smrg    </row>
1274ea1d6981Smrg    <row>
1275ea1d6981Smrg      <entry role='protoargs'>      data: LISTofBYTE]</entry>
1276ea1d6981Smrg    </row>
1277ea1d6981Smrg    <row>
1278ea1d6981Smrg      <entry role='protoargs'>INDEXEDOPT      [index, opcode: CARD8]</entry>
1279ea1d6981Smrg    </row>
1280ea1d6981Smrg    <row>
1281ea1d6981Smrg      <entry role='protoargs'>NAMEDOPT      [name: STRING8,</entry>
1282ea1d6981Smrg    </row>
1283ea1d6981Smrg    <row>
1284ea1d6981Smrg      <entry role='protoargs'>      detail: LISTofBYTE]</entry>
1285ea1d6981Smrg    </row>
1286ea1d6981Smrg    <row>
1287ea1d6981Smrg      <entry role='protoargs'>OPTLEN      1 or 3 CARD8</entry>
1288ea1d6981Smrg    </row>
1289ea1d6981Smrg    <row>
1290ea1d6981Smrg      <entry role='protoargs'>      where:</entry>
1291ea1d6981Smrg    </row>
1292ea1d6981Smrg    <row>
1293ea1d6981Smrg      <entry role='protoargs'>      (0 &lt; in &lt;= 0xFF):       out =
1294ea1d6981Smrgin</entry>
1295ea1d6981Smrg    </row>
1296ea1d6981Smrg    <row>
1297ea1d6981Smrg      <entry role='protoargs'>      (0 &lt;= in&lt;= 0xFFFF):       out[0] =
1298ea1d6981Smrg0; out[1] = in &gt;&gt; 8; out[2] = in&amp; 0xFF;</entry>
1299ea1d6981Smrg    </row>
1300ea1d6981Smrg    <row>
1301ea1d6981Smrg      <entry role='protoargs'>PIXMAPMETHOD      [name: STRING8,</entry>
1302ea1d6981Smrg    </row>
1303ea1d6981Smrg    <row>
1304ea1d6981Smrg      <entry role='protoargs'>      format-mask: BITMASK,</entry>
1305ea1d6981Smrg    </row>
1306ea1d6981Smrg    <row>
1307ea1d6981Smrg      <entry role='protoargs'>      depths: LISTofCARD8]</entry>
1308ea1d6981Smrg    </row>
1309ea1d6981Smrg    <row>
1310ea1d6981Smrg      <entry role='protoargs'>PIXMAPCHOICE      [index, opcode: CARD8,</entry>
1311ea1d6981Smrg    </row>
1312ea1d6981Smrg    <row>
1313ea1d6981Smrg      <entry role='protoargs'>      format-mask: BITMASK,</entry>
1314ea1d6981Smrg    </row>
1315ea1d6981Smrg    <row>
1316ea1d6981Smrg      <entry role='protoargs'>      depths: LISTofCARD8]</entry>
1317ea1d6981Smrg    </row>
1318ea1d6981Smrg    <row>
1319ea1d6981Smrg      <entry role='protoargs'></entry>
1320ea1d6981Smrg    </row>
1321ea1d6981Smrg  </tbody>
1322ea1d6981Smrg  </tgroup>
1323ea1d6981Smrg</informaltable>
1324ea1d6981Smrg
1325ea1d6981Smrg<para>
1326ea1d6981SmrgThis request negotiates LBX protocol options, and switches the proxy-server
1327ea1d6981Smrgconnection from X11 protocol to LBX protocol.
1328ea1d6981Smrg</para>
1329ea1d6981Smrg
1330ea1d6981Smrg
1331ea1d6981Smrg<para>
1332ea1d6981SmrgThe proxy gives the preferred protocol options in the request. The server
1333ea1d6981Smrgchooses from the given options and informs the proxy which to use. The options
1334ea1d6981Smrgmay be listed in any order, and the proxy may choose which options to
1335ea1d6981Smrgnegotiate. If an option is not successfully negotiated, the default is used.
1336ea1d6981Smrg</para>
1337ea1d6981Smrg
1338ea1d6981Smrg
1339ea1d6981Smrg<para>
1340ea1d6981SmrgThe server delta cache and proxy delta caches can be configured for number of
1341ea1d6981Smrgentries, and the length of entries. (See <ulink url="lbx.htm#22595">See Delta
1342ea1d6981Smrgcache</ulink> for details.) The delta caches are configured using the <emphasis>
1343ea1d6981Smrgdelta-server</emphasis>
1344ea1d6981Smrg and <emphasis>
1345ea1d6981Smrgdelta-proxy</emphasis>
1346ea1d6981Smrg options. To configure a cache, the proxy sends the minimum, maximum and
1347ea1d6981Smrgpreferred values for the number of cache entries, (<emphasis>
1348ea1d6981SmrgminN, maxN, prefN</emphasis>
1349ea1d6981Smrg), and the length of the cache entries, (<emphasis>
1350ea1d6981SmrgminMaxMsgLen, maxMaxMsgLen, prefMaxMsgLen</emphasis>
1351ea1d6981Smrg). The server’s reply fields, <emphasis>
1352ea1d6981Smrgentries</emphasis>
1353ea1d6981Smrg and <emphasis>
1354ea1d6981Smrgmaxlen</emphasis>
1355ea1d6981Smrg, contains the values to use. These values must be within the ranges specified
1356ea1d6981Smrgby the proxy. The server may also specify an <emphasis>
1357ea1d6981Smrgentries</emphasis>
1358ea1d6981Smrg value of 0 to disable delta caching. The cache entry lengths are specified in
1359ea1d6981Smrgunits of 4 bytes.
1360ea1d6981Smrg</para>
1361ea1d6981Smrg
1362ea1d6981Smrg
1363ea1d6981Smrg<para>
1364ea1d6981SmrgThe stream compression algorithm is selected using the <emphasis>
1365ea1d6981Smrgstream-comp </emphasis>
1366ea1d6981Smrgoption. (Stream compression is described in <ulink url="lbx.htm#11596">See
1367ea1d6981SmrgStream Compression</ulink>.) Each algorithm has a name that follows the naming
1368ea1d6981Smrgconventions in <ulink url="lbx.htm#13570">See Algorithm Naming</ulink>. To
1369ea1d6981Smrgnegotiate using the stream-comp option, the proxy lists its available
1370ea1d6981Smrgcompressors. For each candidate algorithm, the proxy sends the name in the
1371ea1d6981Smrg<emphasis>
1372ea1d6981Smrgname</emphasis>
1373ea1d6981Smrg field, and uses the <emphasis>
1374ea1d6981Smrgdetail</emphasis>
1375ea1d6981Smrg field to send any additional data specific to each compression algorithm. The
1376ea1d6981Smrgreply contains a 0-based index into the list of algorithms to indicate which
1377ea1d6981Smrgalgorithm to use, followed by data specific to that algorithm.
1378ea1d6981Smrg</para>
1379ea1d6981Smrg
1380ea1d6981Smrg
1381ea1d6981Smrg<para>
1382ea1d6981SmrgBitmap compression is negotiated using the <emphasis>
1383ea1d6981Smrgbitmap-comp</emphasis>
1384ea1d6981Smrg option. The proxy sends a list of names of available algorithms, and the
1385ea1d6981Smrgserver reply lists the algorithms to use. For each bitmap algorithm in the
1386ea1d6981Smrgreply, a 0-based index into the list of algorithms indicates the algorithm, and
1387ea1d6981Smrgthe <emphasis>
1388ea1d6981Smrgopcode</emphasis>
1389ea1d6981Smrg field gives the value for use in requests. The algorithm names follow the
1390ea1d6981Smrgconventions in <ulink url="lbx.htm#13570">See Algorithm Naming</ulink>.
1391ea1d6981Smrg</para>
1392ea1d6981Smrg
1393ea1d6981Smrg
1394ea1d6981Smrg<para>
1395ea1d6981SmrgPixmap compression is negotiated using the <emphasis>
1396ea1d6981Smrgpixmap-comp</emphasis>
1397ea1d6981Smrg option. The proxy sends a list of available algorithms. For each algorithm,
1398ea1d6981Smrgthe list includes, the name, a bitmask of supported formats, and a list of
1399ea1d6981Smrgdepths that the format supports. The server reply lists the algorithms to use.
1400ea1d6981SmrgFor each pixmap algorithm in the reply, the reply contains a 0-based index into
1401ea1d6981Smrgthe list of proxy algorithms, the opcode to use in requests when referring to
1402ea1d6981Smrgthis algorithm, a mask of valid formats, and a list of valid depths. Algorithm
1403ea1d6981Smrgnames follow the conventions in <ulink url="lbx.htm#13570">See Algorithm
1404ea1d6981SmrgNaming</ulink>.
1405ea1d6981Smrg</para>
1406ea1d6981Smrg
1407ea1d6981Smrg
1408ea1d6981Smrg<para>
1409ea1d6981SmrgSquishing is negotiated using the use-squish option. If the proxy desires
1410ea1d6981Smrgsquishing, it sends a true value. The reply from the server indicates whether
1411ea1d6981Smrgto do squishing, and will indicate squishing only if <emphasis>
1412ea1d6981Smrguse-squish</emphasis>
1413ea1d6981Smrg is set to true in the request.
1414ea1d6981Smrg</para>
1415ea1d6981Smrg
1416ea1d6981Smrg
1417ea1d6981Smrg<para>
1418ea1d6981SmrgTag caching, described in <ulink url="lbx.htm#11018">See Tags</ulink>, is
1419ea1d6981Smrgnegotiated using the use-tag option. If the proxy desires tag caching, it sends
1420ea1d6981Smrga true value. The reply from the server indicates whether to do tag caching,
1421ea1d6981Smrgand will demand caching only if <emphasis>
1422ea1d6981Smrguse-tag</emphasis>
1423ea1d6981Smrg is set to true in the request.
1424ea1d6981Smrg</para>
1425ea1d6981Smrg
1426ea1d6981Smrg
1427ea1d6981Smrg<para>
1428ea1d6981SmrgThe colormap option is used to negotiate what color matching algorithm will be
1429ea1d6981Smrgused by the proxy when the proxy uses the <emphasis>
1430ea1d6981SmrgLbxAllocColor</emphasis>
1431ea1d6981Smrg request to allocate pixels in a grabbed colormap. To negotiate using the
1432ea1d6981Smrgcolormap option, the proxy lists the names of available colormap algorithms.
1433ea1d6981SmrgThe choice in the reply contains a 0-based index into the list of algorithms to
1434ea1d6981Smrgindicate which algorithm to use, followed by data specific to that algorithm.
1435ea1d6981SmrgIf no colormap algorithm is successfully negotiated, then the <emphasis>
1436ea1d6981SmrgLbxAllocColor</emphasis>
1437ea1d6981Smrg, <emphasis>
1438ea1d6981SmrgLbxGrabCmap</emphasis>
1439ea1d6981Smrg, and <emphasis>
1440ea1d6981SmrgLbxReleaseCmap</emphasis>
1441ea1d6981Smrg requests will not be used.
1442ea1d6981Smrg</para>
1443ea1d6981Smrg
1444ea1d6981Smrg
1445ea1d6981Smrg<para>
1446ea1d6981SmrgThe extension option is used to control extensions to LBX. These extensions
1447ea1d6981Smrgmay, for example, enable other types of compression. To negotiate an extension,
1448ea1d6981Smrgthe name of the extension is sent, followed by any data specific to that
1449ea1d6981Smrgextension. The extension name follows the conventions in <ulink
1450ea1d6981Smrgurl="lbx.htm#13570">See Algorithm Naming</ulink>. The extension option may
1451ea1d6981Smrgoccur multiple times in the start proxy message, since multiple extensions can
1452ea1d6981Smrgbe negotiated. The reply to an extension option contains the zero-based index
1453ea1d6981Smrgof the extension option, as counted in the <emphasis>
1454ea1d6981SmrgLbxStartProxy</emphasis>
1455ea1d6981Smrg message. This index is followed by extension-specific information. The server
1456ea1d6981Smrgdoes not respond to extensions it does not recognize.
1457ea1d6981Smrg</para>
1458ea1d6981Smrg
1459ea1d6981Smrg
1460ea1d6981Smrg<para>
1461ea1d6981SmrgAn <emphasis>
1462ea1d6981SmrgLbxClient</emphasis>
1463ea1d6981Smrg error is returned when a client which is already communicating through an LBX
1464ea1d6981Smrgproxy to the X server sends a <emphasis>
1465ea1d6981SmrgLbxStartProxy</emphasis>
1466ea1d6981Smrg request.
1467ea1d6981Smrg</para>
1468ea1d6981Smrg
1469ea1d6981Smrg
1470ea1d6981Smrg<para>
1471ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#27452">See
1472ea1d6981SmrgLbxStartProxy</ulink>.
1473ea1d6981Smrg</para>
1474ea1d6981Smrg
1475ea1d6981Smrg
1476ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
1477ea1d6981Smrg  <?dbfo keep-together="always" ?>
1478ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
1479ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
1480ea1d6981Smrg  <thead>
1481ea1d6981Smrg    <row>
1482ea1d6981Smrg      <entry role='protoname'>LbxStopProxy</entry>
1483ea1d6981Smrg    </row>
1484ea1d6981Smrg  </thead>
1485ea1d6981Smrg  <tbody>
1486ea1d6981Smrg    <row>
1487ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
1488ea1d6981SmrgLbxClient</emphasis>
1489ea1d6981Smrg</entry>
1490ea1d6981Smrg    </row>
1491ea1d6981Smrg  </tbody>
1492ea1d6981Smrg  </tgroup>
1493ea1d6981Smrg</informaltable>
1494ea1d6981Smrg
1495ea1d6981Smrg<para>
1496ea1d6981SmrgThis request terminates the connection between the proxy and X server, and
1497ea1d6981Smrgterminates any clients connected through the proxy.
1498ea1d6981Smrg</para>
1499ea1d6981Smrg
1500ea1d6981Smrg
1501ea1d6981Smrg<para>
1502ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#23471">See
1503ea1d6981SmrgLbxStopProxy</ulink>.
1504ea1d6981Smrg</para>
1505ea1d6981Smrg
1506ea1d6981Smrg
1507ea1d6981Smrg<para>
1508ea1d6981SmrgAn <emphasis>
1509ea1d6981SmrgLbxClient</emphasis>
1510ea1d6981Smrg error is returned if the requesting client is not an LBX proxy.
1511ea1d6981Smrg</para>
1512ea1d6981Smrg
1513ea1d6981Smrg
1514ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
1515ea1d6981Smrg  <?dbfo keep-together="always" ?>
1516ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
1517ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
1518ea1d6981Smrg  <thead>
1519ea1d6981Smrg    <row>
1520ea1d6981Smrg      <entry role='protoname'>LbxNewClient</entry>
1521ea1d6981Smrg    </row>
1522ea1d6981Smrg  </thead>
1523ea1d6981Smrg  <tbody>
1524ea1d6981Smrg    <row>
1525ea1d6981Smrg      <entry role='protoargs'><emphasis>
1526ea1d6981Smrgbyte-order</emphasis>
1527ea1d6981Smrg: CARD8</entry>
1528ea1d6981Smrg    </row>
1529ea1d6981Smrg    <row>
1530ea1d6981Smrg      <entry role='protoargs'><emphasis>
1531ea1d6981Smrgclient-id</emphasis>
1532ea1d6981Smrg: CARD32</entry>
1533ea1d6981Smrg    </row>
1534ea1d6981Smrg    <row>
1535ea1d6981Smrg      <entry role='protoargs'><emphasis>
1536ea1d6981Smrgprotocol-major-version</emphasis>
1537ea1d6981Smrg: CARD16</entry>
1538ea1d6981Smrg    </row>
1539ea1d6981Smrg    <row>
1540ea1d6981Smrg      <entry role='protoargs'><emphasis>
1541ea1d6981Smrgprotocol-minor-version:</emphasis>
1542ea1d6981Smrg CARD16</entry>
1543ea1d6981Smrg    </row>
1544ea1d6981Smrg    <row>
1545ea1d6981Smrg      <entry role='protoargs'><emphasis>
1546ea1d6981Smrgauthorization-protocol-name</emphasis>
1547ea1d6981Smrg: STRING8</entry>
1548ea1d6981Smrg    </row>
1549ea1d6981Smrg    <row>
1550ea1d6981Smrg      <entry role='protoargs'><emphasis>
1551ea1d6981Smrgauthorization-protocol-data</emphasis>
1552ea1d6981Smrg: STRING8</entry>
1553ea1d6981Smrg    </row>
1554ea1d6981Smrg    <row>
1555ea1d6981Smrg      <entry>=&gt;</entry>
1556ea1d6981Smrg    </row>
1557ea1d6981Smrg    <row>
1558ea1d6981Smrg      <entry role='protoargs'>Core X reply (if connection is rejected)</entry>
1559ea1d6981Smrg    </row>
1560ea1d6981Smrg    <row>
1561ea1d6981Smrg      <entry role='protoargs'>&nbsp;</entry>
1562ea1d6981Smrg    </row>
1563ea1d6981Smrg    <row>
1564ea1d6981Smrg      <entry role='protoargs'>OR</entry>
1565ea1d6981Smrg    </row>
1566ea1d6981Smrg    <row>
1567ea1d6981Smrg      <entry role='protoargs'>&nbsp;</entry>
1568ea1d6981Smrg    </row>
1569ea1d6981Smrg    <row>
1570ea1d6981Smrg      <entry role='protoargs'>success: BOOL</entry>
1571ea1d6981Smrg    </row>
1572ea1d6981Smrg    <row>
1573ea1d6981Smrg      <entry role='protoargs'>change-type: {NoDeltas, NormalClientDeltas,
1574ea1d6981SmrgAppGroupDeltas}</entry>
1575ea1d6981Smrg    </row>
1576ea1d6981Smrg    <row>
1577ea1d6981Smrg      <entry role='protoargs'>protocol-major-version: CARD16</entry>
1578ea1d6981Smrg    </row>
1579ea1d6981Smrg    <row>
1580ea1d6981Smrg      <entry role='protoargs'>protocol-minor-version: CARD16</entry>
1581ea1d6981Smrg    </row>
1582ea1d6981Smrg    <row>
1583ea1d6981Smrg      <entry role='protoargs'>tag-id: CARD32</entry>
1584ea1d6981Smrg    </row>
1585ea1d6981Smrg    <row>
1586ea1d6981Smrg      <entry role='protoargs'>length: CARD16</entry>
1587ea1d6981Smrg    </row>
1588ea1d6981Smrg    <row>
1589ea1d6981Smrg      <entry role='protoargs'>connection-data: CONINFO or CONDIF or
1590ea1d6981SmrgCONDIFROOT</entry>
1591ea1d6981Smrg    </row>
1592ea1d6981Smrg    <row>
1593ea1d6981Smrg      <entry role='protoargs'>&nbsp;</entry>
1594ea1d6981Smrg    </row>
1595ea1d6981Smrg    <row>
1596ea1d6981Smrg      <entry role='protoargs'>where:</entry>
1597ea1d6981Smrg    </row>
1598ea1d6981Smrg    <row>
1599ea1d6981Smrg      <entry role='protoargs'>CONINFO:       (the &quot;additional data&quot;
1600ea1d6981Smrgportion of the core connection reply for successes)</entry>
1601ea1d6981Smrg    </row>
1602ea1d6981Smrg    <row>
1603ea1d6981Smrg      <entry role='protoargs'>CONDIF:      [resource-id-base: CARD32,</entry>
1604ea1d6981Smrg    </row>
1605ea1d6981Smrg    <row>
1606ea1d6981Smrg      <entry role='protoargs'>      root-input-masks: LISTofSETofEVENT]</entry>
1607ea1d6981Smrg    </row>
1608ea1d6981Smrg    <row>
1609ea1d6981Smrg      <entry role='protoargs'>CONDIFROOT:      [resource-id-base:
1610ea1d6981SmrgCARD32,</entry>
1611ea1d6981Smrg    </row>
1612ea1d6981Smrg    <row>
1613ea1d6981Smrg      <entry role='protoargs'>      root: WINDOW</entry>
1614ea1d6981Smrg    </row>
1615ea1d6981Smrg    <row>
1616ea1d6981Smrg      <entry role='protoargs'>      root-visual: VISUALID</entry>
1617ea1d6981Smrg    </row>
1618ea1d6981Smrg    <row>
1619ea1d6981Smrg      <entry role='protoargs'>      default-colormap: COLORMAP</entry>
1620ea1d6981Smrg    </row>
1621ea1d6981Smrg    <row>
1622ea1d6981Smrg      <entry role='protoargs'>      white-pixel, black-pixel: CARD32</entry>
1623ea1d6981Smrg    </row>
1624ea1d6981Smrg    <row>
1625ea1d6981Smrg      <entry role='protoargs'>      root-input-masks: LISTofSETofEVENT]</entry>
1626ea1d6981Smrg    </row>
1627ea1d6981Smrg  </tbody>
1628ea1d6981Smrg  </tgroup>
1629ea1d6981Smrg</informaltable>
1630ea1d6981Smrg
1631ea1d6981Smrg<para>
1632ea1d6981SmrgErrors: LbxClient, Alloc
1633ea1d6981Smrg</para>
1634ea1d6981Smrg
1635ea1d6981Smrg
1636ea1d6981Smrg<para>
1637ea1d6981SmrgThis request, which is sent by the proxy over the control connection, creates a
1638ea1d6981Smrgnew virtual connection to the server.
1639ea1d6981Smrg</para>
1640ea1d6981Smrg
1641ea1d6981Smrg
1642ea1d6981Smrg<para>
1643ea1d6981SmrgMuch of the information in the <emphasis>
1644ea1d6981SmrgLbxNewClient</emphasis>
1645ea1d6981Smrg request and reply is identical to the connection setup and reply information
1646ea1d6981Smrgin the core X protocol.
1647ea1d6981Smrg</para>
1648ea1d6981Smrg
1649ea1d6981Smrg
1650ea1d6981Smrg<para>
1651ea1d6981SmrgFor the <emphasis>
1652ea1d6981SmrgLbxNewClient</emphasis>
1653ea1d6981Smrg request, the field unique to LBX is client-id. For the <emphasis>
1654ea1d6981SmrgLbxNewClient</emphasis>
1655ea1d6981Smrg reply, <emphasis>
1656ea1d6981Smrgtag-id</emphasis>
1657ea1d6981Smrg and <emphasis>
1658ea1d6981Smrgchange-type</emphasis>
1659ea1d6981Smrg are fields unique to LBX, and the contents of connection-data may be different
1660ea1d6981Smrgin LBX from the core X protocol (see below).
1661ea1d6981Smrg</para>
1662ea1d6981Smrg
1663ea1d6981Smrg
1664ea1d6981Smrg<para>
1665ea1d6981SmrgThe proxy assigns each virtual connection a unique identifier using the
1666ea1d6981Smrg<emphasis>
1667ea1d6981Smrgclient-id</emphasis>
1668ea1d6981Smrg field in the <emphasis>
1669ea1d6981SmrgLbxNewClient</emphasis>
1670ea1d6981Smrg request. This client-id is used in the LBX protocol to specify the current
1671ea1d6981Smrgclient (see the <emphasis>
1672ea1d6981SmrgLbxSwitch</emphasis>
1673ea1d6981Smrg request and the <emphasis>
1674ea1d6981SmrgLbxSwitchEvent</emphasis>
1675ea1d6981Smrg). client-id 0 is reserved for the proxy control connection. An <emphasis>
1676ea1d6981SmrgLbxClient</emphasis>
1677ea1d6981Smrg error will result if the <emphasis>
1678ea1d6981SmrgLbxNewClient</emphasis>
1679ea1d6981Smrg request contains a client-id of 0 or an already in use client-id.
1680ea1d6981Smrg</para>
1681ea1d6981Smrg
1682ea1d6981Smrg
1683ea1d6981Smrg<para>
1684ea1d6981SmrgIf the server rejects this new virtual connection, the server sends a core X
1685ea1d6981Smrgconnection failure reply to the proxy. The current version of LBX does not
1686ea1d6981Smrgsupport the return of an <emphasis>
1687ea1d6981SmrgAuthenticate</emphasis>
1688ea1d6981Smrg reply.
1689ea1d6981Smrg</para>
1690ea1d6981Smrg
1691ea1d6981Smrg
1692ea1d6981Smrg<para>
1693ea1d6981SmrgIf the <emphasis>
1694ea1d6981Smrgchange-type</emphasis>
1695ea1d6981Smrg field is set to <emphasis>
1696ea1d6981SmrgNoDeltas</emphasis>
1697ea1d6981Smrg, then <emphasis>
1698ea1d6981Smrgconnection-data</emphasis>
1699ea1d6981Smrg is sent using the CONINFO structure, which is identical to the additional data
1700ea1d6981Smrgof the core connection reply. If the <emphasis>
1701ea1d6981Smrgtag-id</emphasis>
1702ea1d6981Smrg is non-zero, then the connection-data is stored by the proxy using this tag
1703ea1d6981Smrgvalue. Tagged connection data must be stored by the proxy, and can not be
1704ea1d6981Smrginvalidated by the proxy until an <emphasis>
1705ea1d6981SmrgLbxInvalidateTag</emphasis>
1706ea1d6981Smrg event is received for that tag.
1707ea1d6981Smrg</para>
1708ea1d6981Smrg
1709ea1d6981Smrg
1710ea1d6981Smrg<para>
1711ea1d6981SmrgWhen the <emphasis>
1712ea1d6981Smrgchange-type</emphasis>
1713ea1d6981Smrg field is not set to <emphasis>
1714ea1d6981SmrgNoDeltas</emphasis>
1715ea1d6981Smrg, then connection data is sent as changes against connection information
1716ea1d6981Smrgpreviously sent to the proxy. The <emphasis>
1717ea1d6981Smrgtag-id</emphasis>
1718ea1d6981Smrg field, if non-zero, has the tag of the previously sent data to apply the
1719ea1d6981Smrgchanges to. A zero tag-id indicates that the changes are with respect to the
1720ea1d6981Smrgconnection information sent when the proxy connected to the server.
1721ea1d6981Smrg</para>
1722ea1d6981Smrg
1723ea1d6981Smrg
1724ea1d6981Smrg<para>
1725ea1d6981SmrgIf the <emphasis>
1726ea1d6981Smrgchange-type</emphasis>
1727ea1d6981Smrg field is set to <emphasis>
1728ea1d6981SmrgNormalClientDeltas</emphasis>
1729ea1d6981Smrg, then <emphasis>
1730ea1d6981Smrgconnection-data</emphasis>
1731ea1d6981Smrg is sent using the CONDIF structure. The values in the CONDIF structure are
1732ea1d6981Smrgsubstituted for the identically named fields of the connection information for
1733ea1d6981Smrgthe new connection.
1734ea1d6981Smrg</para>
1735ea1d6981Smrg
1736ea1d6981Smrg
1737ea1d6981Smrg<para>
1738ea1d6981SmrgIf the <emphasis>
1739ea1d6981Smrgchange-type</emphasis>
1740ea1d6981Smrg field is set to <emphasis>
1741ea1d6981SmrgAppGroupDeltas</emphasis>
1742ea1d6981Smrg, then <emphasis>
1743ea1d6981Smrgconnection-data</emphasis>
1744ea1d6981Smrg is sent using the CONDIFROOT structure. The <emphasis>
1745ea1d6981Smrgroot</emphasis>
1746ea1d6981Smrg, <emphasis>
1747ea1d6981Smrgroot-visual</emphasis>
1748ea1d6981Smrg, and <emphasis>
1749ea1d6981Smrgdefault-colormap</emphasis>
1750ea1d6981Smrg fields, when nonzero, are substituted for the corresponding fields in the
1751ea1d6981Smrgreference connection information. The <emphasis>
1752ea1d6981Smrgwhite-pixel</emphasis>
1753ea1d6981Smrg and <emphasis>
1754ea1d6981Smrgblack-pixel</emphasis>
1755ea1d6981Smrg fields are substituted only when the <emphasis>
1756ea1d6981Smrgdefault-colormap</emphasis>
1757ea1d6981Smrg field of the reply is non-zero. When <emphasis>
1758ea1d6981Smrgdefault-colormap</emphasis>
1759ea1d6981Smrg field of the reply is zero, so are <emphasis>
1760ea1d6981Smrgwhite-pixel</emphasis>
1761ea1d6981Smrg and <emphasis>
1762ea1d6981Smrgblack-pixel</emphasis>
1763ea1d6981Smrg. The first entry in the <emphasis>
1764ea1d6981Smrgroot-input-masks</emphasis>
1765ea1d6981Smrg field is the current-input-mask for the default root window. The remaining
1766ea1d6981Smrgentries in <emphasis>
1767ea1d6981Smrgroot-input-masks</emphasis>
1768ea1d6981Smrg are input masks for non-video screens, as defined by the X Print Extension.
1769ea1d6981SmrgThe number of non-video screens is one less than the number of entries in
1770ea1d6981Smrg<emphasis>
1771ea1d6981Smrgroot-input-masks</emphasis>
1772ea1d6981Smrg. These screens are at the end of screen list in the reference connection
1773ea1d6981Smrginformation.
1774ea1d6981Smrg</para>
1775ea1d6981Smrg
1776ea1d6981Smrg
1777ea1d6981Smrg<para>
1778ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#15166">See The
1779ea1d6981Smrgdescription of this request is on page 13.</ulink>.
1780ea1d6981Smrg</para>
1781ea1d6981Smrg
1782ea1d6981Smrg
1783ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
1784ea1d6981Smrg  <?dbfo keep-together="always" ?>
1785ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
1786ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
1787ea1d6981Smrg  <thead>
1788ea1d6981Smrg    <row>
1789ea1d6981Smrg      <entry role='protoname'>LbxCloseClient</entry>
1790ea1d6981Smrg    </row>
1791ea1d6981Smrg  </thead>
1792ea1d6981Smrg  <tbody>
1793ea1d6981Smrg    <row>
1794ea1d6981Smrg      <entry role='protoargs'><emphasis>
1795ea1d6981Smrgclient</emphasis>
1796ea1d6981Smrg: CARD32</entry>
1797ea1d6981Smrg    </row>
1798ea1d6981Smrg
1799ea1d6981Smrg    <row>
1800ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
1801ea1d6981SmrgLbxClient</emphasis>
1802ea1d6981Smrg</entry>
1803ea1d6981Smrg    </row>
1804ea1d6981Smrg  </tbody>
1805ea1d6981Smrg  </tgroup>
1806ea1d6981Smrg</informaltable>
1807ea1d6981Smrg
1808ea1d6981Smrg<para>
1809ea1d6981SmrgThis requests the server to close down the connection represented by the
1810ea1d6981Smrgspecified proxy’s client identifier. If the specified client wasn’t
1811ea1d6981Smrgpreviously registered with the server by a <emphasis>
1812ea1d6981SmrgLbxNewClient</emphasis>
1813ea1d6981Smrg request, the server will send the <emphasis>
1814ea1d6981SmrgLbxClient</emphasis>
1815ea1d6981Smrg error.
1816ea1d6981Smrg</para>
1817ea1d6981Smrg
1818ea1d6981Smrg
1819ea1d6981Smrg<para>
1820ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#21121">See The
1821ea1d6981Smrgdescription of this request is on page 12.</ulink>.
1822ea1d6981Smrg</para>
1823ea1d6981Smrg
1824ea1d6981Smrg
1825ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
1826ea1d6981Smrg  <?dbfo keep-together="always" ?>
1827ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
1828ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
1829ea1d6981Smrg  <thead>
1830ea1d6981Smrg    <row>
1831ea1d6981Smrg      <entry role='protoname'>LbxSwitch</entry>
1832ea1d6981Smrg    </row>
1833ea1d6981Smrg  </thead>
1834ea1d6981Smrg  <tbody>
1835ea1d6981Smrg    <row>
1836ea1d6981Smrg      <entry role='protoargs'><emphasis>
1837ea1d6981Smrgclient</emphasis>
1838ea1d6981Smrg: CARD32</entry>
1839ea1d6981Smrg    </row>
1840ea1d6981Smrg
1841ea1d6981Smrg    <row>
1842ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
1843ea1d6981SmrgLbxClient</emphasis>
1844ea1d6981Smrg</entry>
1845ea1d6981Smrg    </row>
1846ea1d6981Smrg  </tbody>
1847ea1d6981Smrg  </tgroup>
1848ea1d6981Smrg</informaltable>
1849ea1d6981Smrg
1850ea1d6981Smrg<para>
1851ea1d6981SmrgThis request causes the X server to treat subsequent requests as being from a
1852ea1d6981Smrgconnection to the X server represented by the specified client identifier.
1853ea1d6981Smrg</para>
1854ea1d6981Smrg
1855ea1d6981Smrg
1856ea1d6981Smrg<para>
1857ea1d6981SmrgIf the client making the request is not the proxy, or if the client identifier
1858ea1d6981Smrgsent in the request was not previously sent in a <emphasis>
1859ea1d6981SmrgLbxNewClient</emphasis>
1860ea1d6981Smrg request, an <emphasis>
1861ea1d6981SmrgLbxClient</emphasis>
1862ea1d6981Smrg error is returned.
1863ea1d6981Smrg</para>
1864ea1d6981Smrg
1865ea1d6981Smrg
1866ea1d6981Smrg<para>
1867ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#36790">See
1868ea1d6981SmrgLbxSwitch</ulink>.
1869ea1d6981Smrg</para>
1870ea1d6981Smrg
1871ea1d6981Smrg
1872ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
1873ea1d6981Smrg  <?dbfo keep-together="always" ?>
1874ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
1875ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
1876ea1d6981Smrg  <thead>
1877ea1d6981Smrg    <row>
1878ea1d6981Smrg      <entry role='protoname'>LbxSync</entry>
1879ea1d6981Smrg    </row>
1880ea1d6981Smrg  </thead>
1881ea1d6981Smrg  <tbody>
1882ea1d6981Smrg    <row>
1883ea1d6981Smrg      <entry>=&gt;</entry>
1884ea1d6981Smrg    </row>
1885ea1d6981Smrg  </tbody>
1886ea1d6981Smrg  </tgroup>
1887ea1d6981Smrg</informaltable>
1888ea1d6981Smrg
1889ea1d6981Smrg<para>
1890ea1d6981SmrgThe sync request causes the server to send a reply when all requests before the
1891ea1d6981Smrgsync request have been processed.
1892ea1d6981Smrg</para>
1893ea1d6981Smrg
1894ea1d6981Smrg
1895ea1d6981Smrg<para>
1896ea1d6981SmrgThe encoding for this client is on <ulink url="lbx.htm#21186">See
1897ea1d6981SmrgLbxSync</ulink>.
1898ea1d6981Smrg</para>
1899ea1d6981Smrg
1900ea1d6981Smrg
1901ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
1902ea1d6981Smrg  <?dbfo keep-together="always" ?>
1903ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
1904ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
1905ea1d6981Smrg  <thead>
1906ea1d6981Smrg    <row>
1907ea1d6981Smrg      <entry role='protoname'>LbxModifySequence</entry>
1908ea1d6981Smrg    </row>
1909ea1d6981Smrg  </thead>
1910ea1d6981Smrg  <tbody>
1911ea1d6981Smrg    <row>
1912ea1d6981Smrg      <entry role='protoargs'><emphasis>
1913ea1d6981Smrgadjust</emphasis>
1914ea1d6981Smrg: CARD32</entry>
1915ea1d6981Smrg    </row>
1916ea1d6981Smrg
1917ea1d6981Smrg    <row>
1918ea1d6981Smrg      <entry role='protoerror'>Errors: None</entry>
1919ea1d6981Smrg    </row>
1920ea1d6981Smrg  </tbody>
1921ea1d6981Smrg  </tgroup>
1922ea1d6981Smrg</informaltable>
1923ea1d6981Smrg
1924ea1d6981Smrg<para>
1925ea1d6981SmrgThis request advances the sequence number of the virtual client connection by
1926ea1d6981Smrgthe specified amount. The proxy sends the <emphasis>
1927ea1d6981SmrgLbxModifySequence</emphasis>
1928ea1d6981Smrg request to the server when it replies to a client request without forwarding
1929ea1d6981Smrgthe client request on to the X server.
1930ea1d6981Smrg</para>
1931ea1d6981Smrg
1932ea1d6981Smrg
1933ea1d6981Smrg<para>
1934ea1d6981SmrgThe encoding for this client is on <ulink url="lbx.htm#10940">See The
1935ea1d6981Smrgdescription of this request is on page 13.</ulink>.
1936ea1d6981Smrg</para>
1937ea1d6981Smrg
1938ea1d6981Smrg
1939ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
1940ea1d6981Smrg  <?dbfo keep-together="always" ?>
1941ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
1942ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
1943ea1d6981Smrg  <thead>
1944ea1d6981Smrg    <row>
1945ea1d6981Smrg      <entry role='protoname'>LbxAllowMotion</entry>
1946ea1d6981Smrg    </row>
1947ea1d6981Smrg  </thead>
1948ea1d6981Smrg  <tbody>
1949ea1d6981Smrg    <row>
1950ea1d6981Smrg      <entry role='protoargs'><emphasis>
1951ea1d6981Smrgnum</emphasis>
1952ea1d6981Smrg: CARD32</entry>
1953ea1d6981Smrg    </row>
1954ea1d6981Smrg
1955ea1d6981Smrg    <row>
1956ea1d6981Smrg      <entry role='protoerror'>Errors: None</entry>
1957ea1d6981Smrg    </row>
1958ea1d6981Smrg  </tbody>
1959ea1d6981Smrg  </tgroup>
1960ea1d6981Smrg</informaltable>
1961ea1d6981Smrg
1962ea1d6981Smrg<para>
1963ea1d6981SmrgThis request controls the delivery of optional motion notify events, as
1964ea1d6981Smrgdescribed in <ulink url="lbx.htm#15503">See Motion events</ulink>. The num
1965ea1d6981Smrgfield specifies an increase in the allowed number of motion notify events sent.
1966ea1d6981Smrg</para>
1967ea1d6981Smrg
1968ea1d6981Smrg
1969ea1d6981Smrg<para>
1970ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#11897">See The
1971ea1d6981Smrgdescription of this request is on page 14.</ulink>.
1972ea1d6981Smrg</para>
1973ea1d6981Smrg
1974ea1d6981Smrg
1975ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
1976ea1d6981Smrg  <?dbfo keep-together="always" ?>
1977ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
1978ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
1979ea1d6981Smrg  <thead>
1980ea1d6981Smrg    <row>
1981ea1d6981Smrg      <entry role='protoname'>LbxInvalidateTag</entry>
1982ea1d6981Smrg    </row>
1983ea1d6981Smrg  </thead>
1984ea1d6981Smrg  <tbody>
1985ea1d6981Smrg    <row>
1986ea1d6981Smrg      <entry role='protoargs'><emphasis>
1987ea1d6981Smrgtag</emphasis>
1988ea1d6981Smrg: CARD32</entry>
1989ea1d6981Smrg    </row>
1990ea1d6981Smrg  </tbody>
1991ea1d6981Smrg  </tgroup>
1992ea1d6981Smrg</informaltable>
1993ea1d6981Smrg
1994ea1d6981Smrg<para>
1995ea1d6981SmrgThe LBX proxy sends this notification to the X server when it refuses to store
1996ea1d6981Smrgtagged data, or when it releases tagged data which was previously stored and
1997ea1d6981Smrgwhich was not invalidated by a notification from the X server.
1998ea1d6981Smrg</para>
1999ea1d6981Smrg
2000ea1d6981Smrg
2001ea1d6981Smrg<para>
2002ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#37545">See
2003ea1d6981SmrgLbxInvalidateTag</ulink>.
2004ea1d6981Smrg</para>
2005ea1d6981Smrg
2006ea1d6981Smrg
2007ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
2008ea1d6981Smrg  <?dbfo keep-together="always" ?>
2009ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
2010ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
2011ea1d6981Smrg  <thead>
2012ea1d6981Smrg    <row>
2013ea1d6981Smrg      <entry role='protoname'>LbxTagData</entry>
2014ea1d6981Smrg    </row>
2015ea1d6981Smrg  </thead>
2016ea1d6981Smrg  <tbody>
2017ea1d6981Smrg    <row>
2018ea1d6981Smrg      <entry role='protoargs'><emphasis>
2019ea1d6981Smrgtag</emphasis>
2020ea1d6981Smrg: CARD32</entry>
2021ea1d6981Smrg    </row>
2022ea1d6981Smrg    <row>
2023ea1d6981Smrg      <entry role='protoargs'><emphasis>
2024ea1d6981Smrgreal-length</emphasis>
2025ea1d6981Smrg: CARD32</entry>
2026ea1d6981Smrg    </row>
2027ea1d6981Smrg    <row>
2028ea1d6981Smrg      <entry role='protoargs'><emphasis>
2029ea1d6981Smrgdata</emphasis>
2030ea1d6981Smrg: LISTofBYTE</entry>
2031ea1d6981Smrg    </row>
2032ea1d6981Smrg  </tbody>
2033ea1d6981Smrg  </tgroup>
2034ea1d6981Smrg</informaltable>
2035ea1d6981Smrg
2036ea1d6981Smrg<para>
2037ea1d6981SmrgThis request specifies the data associated with a previously assigned tag. It
2038ea1d6981Smrgis sent in two circumstances: in response to receiving a <emphasis>
2039ea1d6981SmrgSendTagDataEvent</emphasis>
2040ea1d6981Smrg, and spontaneously, when the proxy must rely on the server to store data which
2041ea1d6981Smrgwas not previously received from the server. The data is carried in the byte
2042ea1d6981Smrgorder and structure as would have originally been sent in the core protocol
2043ea1d6981Smrgrequest.
2044ea1d6981Smrg</para>
2045ea1d6981Smrg
2046ea1d6981Smrg
2047ea1d6981Smrg<para>
2048ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#37174">See
2049ea1d6981SmrgLbxTagData</ulink>.
2050ea1d6981Smrg</para>
2051ea1d6981Smrg
2052ea1d6981Smrg
2053ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
2054ea1d6981Smrg  <?dbfo keep-together="always" ?>
2055ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
2056ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
2057ea1d6981Smrg  <thead>
2058ea1d6981Smrg    <row>
2059ea1d6981Smrg      <entry role='protoname'>LbxGrabCmap</entry>
2060ea1d6981Smrg    </row>
2061ea1d6981Smrg  </thead>
2062ea1d6981Smrg  <tbody>
2063ea1d6981Smrg    <row>
2064ea1d6981Smrg      <entry role='protoargs'><emphasis>
2065ea1d6981Smrgcmap</emphasis>
2066ea1d6981Smrg: Colormap </entry>
2067ea1d6981Smrg    </row>
2068ea1d6981Smrg    <row>
2069ea1d6981Smrg      <entry>=&gt;</entry>
2070ea1d6981Smrg    </row>
2071ea1d6981Smrg
2072ea1d6981Smrg    <row>
2073ea1d6981Smrg      <entry role='protoargs'><emphasis>
2074ea1d6981Smrgsmart-grab</emphasis>
2075ea1d6981Smrg: BOOL</entry>
2076ea1d6981Smrg    </row>
2077ea1d6981Smrg    <row>
2078ea1d6981Smrg      <entry role='protoargs'><emphasis>
2079ea1d6981Smrglarge-pixel: </emphasis>
2080ea1d6981SmrgBOOL      /* optional */</entry>
2081ea1d6981Smrg    </row>
2082ea1d6981Smrg    <row>
2083ea1d6981Smrg      <entry role='protoargs'><emphasis>
2084ea1d6981Smrgauto-release: </emphasis>
2085ea1d6981SmrgBOOL      /* optional */</entry>
2086ea1d6981Smrg    </row>
2087ea1d6981Smrg    <row>
2088ea1d6981Smrg      <entry role='protoargs'><emphasis>
2089ea1d6981Smrgthree-channels</emphasis>
2090ea1d6981Smrg: BOOL      /* optional */</entry>
2091ea1d6981Smrg    </row>
2092ea1d6981Smrg    <row>
2093ea1d6981Smrg      <entry role='protoargs'><emphasis>
2094ea1d6981Smrgbits-per-rgb: </emphasis>
2095ea1d6981SmrgCARD4      /* optional */</entry>
2096ea1d6981Smrg    </row>
2097ea1d6981Smrg    <row>
2098ea1d6981Smrg      <entry role='protoargs'><emphasis>
2099ea1d6981Smrgcells</emphasis>
2100ea1d6981Smrg: LISTofCHAN      /* optional */</entry>
2101ea1d6981Smrg    </row>
2102ea1d6981Smrg    <row>
2103ea1d6981Smrg      <entry role='protoargs'>&nbsp;</entry>
2104ea1d6981Smrg    </row>
2105ea1d6981Smrg    <row>
2106ea1d6981Smrg      <entry role='protoargs'>where:</entry>
2107ea1d6981Smrg    </row>
2108ea1d6981Smrg    <row>
2109ea1d6981Smrg      <entry role='protoargs'>CHAN:      LISTofLBXPIXEL</entry>
2110ea1d6981Smrg    </row>
2111ea1d6981Smrg    <row>
2112ea1d6981Smrg      <entry role='protoargs'>LBXPIXEL:       PIXELPRIVATE or PIXELPRIVATERANGE
2113ea1d6981Smrgor </entry>
2114ea1d6981Smrg    </row>
2115ea1d6981Smrg    <row>
2116ea1d6981Smrg      <entry role='protoargs'>      PIXELALLOC or PIXELALLOCRANGE </entry>
2117ea1d6981Smrg    </row>
2118ea1d6981Smrg    <row>
2119ea1d6981Smrg      <entry role='protoargs'>PIXEL:      CARD8 or CARD16</entry>
2120ea1d6981Smrg    </row>
2121ea1d6981Smrg    <row>
2122ea1d6981Smrg      <entry role='protoargs'>PIXELPRIVATE:       [ pixel: PIXEL ]</entry>
2123ea1d6981Smrg    </row>
2124ea1d6981Smrg    <row>
2125ea1d6981Smrg      <entry role='protoargs'>PIXELPRIVATERANGE:       [ first-pixel,
2126ea1d6981Smrglast-pixel: PIXEL]</entry>
2127ea1d6981Smrg    </row>
2128ea1d6981Smrg    <row>
2129ea1d6981Smrg      <entry role='protoargs'>PIXELALLOC:       [ pixel: PIXEL,</entry>
2130ea1d6981Smrg    </row>
2131ea1d6981Smrg    <row>
2132ea1d6981Smrg      <entry role='protoargs'>      color: COLORSINGLE or COLORTRIPLE]</entry>
2133ea1d6981Smrg    </row>
2134ea1d6981Smrg    <row>
2135ea1d6981Smrg      <entry role='protoargs'>PIXELALLOCRANGE:       [ first-pixel,
2136ea1d6981Smrglast-pixel: PIXEL,</entry>
2137ea1d6981Smrg    </row>
2138ea1d6981Smrg    <row>
2139ea1d6981Smrg      <entry role='protoargs'>      colors: LISTofCOLORSINGLE or
2140ea1d6981SmrgLISTofCOLORTRIPLE]</entry>
2141ea1d6981Smrg    </row>
2142ea1d6981Smrg    <row>
2143ea1d6981Smrg      <entry role='protoargs'>COLORSINGLE:      [ value: CARD8 or CARD16
2144ea1d6981Smrg]</entry>
2145ea1d6981Smrg    </row>
2146ea1d6981Smrg    <row>
2147ea1d6981Smrg      <entry role='protoargs'>COLORTRIPLE:      [ r, g, b:
2148ea1d6981SmrgCOLORSINGLE]</entry>
2149ea1d6981Smrg    </row>
2150ea1d6981Smrg
2151ea1d6981Smrg    <row>
2152ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
2153ea1d6981SmrgColormap</emphasis>
2154ea1d6981Smrg</entry>
2155ea1d6981Smrg    </row>
2156ea1d6981Smrg  </tbody>
2157ea1d6981Smrg  </tgroup>
2158ea1d6981Smrg</informaltable>
2159ea1d6981Smrg
2160ea1d6981Smrg<para>
2161ea1d6981SmrgThis request asks the server for control of allocating new colormap cells in
2162ea1d6981Smrgthe specified colormap. The server grants control by replying to this request.
2163ea1d6981SmrgIf no changes have occurred since the last time this proxy grabbed this
2164ea1d6981Smrgcolormap, then the <emphasis>
2165ea1d6981Smrgsmart-grab</emphasis>
2166ea1d6981Smrg field of the reply is set to true, and the optional fields are not sent.
2167ea1d6981SmrgOtherwise, the current contents of the colormap are placed in the reply, as
2168ea1d6981Smrgdescribed later in this section.
2169ea1d6981Smrg</para>
2170ea1d6981Smrg
2171ea1d6981Smrg
2172ea1d6981Smrg<para>
2173ea1d6981SmrgOnce the proxy has received the reply, it can use the <emphasis>
2174ea1d6981SmrgLbxAllocColor</emphasis>
2175ea1d6981Smrg request to allocate new colormap cells without the performance penalty of
2176ea1d6981Smrground trips. The proxy is still permitted to use the normal colormap and
2177ea1d6981Smrg<emphasis>
2178ea1d6981SmrgLbxIncrementPixel</emphasis>
2179ea1d6981Smrg requests while the colormap is grabbed. The grab is valid across all virtual
2180ea1d6981Smrgconnections of the proxy.
2181ea1d6981Smrg</para>
2182ea1d6981Smrg
2183ea1d6981Smrg
2184ea1d6981Smrg<para>
2185ea1d6981SmrgThe <emphasis>
2186ea1d6981SmrgLbxGrabCmap</emphasis>
2187ea1d6981Smrg request is limited to colormaps for the visual types negotiated as part of the
2188ea1d6981Smrgcolormap algorithm negotiation in the start proxy request at connection setup.
2189ea1d6981Smrg</para>
2190ea1d6981Smrg
2191ea1d6981Smrg
2192ea1d6981Smrg<para>
2193ea1d6981SmrgThe server and other proxies may not allocate new colormap cells in the
2194ea1d6981Smrgcolormap while the colormap is grabbed by this proxy. If the server or another
2195ea1d6981Smrgproxy needs to allocate new colormap cells, the server sends a Lbx<emphasis>
2196ea1d6981SmrgReleaseCmap</emphasis>
2197ea1d6981Smrg event to the proxy holding the grab, which then issues an <emphasis>
2198ea1d6981SmrgLbxReleaseCmap</emphasis>
2199ea1d6981Smrg request.
2200ea1d6981Smrg</para>
2201ea1d6981Smrg
2202ea1d6981Smrg
2203ea1d6981Smrg<para>
2204ea1d6981SmrgThe server and other proxies may free colormap cells in a colormap grabbed by a
2205ea1d6981Smrgproxy. The server will send an <emphasis>
2206ea1d6981SmrgLbxFreeCells</emphasis>
2207ea1d6981Smrg event to the proxy that currently has the colormap grabbed when the cell
2208ea1d6981Smrgreference count reaches 0.
2209ea1d6981Smrg</para>
2210ea1d6981Smrg
2211ea1d6981Smrg
2212ea1d6981Smrg<para>
2213ea1d6981SmrgIf the colormap is a of a static visual type, such as <emphasis>
2214ea1d6981SmrgStaticGray</emphasis>
2215ea1d6981Smrg, <emphasis>
2216ea1d6981SmrgStaticColor</emphasis>
2217ea1d6981Smrg, <emphasis>
2218ea1d6981SmrgGrayScale</emphasis>
2219ea1d6981Smrg, or <emphasis>
2220ea1d6981SmrgTrueColor</emphasis>
2221ea1d6981Smrg, then the proxy’s grab is immediately released by the server, and the proxy
2222ea1d6981Smrgmust use <emphasis>
2223ea1d6981SmrgLbxIncrementPixel</emphasis>
2224ea1d6981Smrg requests in place of <emphasis>
2225ea1d6981SmrgLbxAllocColor</emphasis>
2226ea1d6981Smrg requests for this colormap.
2227ea1d6981Smrg</para>
2228ea1d6981Smrg
2229ea1d6981Smrg
2230ea1d6981Smrg<para>
2231ea1d6981SmrgIf the cmap field does not refer to a valid colormap or the colormap is already
2232ea1d6981Smrggrabbed by this proxy then a <emphasis>
2233ea1d6981SmrgColormap</emphasis>
2234ea1d6981Smrg error is generated.
2235ea1d6981Smrg</para>
2236ea1d6981Smrg
2237ea1d6981Smrg
2238ea1d6981Smrg<para>
2239ea1d6981SmrgThe reply describes the contents of the colormap via several arguments and a
2240ea1d6981Smrgdescriptive list containing one or three channels, with each channel describing
2241ea1d6981Smrgallocations in the colormap.
2242ea1d6981Smrg</para>
2243ea1d6981Smrg
2244ea1d6981Smrg
2245ea1d6981Smrg<para>
2246ea1d6981SmrgThe <emphasis>
2247ea1d6981Smrglarge-pixel</emphasis>
2248ea1d6981Smrg argument, if True, specifies that PIXEL indices will be listed as CARD16
2249ea1d6981Smrgquantities instead of CARD8. The<emphasis>
2250ea1d6981Smrg auto-release</emphasis>
2251ea1d6981Smrg field, if True, indicates that this colormap is of a static visual type and
2252ea1d6981Smrgthe proxy’s grab is immediately released by the server.
2253ea1d6981Smrg</para>
2254ea1d6981Smrg
2255ea1d6981Smrg
2256ea1d6981Smrg<para>
2257ea1d6981SmrgIf <emphasis>
2258ea1d6981Smrgthree-channels</emphasis>
2259ea1d6981Smrg is False, a single channel is enclosed and color values are described using
2260ea1d6981SmrgCOLORTRIPLE, which has fields for red, green and blue. A single channel is used
2261ea1d6981Smrgwhen the visual type is not <emphasis>
2262ea1d6981SmrgDirectColor</emphasis>
2263ea1d6981Smrg or <emphasis>
2264ea1d6981SmrgTrueColor</emphasis>
2265ea1d6981Smrg.
2266ea1d6981Smrg</para>
2267ea1d6981Smrg
2268ea1d6981Smrg
2269ea1d6981Smrg<para>
2270ea1d6981SmrgIf <emphasis>
2271ea1d6981Smrgthree-channels</emphasis>
2272ea1d6981Smrg is True, separate red, green and blue channel lists are enclosed, for
2273ea1d6981Smrgdescribing a <emphasis>
2274ea1d6981SmrgDirectColor</emphasis>
2275ea1d6981Smrg or <emphasis>
2276ea1d6981SmrgTrueColor</emphasis>
2277ea1d6981Smrg colormap. Color values for entries in each channel are sent using COLORSINGLE
2278ea1d6981Smrgand the corresponding PIXEL value refers to the RGB subfield of the current
2279ea1d6981Smrgchannel, as defined by the corresponding red-mask, green-mask and blue-mask of
2280ea1d6981Smrgthe visual.
2281ea1d6981Smrg</para>
2282ea1d6981Smrg
2283ea1d6981Smrg
2284ea1d6981Smrg<para>
2285ea1d6981SmrgThe <emphasis>
2286ea1d6981Smrgbits-per-rgb</emphasis>
2287ea1d6981Smrg value is one less than the bits-per-rgb-value field of the visual that the
2288ea1d6981Smrgcolormap belongs to. If the value is 7 or less, then COLORSINGLE values in the
2289ea1d6981Smrgdescriptive list are sent using CARD8 fields. Otherwise these values are sent
2290ea1d6981Smrgusing CARD16 fields.
2291ea1d6981Smrg</para>
2292ea1d6981Smrg
2293ea1d6981Smrg
2294ea1d6981Smrg<para>
2295ea1d6981SmrgThe list describing current colormap allocations contains entries of the
2296ea1d6981Smrgfollowing types:
2297ea1d6981Smrg</para>
2298ea1d6981Smrg
2299ea1d6981Smrg
2300ea1d6981Smrg<para>
2301ea1d6981SmrgAn LBXPIXELPRIVATE entry indicates that the pixel in the <emphasis>
2302ea1d6981Smrgpixel </emphasis>
2303ea1d6981Smrgfield is unavailable for allocation.
2304ea1d6981Smrg</para>
2305ea1d6981Smrg
2306ea1d6981Smrg
2307ea1d6981Smrg<para>
2308ea1d6981SmrgAn LBXPIXELPRIVATERANGE entry indicates that a contiguous range of pixels are
2309ea1d6981Smrgunavailable for allocation. The range is <emphasis>
2310ea1d6981Smrgfirst-pixel</emphasis>
2311ea1d6981Smrg to <emphasis>
2312ea1d6981Smrglast-pixel</emphasis>
2313ea1d6981Smrg, and includes <emphasis>
2314ea1d6981Smrglast-pixel</emphasis>
2315ea1d6981Smrg.
2316ea1d6981Smrg</para>
2317ea1d6981Smrg
2318ea1d6981Smrg
2319ea1d6981Smrg<para>
2320ea1d6981SmrgAn LBXPIXELALLOC entry indicates that the pixel in the <emphasis>
2321ea1d6981Smrgpixel </emphasis>
2322ea1d6981Smrgfield is allocated as a read-only pixel. The <emphasis>
2323ea1d6981Smrgcolor</emphasis>
2324ea1d6981Smrg field carries the color information of the pixel.
2325ea1d6981Smrg</para>
2326ea1d6981Smrg
2327ea1d6981Smrg
2328ea1d6981Smrg<para>
2329ea1d6981SmrgAn LBXPIXELALLOCRANGE entry indicates that a contiguous range of pixels are
2330ea1d6981Smrgallocated as read-only. The range starts <emphasis>
2331ea1d6981Smrgfirst-pixel</emphasis>
2332ea1d6981Smrg to <emphasis>
2333ea1d6981Smrglast-pixel</emphasis>
2334ea1d6981Smrg, and includes <emphasis>
2335ea1d6981Smrglast-pixel</emphasis>
2336ea1d6981Smrg. These fields are followed by a list of COLORSINGLE or COLORTRIPLE, depending
2337ea1d6981Smrgon the value of <emphasis>
2338ea1d6981Smrgthree-channels</emphasis>
2339ea1d6981Smrg.
2340ea1d6981Smrg</para>
2341ea1d6981Smrg
2342ea1d6981Smrg
2343ea1d6981Smrg<para>
2344ea1d6981SmrgA NEXTCHANNEL entry indicates that the next channel of the colormap will be
2345ea1d6981Smrgdescribed.
2346ea1d6981Smrg</para>
2347ea1d6981Smrg
2348ea1d6981Smrg
2349ea1d6981Smrg<para>
2350ea1d6981SmrgA LISTEND entry indicates the end of the colormap description.
2351ea1d6981Smrg</para>
2352ea1d6981Smrg
2353ea1d6981Smrg
2354ea1d6981Smrg<para>
2355ea1d6981SmrgAll pixels not described in the reply are unallocated.
2356ea1d6981Smrg</para>
2357ea1d6981Smrg
2358ea1d6981Smrg
2359ea1d6981Smrg<para>
2360ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#17198">See
2361ea1d6981SmrgLbxGrabCmap</ulink>.
2362ea1d6981Smrg</para>
2363ea1d6981Smrg
2364ea1d6981Smrg
2365ea1d6981Smrg
2366ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
2367ea1d6981Smrg  <?dbfo keep-together="always" ?>
2368ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
2369ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
2370ea1d6981Smrg  <thead>
2371ea1d6981Smrg    <row>
2372ea1d6981Smrg      <entry role='protoname'>LbxReleaseCmap</entry>
2373ea1d6981Smrg    </row>
2374ea1d6981Smrg  </thead>
2375ea1d6981Smrg  <tbody>
2376ea1d6981Smrg    <row>
2377ea1d6981Smrg      <entry role='protoargs'><emphasis>
2378ea1d6981Smrgcmap</emphasis>
2379ea1d6981Smrg: Colormap</entry>
2380ea1d6981Smrg    </row>
2381ea1d6981Smrg  </tbody>
2382ea1d6981Smrg  </tgroup>
2383ea1d6981Smrg</informaltable>
2384ea1d6981Smrg
2385ea1d6981Smrg<para>
2386ea1d6981SmrgThis request releases the specified grabbed colormap. If the <emphasis>
2387ea1d6981Smrgcmap</emphasis>
2388ea1d6981Smrg field does not refer to a colormap, a <emphasis>
2389ea1d6981SmrgBadColormap</emphasis>
2390ea1d6981Smrg error is produced.
2391ea1d6981Smrg</para>
2392ea1d6981Smrg
2393ea1d6981Smrg
2394ea1d6981Smrg<para>
2395ea1d6981SmrgThe proxy must remember the state of the colormap when the <emphasis>
2396ea1d6981SmrgLbxReleaseCmap</emphasis>
2397ea1d6981Smrg request is issued if this proxy may at some future time issue another
2398ea1d6981Smrg<emphasis>
2399ea1d6981SmrgLbxGrabCmap</emphasis>
2400ea1d6981Smrg request on this colormap before the state of the colormap changes.
2401ea1d6981Smrg</para>
2402ea1d6981Smrg
2403ea1d6981Smrg
2404ea1d6981Smrg<para>
2405ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#14796">See
2406ea1d6981SmrgLbxReleaseCmap</ulink>.
2407ea1d6981Smrg</para>
2408ea1d6981Smrg
2409ea1d6981Smrg
2410ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
2411ea1d6981Smrg  <?dbfo keep-together="always" ?>
2412ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
2413ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
2414ea1d6981Smrg  <thead>
2415ea1d6981Smrg    <row>
2416ea1d6981Smrg      <entry role='protoname'>LbxInternAtoms</entry>
2417ea1d6981Smrg    </row>
2418ea1d6981Smrg  </thead>
2419ea1d6981Smrg  <tbody>
2420ea1d6981Smrg    <row>
2421ea1d6981Smrg      <entry role='protoargs'><emphasis>
2422ea1d6981Smrgcount</emphasis>
2423ea1d6981Smrg: CARD16</entry>
2424ea1d6981Smrg    </row>
2425ea1d6981Smrg    <row>
2426ea1d6981Smrg      <entry role='protoargs'><emphasis>
2427ea1d6981Smrgnames: LISTofSTRING8</emphasis>
2428ea1d6981Smrg</entry>
2429ea1d6981Smrg    </row>
2430ea1d6981Smrg    <row>
2431ea1d6981Smrg      <entry>=&gt;</entry>
2432ea1d6981Smrg    </row>
2433ea1d6981Smrg
2434ea1d6981Smrg    <row>
2435ea1d6981Smrg      <entry role='protoargs'><emphasis>
2436ea1d6981Smrgatoms</emphasis>
2437ea1d6981Smrg: LISTofATOM</entry>
2438ea1d6981Smrg    </row>
2439ea1d6981Smrg
2440ea1d6981Smrg    <row>
2441ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
2442ea1d6981SmrgAlloc</emphasis>
2443ea1d6981Smrg</entry>
2444ea1d6981Smrg    </row>
2445ea1d6981Smrg  </tbody>
2446ea1d6981Smrg  </tgroup>
2447ea1d6981Smrg</informaltable>
2448ea1d6981Smrg
2449ea1d6981Smrg<para>
2450ea1d6981SmrgThis request allows the proxy to intern a group of atoms in a single round
2451ea1d6981Smrgtrip. The server will create any atoms that do not exist.
2452ea1d6981Smrg</para>
2453ea1d6981Smrg
2454ea1d6981Smrg
2455ea1d6981Smrg<para>
2456ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#34140">See
2457ea1d6981SmrgLbxInternAtoms</ulink>.
2458ea1d6981Smrg</para>
2459ea1d6981Smrg
2460ea1d6981Smrg
2461ea1d6981Smrg
2462ea1d6981Smrg</sect3>
2463ea1d6981Smrg<sect3 id='substitution_requests'>
2464ea1d6981Smrg<title>Substitution Requests</title>
2465ea1d6981Smrg
2466ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
2467ea1d6981Smrg  <?dbfo keep-together="always" ?>
2468ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
2469ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
2470ea1d6981Smrg  <thead>
2471ea1d6981Smrg    <row>
2472ea1d6981Smrg      <entry role='protoname'>LbxAllocColor</entry>
2473ea1d6981Smrg    </row>
2474ea1d6981Smrg  </thead>
2475ea1d6981Smrg  <tbody>
2476ea1d6981Smrg    <row>
2477ea1d6981Smrg      <entry role='protoargs'><emphasis>
2478ea1d6981Smrgcmap</emphasis>
2479ea1d6981Smrg: Colormap</entry>
2480ea1d6981Smrg    </row>
2481ea1d6981Smrg    <row>
2482ea1d6981Smrg      <entry role='protoargs'><emphasis>
2483ea1d6981Smrgpixel</emphasis>
2484ea1d6981Smrg: CARD32</entry>
2485ea1d6981Smrg    </row>
2486ea1d6981Smrg    <row>
2487ea1d6981Smrg      <entry role='protoargs'><emphasis>
2488ea1d6981Smrgred</emphasis>
2489ea1d6981Smrg, <emphasis>
2490ea1d6981Smrggreen</emphasis>
2491ea1d6981Smrg, <emphasis>
2492ea1d6981Smrgblue</emphasis>
2493ea1d6981Smrg: CARD16</entry>
2494ea1d6981Smrg    </row>
2495ea1d6981Smrg  </tbody>
2496ea1d6981Smrg  </tgroup>
2497ea1d6981Smrg</informaltable>
2498ea1d6981Smrg
2499ea1d6981Smrg<para>
2500ea1d6981SmrgThis request is sent by a proxy that has given colormap grabbed to allocate a
2501ea1d6981Smrgnew read-only cell in the colormap. The proxy may substitute this request for
2502ea1d6981Smrgthe core <emphasis>
2503ea1d6981SmrgAllocColor</emphasis>
2504ea1d6981Smrg and <emphasis>
2505ea1d6981SmrgAllocNamedColor</emphasis>
2506ea1d6981Smrg requests.
2507ea1d6981Smrg</para>
2508ea1d6981Smrg
2509ea1d6981Smrg
2510ea1d6981Smrg<para>
2511ea1d6981SmrgThe <emphasis>
2512ea1d6981Smrgpixel</emphasis>
2513ea1d6981Smrg field identifies the colormap cell to allocate. The <emphasis>
2514ea1d6981Smrgred</emphasis>
2515ea1d6981Smrg, <emphasis>
2516ea1d6981Smrggreen</emphasis>
2517ea1d6981Smrg, and <emphasis>
2518ea1d6981Smrgblue</emphasis>
2519ea1d6981Smrg fields are the hardware specific color values of the corresponding fields of
2520ea1d6981Smrgthe core <emphasis>
2521ea1d6981SmrgAllocColor</emphasis>
2522ea1d6981Smrg request. The mapping to hardware specific colormap values by the proxy is
2523ea1d6981Smrgperformed using the color algorithm negotiated by <emphasis>
2524ea1d6981SmrgLbxStartProxy</emphasis>
2525ea1d6981Smrg.
2526ea1d6981Smrg</para>
2527ea1d6981Smrg
2528ea1d6981Smrg
2529ea1d6981Smrg<para>
2530ea1d6981SmrgFor colormaps of static visual types, the <emphasis>
2531ea1d6981SmrgLbxIncrementPixel</emphasis>
2532ea1d6981Smrg request is used instead of LBX <emphasis>
2533ea1d6981SmrgAllocColor</emphasis>
2534ea1d6981Smrg.
2535ea1d6981Smrg</para>
2536ea1d6981Smrg
2537ea1d6981Smrg
2538ea1d6981Smrg<para>
2539ea1d6981SmrgIf the <emphasis>
2540ea1d6981Smrgcmap</emphasis>
2541ea1d6981Smrg field does not identify a grabbed colormap then a <emphasis>
2542ea1d6981SmrgBadAccess</emphasis>
2543ea1d6981Smrg error is produced. If the <emphasis>
2544ea1d6981Smrgpixel</emphasis>
2545ea1d6981Smrg field refers to a read-write entry, or the pixel field refers to a pixel
2546ea1d6981Smrgoutside of the range of this colormap, a <emphasis>
2547ea1d6981SmrgBadAlloc</emphasis>
2548ea1d6981Smrg error is produced.
2549ea1d6981Smrg</para>
2550ea1d6981Smrg
2551ea1d6981Smrg
2552ea1d6981Smrg<para>
2553ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#28429">See
2554ea1d6981SmrgLbxAllocColor</ulink>.
2555ea1d6981Smrg</para>
2556ea1d6981Smrg
2557ea1d6981Smrg
2558ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
2559ea1d6981Smrg  <?dbfo keep-together="always" ?>
2560ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
2561ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
2562ea1d6981Smrg  <thead>
2563ea1d6981Smrg    <row>
2564ea1d6981Smrg      <entry role='protoname'>LbxIncrementPixel</entry>
2565ea1d6981Smrg    </row>
2566ea1d6981Smrg  </thead>
2567ea1d6981Smrg  <tbody>
2568ea1d6981Smrg    <row>
2569ea1d6981Smrg      <entry role='protoargs'><emphasis>
2570ea1d6981Smrgcmap</emphasis>
2571ea1d6981Smrg: COLORMAP</entry>
2572ea1d6981Smrg    </row>
2573ea1d6981Smrg    <row>
2574ea1d6981Smrg      <entry role='protoargs'><emphasis>
2575ea1d6981Smrgpixel</emphasis>
2576ea1d6981Smrg: CARD32</entry>
2577ea1d6981Smrg    </row>
2578ea1d6981Smrg
2579ea1d6981Smrg    <row>
2580ea1d6981Smrg      <entry role='protoerror'>Errors: None</entry>
2581ea1d6981Smrg    </row>
2582ea1d6981Smrg  </tbody>
2583ea1d6981Smrg  </tgroup>
2584ea1d6981Smrg</informaltable>
2585ea1d6981Smrg
2586ea1d6981Smrg<para>
2587ea1d6981SmrgThis request replaces the <emphasis>
2588ea1d6981SmrgAllocColor</emphasis>
2589ea1d6981Smrg request for read-only pixels currently allocated for the current client. If
2590ea1d6981Smrgthe visual type of the colormap is of a static type, this request may be used
2591ea1d6981Smrgon currently unallocated pixels. The colormap is not required to be grabbed to
2592ea1d6981Smrguse this request.
2593ea1d6981Smrg</para>
2594ea1d6981Smrg
2595ea1d6981Smrg
2596ea1d6981Smrg<para>
2597ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#38053">See The
2598ea1d6981Smrgdescription of this request is on page 14.</ulink>.
2599ea1d6981Smrg</para>
2600ea1d6981Smrg
2601ea1d6981Smrg
2602ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
2603ea1d6981Smrg  <?dbfo keep-together="always" ?>
2604ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
2605ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
2606ea1d6981Smrg  <thead>
2607ea1d6981Smrg    <row>
2608ea1d6981Smrg      <entry role='protoname'>LbxDelta</entry>
2609ea1d6981Smrg    </row>
2610ea1d6981Smrg  </thead>
2611ea1d6981Smrg  <tbody>
2612ea1d6981Smrg    <row>
2613ea1d6981Smrg      <entry role='protoargs'><emphasis>
2614ea1d6981Smrgcount</emphasis>
2615ea1d6981Smrg: CARD8</entry>
2616ea1d6981Smrg    </row>
2617ea1d6981Smrg    <row>
2618ea1d6981Smrg      <entry role='protoargs'><emphasis>
2619ea1d6981Smrgcache-index</emphasis>
2620ea1d6981Smrg: CARD8</entry>
2621ea1d6981Smrg    </row>
2622ea1d6981Smrg    <row>
2623ea1d6981Smrg      <entry role='protoargs'><emphasis>
2624ea1d6981Smrgdiffs</emphasis>
2625ea1d6981Smrg: LISTofDIFFITEM</entry>
2626ea1d6981Smrg    </row>
2627ea1d6981Smrg  </tbody>
2628ea1d6981Smrg  </tgroup>
2629ea1d6981Smrg</informaltable>
2630ea1d6981Smrg
2631ea1d6981Smrg<para>
2632ea1d6981SmrgThis request contains a minimal amount of information relative to a similar
2633ea1d6981Smrgprior request. The information is in the form of a difference comparison to a
2634ea1d6981Smrgprior request. The prior request is specified by an index to a cache,
2635ea1d6981Smrgindependently maintained by both the proxy and the server.
2636ea1d6981Smrg</para>
2637ea1d6981Smrg
2638ea1d6981Smrg
2639ea1d6981Smrg<para>
2640ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#39838">See The
2641ea1d6981Smrgdescription of this request is on page 18.</ulink>.
2642ea1d6981Smrg</para>
2643ea1d6981Smrg
2644ea1d6981Smrg
2645ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
2646ea1d6981Smrg  <?dbfo keep-together="always" ?>
2647ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
2648ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
2649ea1d6981Smrg  <thead>
2650ea1d6981Smrg    <row>
2651ea1d6981Smrg      <entry role='protoname'>LbxGetModifierMapping</entry>
2652ea1d6981Smrg    </row>
2653ea1d6981Smrg  </thead>
2654ea1d6981Smrg  <tbody>
2655ea1d6981Smrg    <row>
2656ea1d6981Smrg      <entry>=&gt;</entry>
2657ea1d6981Smrg    </row>
2658ea1d6981Smrg
2659ea1d6981Smrg    <row>
2660ea1d6981Smrg      <entry role='protoargs'><emphasis>
2661ea1d6981Smrgkeyspermod</emphasis>
2662ea1d6981Smrg: CARD8</entry>
2663ea1d6981Smrg    </row>
2664ea1d6981Smrg    <row>
2665ea1d6981Smrg      <entry role='protoargs'><emphasis>
2666ea1d6981Smrgtag</emphasis>
2667ea1d6981Smrg: CARD32</entry>
2668ea1d6981Smrg    </row>
2669ea1d6981Smrg    <row>
2670ea1d6981Smrg      <entry role='protoargs'><emphasis>
2671ea1d6981Smrgkeycodes</emphasis>
2672ea1d6981Smrg: LISTofKEYCODE             /* optional */</entry>
2673ea1d6981Smrg    </row>
2674ea1d6981Smrg  </tbody>
2675ea1d6981Smrg  </tgroup>
2676ea1d6981Smrg</informaltable>
2677ea1d6981Smrg
2678ea1d6981Smrg<para>
2679ea1d6981SmrgThis request is identical to the core <emphasis>
2680ea1d6981SmrgGetModifierMapping</emphasis>
2681ea1d6981Smrg request, with the addition of a tag being returned in the reply. See <ulink
2682ea1d6981Smrgurl="lbx.htm#26534">See Tag Substitution in Requests</ulink> for a description
2683ea1d6981Smrgof the <emphasis>
2684ea1d6981Smrgtag</emphasis>
2685ea1d6981Smrg field and optional fields.
2686ea1d6981Smrg</para>
2687ea1d6981Smrg
2688ea1d6981Smrg
2689ea1d6981Smrg<para>
2690ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#40057">See
2691ea1d6981SmrgLbxGetModifierMapping</ulink>.
2692ea1d6981Smrg</para>
2693ea1d6981Smrg
2694ea1d6981Smrg
2695ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
2696ea1d6981Smrg  <?dbfo keep-together="always" ?>
2697ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
2698ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
2699ea1d6981Smrg  <thead>
2700ea1d6981Smrg    <row>
2701ea1d6981Smrg      <entry role='protoname'>LbxGetKeyboardMapping</entry>
2702ea1d6981Smrg    </row>
2703ea1d6981Smrg  </thead>
2704ea1d6981Smrg  <tbody>
2705ea1d6981Smrg    <row>
2706ea1d6981Smrg      <entry role='protoargs'><emphasis>
2707ea1d6981SmrgfirstKeyCode</emphasis>
2708ea1d6981Smrg: KEYCODE</entry>
2709ea1d6981Smrg    </row>
2710ea1d6981Smrg    <row>
2711ea1d6981Smrg      <entry role='protoargs'><emphasis>
2712ea1d6981Smrgcount</emphasis>
2713ea1d6981Smrg: CARD8</entry>
2714ea1d6981Smrg    </row>
2715ea1d6981Smrg    <row>
2716ea1d6981Smrg      <entry>=&gt;</entry>
2717ea1d6981Smrg    </row>
2718ea1d6981Smrg
2719ea1d6981Smrg    <row>
2720ea1d6981Smrg      <entry role='protoargs'><emphasis>
2721ea1d6981Smrgkeysperkeycode</emphasis>
2722ea1d6981Smrg: CARD8</entry>
2723ea1d6981Smrg    </row>
2724ea1d6981Smrg    <row>
2725ea1d6981Smrg      <entry role='protoargs'><emphasis>
2726ea1d6981Smrgtag</emphasis>
2727ea1d6981Smrg: CARD32</entry>
2728ea1d6981Smrg    </row>
2729ea1d6981Smrg    <row>
2730ea1d6981Smrg      <entry role='protoargs'><emphasis>
2731ea1d6981Smrgkeysyms</emphasis>
2732ea1d6981Smrg: LISTofKEYSYM      /* optional */</entry>
2733ea1d6981Smrg    </row>
2734ea1d6981Smrg
2735ea1d6981Smrg    <row>
2736ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
2737ea1d6981SmrgValue</emphasis>
2738ea1d6981Smrg</entry>
2739ea1d6981Smrg    </row>
2740ea1d6981Smrg  </tbody>
2741ea1d6981Smrg  </tgroup>
2742ea1d6981Smrg</informaltable>
2743ea1d6981Smrg
2744ea1d6981Smrg<para>
2745ea1d6981SmrgThis request is identical to the X <emphasis>
2746ea1d6981SmrgGetKeyboardMapping</emphasis>
2747ea1d6981Smrg protocol request, with the addition that a tag is returned in the reply. See
2748ea1d6981Smrg<ulink url="lbx.htm#26534">See Tag Substitution in Requests</ulink> for a
2749ea1d6981Smrgdescription of the <emphasis>
2750ea1d6981Smrgtag</emphasis>
2751ea1d6981Smrg field and optional fields.
2752ea1d6981Smrg</para>
2753ea1d6981Smrg
2754ea1d6981Smrg
2755ea1d6981Smrg<para>
2756ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#21702">See
2757ea1d6981SmrgLbxGetKeyboardMapping</ulink>.
2758ea1d6981Smrg</para>
2759ea1d6981Smrg
2760ea1d6981Smrg
2761ea1d6981Smrg
2762ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
2763ea1d6981Smrg  <?dbfo keep-together="always" ?>
2764ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
2765ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
2766ea1d6981Smrg  <thead>
2767ea1d6981Smrg    <row>
2768ea1d6981Smrg      <entry role='protoname'>LbxGetWinAttrAndGeom</entry>
2769ea1d6981Smrg    </row>
2770ea1d6981Smrg  </thead>
2771ea1d6981Smrg  <tbody>
2772ea1d6981Smrg    <row>
2773ea1d6981Smrg      <entry role='protoargs'><emphasis>
2774ea1d6981Smrgwindow</emphasis>
2775ea1d6981Smrg: WINDOW</entry>
2776ea1d6981Smrg    </row>
2777ea1d6981Smrg    <row>
2778ea1d6981Smrg      <entry>=&gt;</entry>
2779ea1d6981Smrg    </row>
2780ea1d6981Smrg
2781ea1d6981Smrg    <row>
2782ea1d6981Smrg      <entry role='protoargs'>visual: VISUALID</entry>
2783ea1d6981Smrg    </row>
2784ea1d6981Smrg    <row>
2785ea1d6981Smrg      <entry role='protoargs'>class: {InputOutput, InputOnly}</entry>
2786ea1d6981Smrg    </row>
2787ea1d6981Smrg    <row>
2788ea1d6981Smrg      <entry role='protoargs'>bit-gravity: BITGRAVITY</entry>
2789ea1d6981Smrg    </row>
2790ea1d6981Smrg    <row>
2791ea1d6981Smrg      <entry role='protoargs'>win-gravity: WINGRAVITY</entry>
2792ea1d6981Smrg    </row>
2793ea1d6981Smrg    <row>
2794ea1d6981Smrg      <entry role='protoargs'>backing-store: {NotUseful, WhenMapped,
2795ea1d6981SmrgAlways}</entry>
2796ea1d6981Smrg    </row>
2797ea1d6981Smrg    <row>
2798ea1d6981Smrg      <entry role='protoargs'>backing-planes: CARD32</entry>
2799ea1d6981Smrg    </row>
2800ea1d6981Smrg    <row>
2801ea1d6981Smrg      <entry role='protoargs'>backing-pixel: CARD32</entry>
2802ea1d6981Smrg    </row>
2803ea1d6981Smrg    <row>
2804ea1d6981Smrg      <entry role='protoargs'>save-under: BOOL</entry>
2805ea1d6981Smrg    </row>
2806ea1d6981Smrg    <row>
2807ea1d6981Smrg      <entry role='protoargs'>colormap: COLORMAP or None</entry>
2808ea1d6981Smrg    </row>
2809ea1d6981Smrg    <row>
2810ea1d6981Smrg      <entry role='protoargs'>map-is-installed: BOOL</entry>
2811ea1d6981Smrg    </row>
2812ea1d6981Smrg    <row>
2813ea1d6981Smrg      <entry role='protoargs'>map-state: {Unmapped, Unviewable,
2814ea1d6981SmrgViewable}</entry>
2815ea1d6981Smrg    </row>
2816ea1d6981Smrg    <row>
2817ea1d6981Smrg      <entry role='protoargs'>all-event-masks, your-event-mask:
2818ea1d6981SmrgSETofEVENT</entry>
2819ea1d6981Smrg    </row>
2820ea1d6981Smrg    <row>
2821ea1d6981Smrg      <entry role='protoargs'>do-not-propagate-mask: SETofDEVICEEVENT</entry>
2822ea1d6981Smrg    </row>
2823ea1d6981Smrg    <row>
2824ea1d6981Smrg      <entry role='protoargs'>override-redirect: BOOL</entry>
2825ea1d6981Smrg    </row>
2826ea1d6981Smrg    <row>
2827ea1d6981Smrg      <entry role='protoargs'>root: WINDOW</entry>
2828ea1d6981Smrg    </row>
2829ea1d6981Smrg    <row>
2830ea1d6981Smrg      <entry role='protoargs'>depth: CARD8</entry>
2831ea1d6981Smrg    </row>
2832ea1d6981Smrg    <row>
2833ea1d6981Smrg      <entry role='protoargs'>x, y: INT16</entry>
2834ea1d6981Smrg    </row>
2835ea1d6981Smrg    <row>
2836ea1d6981Smrg      <entry role='protoargs'>width, height, border-width: CARD16</entry>
2837ea1d6981Smrg    </row>
2838ea1d6981Smrg
2839ea1d6981Smrg    <row>
2840ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
2841ea1d6981SmrgWindow</emphasis>
2842ea1d6981Smrg</entry>
2843ea1d6981Smrg    </row>
2844ea1d6981Smrg  </tbody>
2845ea1d6981Smrg  </tgroup>
2846ea1d6981Smrg</informaltable>
2847ea1d6981Smrg
2848ea1d6981Smrg<para>
2849ea1d6981Smrg<emphasis>
2850ea1d6981SmrgGetWindowAttributes</emphasis>
2851ea1d6981Smrg and <emphasis>
2852ea1d6981SmrgGetGeometry</emphasis>
2853ea1d6981Smrg are frequently used together in the X protocol. <emphasis>
2854ea1d6981SmrgLbxGetWinAttrAndGeom</emphasis>
2855ea1d6981Smrg allows the proxy to request the same information in one round trip.
2856ea1d6981Smrg</para>
2857ea1d6981Smrg
2858ea1d6981Smrg
2859ea1d6981Smrg<para>
2860ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#41440">See
2861ea1d6981SmrgLbxGetWinAttrAndGeom</ulink>.
2862ea1d6981Smrg</para>
2863ea1d6981Smrg
2864ea1d6981Smrg
2865ea1d6981Smrg
2866ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
2867ea1d6981Smrg  <?dbfo keep-together="always" ?>
2868ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
2869ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
2870ea1d6981Smrg  <thead>
2871ea1d6981Smrg    <row>
2872ea1d6981Smrg      <entry role='protoname'>LbxQueryFont</entry>
2873ea1d6981Smrg    </row>
2874ea1d6981Smrg  </thead>
2875ea1d6981Smrg  <tbody>
2876ea1d6981Smrg    <row>
2877ea1d6981Smrg      <entry role='protoargs'><emphasis>
2878ea1d6981Smrgfont</emphasis>
2879ea1d6981Smrg: FONTABLE</entry>
2880ea1d6981Smrg    </row>
2881ea1d6981Smrg    <row>
2882ea1d6981Smrg      <entry>=&gt;</entry>
2883ea1d6981Smrg    </row>
2884ea1d6981Smrg    <row>
2885ea1d6981Smrg      <entry role='protoargs'>compression: BOOL</entry>
2886ea1d6981Smrg    </row>
2887ea1d6981Smrg    <row>
2888ea1d6981Smrg      <entry role='protoargs'>tag: CARD32</entry>
2889ea1d6981Smrg    </row>
2890ea1d6981Smrg    <row>
2891ea1d6981Smrg      <entry role='protoargs'>font-info: FONTINFO                  /* optional
2892ea1d6981Smrg*/</entry>
2893ea1d6981Smrg    </row>
2894ea1d6981Smrg    <row>
2895ea1d6981Smrg      <entry role='protoargs'>char-infos: LISTofCHARINFO or LISTofLBXCHARINFO
2896ea1d6981Smrg               /* optional */</entry>
2897ea1d6981Smrg    </row>
2898ea1d6981Smrg    <row>
2899ea1d6981Smrg      <entry role='protoargs'>where:</entry>
2900ea1d6981Smrg    </row>
2901ea1d6981Smrg    <row>
2902ea1d6981Smrg      <entry role='protoargs'>LBXCHARINFO:       [left-side-bearing:
2903ea1d6981SmrgINT6</entry>
2904ea1d6981Smrg    </row>
2905ea1d6981Smrg    <row>
2906ea1d6981Smrg      <entry role='protoargs'>      right-side-bearing: INT7</entry>
2907ea1d6981Smrg    </row>
2908ea1d6981Smrg    <row>
2909ea1d6981Smrg      <entry role='protoargs'>      character-width: INT6</entry>
2910ea1d6981Smrg    </row>
2911ea1d6981Smrg    <row>
2912ea1d6981Smrg      <entry role='protoargs'>      ascent: INT6</entry>
2913ea1d6981Smrg    </row>
2914ea1d6981Smrg    <row>
2915ea1d6981Smrg      <entry role='protoargs'>      descent: INT7]</entry>
2916ea1d6981Smrg    </row>
2917ea1d6981Smrg
2918ea1d6981Smrg    <row>
2919ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
2920ea1d6981SmrgFont,Alloc</emphasis>
2921ea1d6981Smrg      </entry>
2922ea1d6981Smrg    </row>
2923ea1d6981Smrg  </tbody>
2924ea1d6981Smrg  </tgroup>
2925ea1d6981Smrg</informaltable>
2926ea1d6981Smrg
2927ea1d6981Smrg<para>
2928ea1d6981SmrgThis request is used to replace the core <emphasis>
2929ea1d6981SmrgQueryFont</emphasis>
2930ea1d6981Smrg request and has identical semantics.
2931ea1d6981Smrg</para>
2932ea1d6981Smrg
2933ea1d6981Smrg
2934ea1d6981Smrg<para>
2935ea1d6981SmrgSee <ulink url="lbx.htm#26534">See Tag Substitution in Requests</ulink> for a
2936ea1d6981Smrgdescription of the <emphasis>
2937ea1d6981Smrgtag</emphasis>
2938ea1d6981Smrg field and optional fields.
2939ea1d6981Smrg</para>
2940ea1d6981Smrg
2941ea1d6981Smrg
2942ea1d6981Smrg<para>
2943ea1d6981SmrgThe <emphasis>
2944ea1d6981Smrgcompression</emphasis>
2945ea1d6981Smrg field is True if the <emphasis>
2946ea1d6981Smrgchar-infos</emphasis>
2947ea1d6981Smrg field is represented using LBXCHARINFO.
2948ea1d6981Smrg</para>
2949ea1d6981Smrg
2950ea1d6981Smrg
2951ea1d6981Smrg<para>
2952ea1d6981SmrgThe per-character information will be encoded in an LBXCHARINFO when, for every
2953ea1d6981Smrgcharacter, the character-width, left-side-bearing, and ascent can each be
2954ea1d6981Smrgrepresented in not more than 6 bits, and the right-side-bearing and descent can
2955ea1d6981Smrgeach be represented in not more than 7 bits, and the attributes field is
2956ea1d6981Smrgidentical the attributes field of the max_bounds of the <emphasis>
2957ea1d6981Smrgfont_info</emphasis>
2958ea1d6981Smrg field of the font.
2959ea1d6981Smrg</para>
2960ea1d6981Smrg
2961ea1d6981Smrg
2962ea1d6981Smrg<para>
2963ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#24597">See
2964ea1d6981SmrgLbxQueryFont</ulink>.
2965ea1d6981Smrg</para>
2966ea1d6981Smrg
2967ea1d6981Smrg
2968ea1d6981Smrg
2969ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
2970ea1d6981Smrg  <?dbfo keep-together="always" ?>
2971ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
2972ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
2973ea1d6981Smrg  <thead>
2974ea1d6981Smrg    <row>
2975ea1d6981Smrg      <entry role='protoname'>LbxChangeProperty</entry>
2976ea1d6981Smrg    </row>
2977ea1d6981Smrg  </thead>
2978ea1d6981Smrg  <tbody>
2979ea1d6981Smrg    <row>
2980ea1d6981Smrg      <entry role='protoargs'><emphasis>
2981ea1d6981Smrgwindow</emphasis>
2982ea1d6981Smrg: WINDOW</entry>
2983ea1d6981Smrg    </row>
2984ea1d6981Smrg    <row>
2985ea1d6981Smrg      <entry role='protoargs'><emphasis>
2986ea1d6981Smrgproperty</emphasis>
2987ea1d6981Smrg: ATOM</entry>
2988ea1d6981Smrg    </row>
2989ea1d6981Smrg    <row>
2990ea1d6981Smrg      <entry role='protoargs'><emphasis>
2991ea1d6981Smrgtype</emphasis>
2992ea1d6981Smrg: ATOM</entry>
2993ea1d6981Smrg    </row>
2994ea1d6981Smrg    <row>
2995ea1d6981Smrg      <entry role='protoargs'><emphasis>
2996ea1d6981Smrgformat</emphasis>
2997ea1d6981Smrg: {0,8,16,32}</entry>
2998ea1d6981Smrg    </row>
2999ea1d6981Smrg    <row>
3000ea1d6981Smrg      <entry role='protoargs'><emphasis>
3001ea1d6981Smrgmode</emphasis>
3002ea1d6981Smrg: {Replace, Prepend, Append}</entry>
3003ea1d6981Smrg    </row>
3004ea1d6981Smrg    <row>
3005ea1d6981Smrg      <entry role='protoargs'><emphasis>
3006ea1d6981SmrgnUnits</emphasis>
3007ea1d6981Smrg: CARD32</entry>
3008ea1d6981Smrg    </row>
3009ea1d6981Smrg    <row>
3010ea1d6981Smrg      <entry>=&gt;</entry>
3011ea1d6981Smrg    </row>
3012ea1d6981Smrg    <row>
3013ea1d6981Smrg      <entry role='protoargs'>tag: CARD32</entry>
3014ea1d6981Smrg    </row>
3015ea1d6981Smrg  </tbody>
3016ea1d6981Smrg  </tgroup>
3017ea1d6981Smrg</informaltable>
3018ea1d6981Smrg
3019ea1d6981Smrg<para>
3020ea1d6981SmrgThis request is sent to the server when the client sends an X <emphasis>
3021ea1d6981SmrgChangeProperty </emphasis>
3022ea1d6981Smrgrequest through the proxy. The size of the data is sent with this request, but
3023ea1d6981Smrgnot the property data itself. The server reply contains a tag identifier for
3024ea1d6981Smrgthe data, which is stored in the proxy. The proxy must not discard this data
3025ea1d6981Smrgbefore it is sent to the server, or invalidated by the server. This means that
3026ea1d6981Smrgbefore issuing an <emphasis>
3027ea1d6981SmrgLbxStopProxy</emphasis>
3028ea1d6981Smrg request, or exiting, the proxy must send Lbx<emphasis>
3029ea1d6981SmrgTagData</emphasis>
3030ea1d6981Smrg requests for these items. If the server loses the connection before the
3031ea1d6981Smrginformation is sent back, the server should revert the property value to its
3032ea1d6981Smrglast known value, if possible.
3033ea1d6981Smrg</para>
3034ea1d6981Smrg
3035ea1d6981Smrg
3036ea1d6981Smrg<para>
3037ea1d6981SmrgIf the <emphasis>
3038ea1d6981Smrgmode</emphasis>
3039ea1d6981Smrg field is <emphasis>
3040ea1d6981SmrgPrepend</emphasis>
3041ea1d6981Smrg or <emphasis>
3042ea1d6981SmrgAppend</emphasis>
3043ea1d6981Smrg, the tag refers only to the prepended or appended data.
3044ea1d6981Smrg</para>
3045ea1d6981Smrg
3046ea1d6981Smrg
3047ea1d6981Smrg<para>
3048ea1d6981SmrgIf the tag in the reply is zero, then the change was ignored by the server, as
3049ea1d6981Smrgdefined in the security extension. The proxy should dump the associated data,
3050ea1d6981Smrgsince the server will never ask for it.
3051ea1d6981Smrg</para>
3052ea1d6981Smrg
3053ea1d6981Smrg
3054ea1d6981Smrg<para>
3055ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#18013">See
3056ea1d6981SmrgLbxChangeProperty</ulink>.
3057ea1d6981Smrg</para>
3058ea1d6981Smrg
3059ea1d6981Smrg
3060ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3061ea1d6981Smrg  <?dbfo keep-together="always" ?>
3062ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3063ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3064ea1d6981Smrg  <thead>
3065ea1d6981Smrg    <row>
3066ea1d6981Smrg      <entry role='protoname'>LbxGetProperty</entry>
3067ea1d6981Smrg    </row>
3068ea1d6981Smrg  </thead>
3069ea1d6981Smrg  <tbody>
3070ea1d6981Smrg    <row>
3071ea1d6981Smrg      <entry role='protoargs'><emphasis>
3072ea1d6981Smrgwindow</emphasis>
3073ea1d6981Smrg: WINDOW</entry>
3074ea1d6981Smrg    </row>
3075ea1d6981Smrg    <row>
3076ea1d6981Smrg      <entry role='protoargs'><emphasis>
3077ea1d6981Smrgproperty</emphasis>
3078ea1d6981Smrg: ATOM</entry>
3079ea1d6981Smrg    </row>
3080ea1d6981Smrg    <row>
3081ea1d6981Smrg      <entry role='protoargs'><emphasis>
3082ea1d6981Smrgtype</emphasis>
3083ea1d6981Smrg: ATOM or AnyPropertyType</entry>
3084ea1d6981Smrg    </row>
3085ea1d6981Smrg    <row>
3086ea1d6981Smrg      <entry role='protoargs'><emphasis>
3087ea1d6981Smrglong-offset</emphasis>
3088ea1d6981Smrg: CARD32</entry>
3089ea1d6981Smrg    </row>
3090ea1d6981Smrg    <row>
3091ea1d6981Smrg      <entry role='protoargs'><emphasis>
3092ea1d6981Smrglong-length</emphasis>
3093ea1d6981Smrg: CARD32</entry>
3094ea1d6981Smrg    </row>
3095ea1d6981Smrg    <row>
3096ea1d6981Smrg      <entry role='protoargs'><emphasis>
3097ea1d6981Smrgdelete</emphasis>
3098ea1d6981Smrg: CARD8</entry>
3099ea1d6981Smrg    </row>
3100ea1d6981Smrg    <row>
3101ea1d6981Smrg      <entry>=&gt;</entry>
3102ea1d6981Smrg    </row>
3103ea1d6981Smrg
3104ea1d6981Smrg    <row>
3105ea1d6981Smrg      <entry role='protoargs'>type: ATOM or None</entry>
3106ea1d6981Smrg    </row>
3107ea1d6981Smrg    <row>
3108ea1d6981Smrg      <entry role='protoargs'>format: {0, 8, 16, 32}</entry>
3109ea1d6981Smrg    </row>
3110ea1d6981Smrg    <row>
3111ea1d6981Smrg      <entry role='protoargs'>bytes-after: CARD32</entry>
3112ea1d6981Smrg    </row>
3113ea1d6981Smrg    <row>
3114ea1d6981Smrg      <entry role='protoargs'>nItems: CARD32</entry>
3115ea1d6981Smrg    </row>
3116ea1d6981Smrg    <row>
3117ea1d6981Smrg      <entry role='protoargs'>tag: CARD32</entry>
3118ea1d6981Smrg    </row>
3119ea1d6981Smrg    <row>
3120ea1d6981Smrg      <entry role='protoargs'>value: LISTofINT8 or LISTofINT16 or
3121ea1d6981SmrgLISTofINT32</entry>
3122ea1d6981Smrg    </row>
3123ea1d6981Smrg  </tbody>
3124ea1d6981Smrg  </tgroup>
3125ea1d6981Smrg</informaltable>
3126ea1d6981Smrg
3127ea1d6981Smrg<para>
3128ea1d6981SmrgThis request may be used by the proxy as a substitution for a core <emphasis>
3129ea1d6981SmrgGetProperty</emphasis>
3130ea1d6981Smrg request. It allows tags to be used for property data that is unlikely to
3131ea1d6981Smrgchange often in value, but is likely to be fetched by multiple clients.
3132ea1d6981Smrg</para>
3133ea1d6981Smrg
3134ea1d6981Smrg
3135ea1d6981Smrg<para>
3136ea1d6981SmrgThe <emphasis>
3137ea1d6981SmrgLbxGetProperty</emphasis>
3138ea1d6981Smrg request has the same arguments as the core <emphasis>
3139ea1d6981SmrgGetProperty</emphasis>
3140ea1d6981Smrg request. The reply for <emphasis>
3141ea1d6981SmrgLbxGetProperty</emphasis>
3142ea1d6981Smrg has all of the fields from the core <emphasis>
3143ea1d6981SmrgGetProperty</emphasis>
3144ea1d6981Smrg reply, but has the additional fields of <emphasis>
3145ea1d6981SmrgnItems</emphasis>
3146ea1d6981Smrg and <emphasis>
3147ea1d6981Smrgtag</emphasis>
3148ea1d6981Smrg.
3149ea1d6981Smrg</para>
3150ea1d6981Smrg
3151ea1d6981Smrg
3152ea1d6981Smrg<para>
3153ea1d6981SmrgIn order to utilize tags in <emphasis>
3154ea1d6981SmrgLbxGetProperty</emphasis>
3155ea1d6981Smrg for a specific property, the server must first send the complete property data
3156ea1d6981Smrgto the proxy and associate this data with a tag. More precisely, the server
3157ea1d6981Smrgsends an <emphasis>
3158ea1d6981SmrgLbxGetProperty</emphasis>
3159ea1d6981Smrg reply with a new <emphasis>
3160ea1d6981Smrgtag</emphasis>
3161ea1d6981Smrg, <emphasis>
3162ea1d6981SmrgnItems</emphasis>
3163ea1d6981Smrg set to the number of items in the property, the size of the property data in
3164ea1d6981Smrgthe reply length field, and the complete property data in value. The proxy
3165ea1d6981Smrgstores the property data in its tag cache and associates it with the specified
3166ea1d6981Smrgtag.
3167ea1d6981Smrg</para>
3168ea1d6981Smrg
3169ea1d6981Smrg
3170ea1d6981Smrg<para>
3171ea1d6981SmrgIn response to future <emphasis>
3172ea1d6981SmrgLbxGetProperty</emphasis>
3173ea1d6981Smrg requests for the same property, if the server thinks that the proxy has the
3174ea1d6981Smrgactual property data in its tag cache, it may choose to send an <emphasis>
3175ea1d6981SmrgLbxGetProperty</emphasis>
3176ea1d6981Smrg reply without the actual property data. In this case, the reply would include
3177ea1d6981Smrga non-zero <emphasis>
3178ea1d6981Smrgtag</emphasis>
3179ea1d6981Smrg, a zero reply length, and no data for value.
3180ea1d6981Smrg</para>
3181ea1d6981Smrg
3182ea1d6981Smrg
3183ea1d6981Smrg<para>
3184ea1d6981SmrgIf the server chooses not to generate a tagged reply to <emphasis>
3185ea1d6981SmrgLbxGetProperty</emphasis>
3186ea1d6981Smrg, or for some reason is unable to do so, it would send a reply with a <emphasis>
3187ea1d6981Smrgtag</emphasis>
3188ea1d6981Smrg of zero, the size of the property data in the reply length field, and the
3189ea1d6981Smrgcomplete property data in value.
3190ea1d6981Smrg</para>
3191ea1d6981Smrg
3192ea1d6981Smrg
3193ea1d6981Smrg<para>
3194ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#13863">See
3195ea1d6981SmrgLbxGetProperty</ulink>.
3196ea1d6981Smrg</para>
3197ea1d6981Smrg
3198ea1d6981Smrg
3199ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3200ea1d6981Smrg  <?dbfo keep-together="always" ?>
3201ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3202ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3203ea1d6981Smrg  <thead>
3204ea1d6981Smrg    <row>
3205ea1d6981Smrg      <entry role='protoname'>LbxPolyPoint</entry>
3206ea1d6981Smrg    </row>
3207ea1d6981Smrg  </thead>
3208ea1d6981Smrg  <tbody>
3209ea1d6981Smrg    <row>
3210ea1d6981Smrg      <entry role='protoargs'><emphasis>
3211ea1d6981Smrggc-and-drawable: </emphasis>
3212ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3213ea1d6981Smrg    </row>
3214ea1d6981Smrg    <row>
3215ea1d6981Smrg      <entry role='protoargs'><emphasis>
3216ea1d6981Smrgpoints</emphasis>
3217ea1d6981Smrg: LISTofLBXPOINT</entry>
3218ea1d6981Smrg    </row>
3219ea1d6981Smrg
3220ea1d6981Smrg    <row>
3221ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
3222ea1d6981SmrgAlloc</emphasis>
3223ea1d6981Smrg and those given for the corresponding X request.</entry>
3224ea1d6981Smrg    </row>
3225ea1d6981Smrg  </tbody>
3226ea1d6981Smrg  </tgroup>
3227ea1d6981Smrg</informaltable>
3228ea1d6981Smrg
3229ea1d6981Smrg<para>
3230ea1d6981SmrgThis request replaces the <emphasis>
3231ea1d6981SmrgPolyPoint</emphasis>
3232ea1d6981Smrg request. Not all <emphasis>
3233ea1d6981SmrgPolyPoint</emphasis>
3234ea1d6981Smrg requests can be represented as <emphasis>
3235ea1d6981SmrgLbxPolyPoint</emphasis>
3236ea1d6981Smrg requests.
3237ea1d6981Smrg</para>
3238ea1d6981Smrg
3239ea1d6981Smrg
3240ea1d6981Smrg<para>
3241ea1d6981SmrgThe proxy will convert the representation of the points to be relative to the
3242ea1d6981Smrgprevious point, as described by previous coordinate mode in the X protocol.
3243ea1d6981Smrg</para>
3244ea1d6981Smrg
3245ea1d6981Smrg
3246ea1d6981Smrg<para>
3247ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#29719">See
3248ea1d6981SmrgLbxPolyPoint</ulink>.
3249ea1d6981Smrg</para>
3250ea1d6981Smrg
3251ea1d6981Smrg
3252ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3253ea1d6981Smrg  <?dbfo keep-together="always" ?>
3254ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3255ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3256ea1d6981Smrg  <thead>
3257ea1d6981Smrg    <row>
3258ea1d6981Smrg      <entry role='protoname'>LbxPolyLine</entry>
3259ea1d6981Smrg    </row>
3260ea1d6981Smrg  </thead>
3261ea1d6981Smrg  <tbody>
3262ea1d6981Smrg    <row>
3263ea1d6981Smrg      <entry role='protoargs'><emphasis>
3264ea1d6981Smrggc-and-drawable: </emphasis>
3265ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3266ea1d6981Smrg    </row>
3267ea1d6981Smrg    <row>
3268ea1d6981Smrg      <entry role='protoargs'><emphasis>
3269ea1d6981Smrgpoints</emphasis>
3270ea1d6981Smrg: LISTofLBXPOINT</entry>
3271ea1d6981Smrg    </row>
3272ea1d6981Smrg
3273ea1d6981Smrg    <row>
3274ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
3275ea1d6981SmrgAlloc</emphasis>
3276ea1d6981Smrg and those given for the corresponding X request.</entry>
3277ea1d6981Smrg    </row>
3278ea1d6981Smrg  </tbody>
3279ea1d6981Smrg  </tgroup>
3280ea1d6981Smrg</informaltable>
3281ea1d6981Smrg
3282ea1d6981Smrg<para>
3283ea1d6981SmrgThis request replaces the <emphasis>
3284ea1d6981SmrgPolyLine</emphasis>
3285ea1d6981Smrg request. Not all <emphasis>
3286ea1d6981SmrgPolyLine</emphasis>
3287ea1d6981Smrg requests can be represented as <emphasis>
3288ea1d6981SmrgLbxPolyline</emphasis>
3289ea1d6981Smrg requests.
3290ea1d6981Smrg</para>
3291ea1d6981Smrg
3292ea1d6981Smrg
3293ea1d6981Smrg<para>
3294ea1d6981SmrgThe proxy will convert the representation of the points to be relative to the
3295ea1d6981Smrgprevious point, as described by previous coordinate mode in the X protocol.
3296ea1d6981Smrg</para>
3297ea1d6981Smrg
3298ea1d6981Smrg
3299ea1d6981Smrg<para>
3300ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#31086">See The
3301ea1d6981Smrgdescription of this request is on page 21.</ulink>.
3302ea1d6981Smrg</para>
3303ea1d6981Smrg
3304ea1d6981Smrg
3305ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3306ea1d6981Smrg  <?dbfo keep-together="always" ?>
3307ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3308ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3309ea1d6981Smrg  <thead>
3310ea1d6981Smrg    <row>
3311ea1d6981Smrg      <entry role='protoname'>LbxPolySegment</entry>
3312ea1d6981Smrg    </row>
3313ea1d6981Smrg  </thead>
3314ea1d6981Smrg  <tbody>
3315ea1d6981Smrg    <row>
3316ea1d6981Smrg      <entry role='protoargs'><emphasis>
3317ea1d6981Smrggc-and-drawable: </emphasis>
3318ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3319ea1d6981Smrg    </row>
3320ea1d6981Smrg    <row>
3321ea1d6981Smrg      <entry role='protoargs'><emphasis>
3322ea1d6981Smrgsegments</emphasis>
3323ea1d6981Smrg: LISTofLBXSEGMENT</entry>
3324ea1d6981Smrg    </row>
3325ea1d6981Smrg    <row>
3326ea1d6981Smrg      <entry role='protoargs'>&nbsp;</entry>
3327ea1d6981Smrg    </row>
3328ea1d6981Smrg    <row>
3329ea1d6981Smrg      <entry role='protoargs'>where:</entry>
3330ea1d6981Smrg    </row>
3331ea1d6981Smrg    <row>
3332ea1d6981Smrg      <entry role='protoargs'>LBXSEGEMENT; [x1, y1, x2, y2: LBXINT16]</entry>
3333ea1d6981Smrg    </row>
3334ea1d6981Smrg
3335ea1d6981Smrg    <row>
3336ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
3337ea1d6981SmrgAlloc</emphasis>
3338ea1d6981Smrg and those given for the corresponding X request.</entry>
3339ea1d6981Smrg    </row>
3340ea1d6981Smrg  </tbody>
3341ea1d6981Smrg  </tgroup>
3342ea1d6981Smrg</informaltable>
3343ea1d6981Smrg
3344ea1d6981Smrg<para>
3345ea1d6981SmrgThis request replaces the <emphasis>
3346ea1d6981SmrgPolySegment</emphasis>
3347ea1d6981Smrg request. Not all <emphasis>
3348ea1d6981SmrgPolySegment</emphasis>
3349ea1d6981Smrg requests can be represented as <emphasis>
3350ea1d6981SmrgLbxPolySegment</emphasis>
3351ea1d6981Smrg requests.
3352ea1d6981Smrg</para>
3353ea1d6981Smrg
3354ea1d6981Smrg
3355ea1d6981Smrg<para>
3356ea1d6981SmrgFor segments other than the first segment of the request, [x1, y1] is
3357ea1d6981Smrgrelative to [x1, y1] of the previous segment. For all segments, [x2, y2] is
3358ea1d6981Smrgrelative to that segment’s [x1, y1].
3359ea1d6981Smrg</para>
3360ea1d6981Smrg
3361ea1d6981Smrg
3362ea1d6981Smrg<para>
3363ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#27528">See
3364ea1d6981SmrgLbxPolySegment</ulink>.
3365ea1d6981Smrg</para>
3366ea1d6981Smrg
3367ea1d6981Smrg
3368ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3369ea1d6981Smrg  <?dbfo keep-together="always" ?>
3370ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3371ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3372ea1d6981Smrg  <thead>
3373ea1d6981Smrg    <row>
3374ea1d6981Smrg      <entry role='protoname'>LbxPolyRectangle</entry>
3375ea1d6981Smrg    </row>
3376ea1d6981Smrg  </thead>
3377ea1d6981Smrg  <tbody>
3378ea1d6981Smrg    <row>
3379ea1d6981Smrg      <entry role='protoargs'><emphasis>
3380ea1d6981Smrggc-and-drawable: </emphasis>
3381ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3382ea1d6981Smrg    </row>
3383ea1d6981Smrg    <row>
3384ea1d6981Smrg      <entry role='protoargs'><emphasis>
3385ea1d6981Smrgrectangles</emphasis>
3386ea1d6981Smrg: LISTofLBXRECTANGLE</entry>
3387ea1d6981Smrg    </row>
3388ea1d6981Smrg
3389ea1d6981Smrg    <row>
3390ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
3391ea1d6981SmrgAlloc</emphasis>
3392ea1d6981Smrg and those given for the corresponding X request.</entry>
3393ea1d6981Smrg    </row>
3394ea1d6981Smrg  </tbody>
3395ea1d6981Smrg  </tgroup>
3396ea1d6981Smrg</informaltable>
3397ea1d6981Smrg
3398ea1d6981Smrg<para>
3399ea1d6981SmrgThis request replaces the <emphasis>
3400ea1d6981SmrgPolyRectangle</emphasis>
3401ea1d6981Smrg request. Not all <emphasis>
3402ea1d6981SmrgPolyRectangle</emphasis>
3403ea1d6981Smrg requests can be represented as <emphasis>
3404ea1d6981SmrgLbxPolyRectangle</emphasis>
3405ea1d6981Smrg requests.
3406ea1d6981Smrg</para>
3407ea1d6981Smrg
3408ea1d6981Smrg
3409ea1d6981Smrg<para>
3410ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#33628">See The
3411ea1d6981Smrgdescription of this request is on page 22.</ulink>.
3412ea1d6981Smrg</para>
3413ea1d6981Smrg
3414ea1d6981Smrg
3415ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3416ea1d6981Smrg  <?dbfo keep-together="always" ?>
3417ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3418ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3419ea1d6981Smrg  <thead>
3420ea1d6981Smrg    <row>
3421ea1d6981Smrg      <entry role='protoname'>LbxPolyArc</entry>
3422ea1d6981Smrg    </row>
3423ea1d6981Smrg  </thead>
3424ea1d6981Smrg  <tbody>
3425ea1d6981Smrg    <row>
3426ea1d6981Smrg      <entry role='protoargs'><emphasis>
3427ea1d6981Smrggc-and-drawable: </emphasis>
3428ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3429ea1d6981Smrg    </row>
3430ea1d6981Smrg    <row>
3431ea1d6981Smrg      <entry role='protoargs'><emphasis>
3432ea1d6981Smrgarcs</emphasis>
3433ea1d6981Smrg: LISTofLBXARC</entry>
3434ea1d6981Smrg    </row>
3435ea1d6981Smrg
3436ea1d6981Smrg    <row>
3437ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
3438ea1d6981SmrgAlloc</emphasis>
3439ea1d6981Smrg and those given for the corresponding X request.</entry>
3440ea1d6981Smrg    </row>
3441ea1d6981Smrg  </tbody>
3442ea1d6981Smrg  </tgroup>
3443ea1d6981Smrg</informaltable>
3444ea1d6981Smrg
3445ea1d6981Smrg<para>
3446ea1d6981SmrgThis request replaces the <emphasis>
3447ea1d6981SmrgPolyArc</emphasis>
3448ea1d6981Smrg request. Not all <emphasis>
3449ea1d6981SmrgPolyArc</emphasis>
3450ea1d6981Smrg requests can be represented as <emphasis>
3451ea1d6981SmrgLbxPolyArc</emphasis>
3452ea1d6981Smrg requests.
3453ea1d6981Smrg</para>
3454ea1d6981Smrg
3455ea1d6981Smrg
3456ea1d6981Smrg<para>
3457ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#25855">See
3458ea1d6981SmrgLbxPolyArc</ulink>.
3459ea1d6981Smrg</para>
3460ea1d6981Smrg
3461ea1d6981Smrg
3462ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3463ea1d6981Smrg  <?dbfo keep-together="always" ?>
3464ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3465ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3466ea1d6981Smrg  <thead>
3467ea1d6981Smrg    <row>
3468ea1d6981Smrg      <entry role='protoname'>LbxPolyFillRectangle</entry>
3469ea1d6981Smrg    </row>
3470ea1d6981Smrg  </thead>
3471ea1d6981Smrg  <tbody>
3472ea1d6981Smrg    <row>
3473ea1d6981Smrg      <entry role='protoargs'><emphasis>
3474ea1d6981Smrggc-and-drawable: </emphasis>
3475ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3476ea1d6981Smrg    </row>
3477ea1d6981Smrg    <row>
3478ea1d6981Smrg      <entry role='protoargs'><emphasis>
3479ea1d6981Smrgrectangles</emphasis>
3480ea1d6981Smrg: LISTofLBXRECTANGLE</entry>
3481ea1d6981Smrg    </row>
3482ea1d6981Smrg
3483ea1d6981Smrg    <row>
3484ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
3485ea1d6981SmrgAlloc</emphasis>
3486ea1d6981Smrg and those given for the corresponding X request.</entry>
3487ea1d6981Smrg    </row>
3488ea1d6981Smrg  </tbody>
3489ea1d6981Smrg  </tgroup>
3490ea1d6981Smrg</informaltable>
3491ea1d6981Smrg
3492ea1d6981Smrg<para>
3493ea1d6981SmrgThis request replaces the <emphasis>
3494ea1d6981SmrgPolyFillRectangle</emphasis>
3495ea1d6981Smrg request. Not all <emphasis>
3496ea1d6981SmrgPolyFillRectangle</emphasis>
3497ea1d6981Smrg requests can be represented as <emphasis>
3498ea1d6981SmrgLbxPolyFillRectangle</emphasis>
3499ea1d6981Smrg requests.
3500ea1d6981Smrg</para>
3501ea1d6981Smrg
3502ea1d6981Smrg
3503ea1d6981Smrg<para>
3504ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#26399">See
3505ea1d6981SmrgLbxPolyFillRectangle</ulink>.
3506ea1d6981Smrg</para>
3507ea1d6981Smrg
3508ea1d6981Smrg
3509ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3510ea1d6981Smrg  <?dbfo keep-together="always" ?>
3511ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3512ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3513ea1d6981Smrg  <thead>
3514ea1d6981Smrg    <row>
3515ea1d6981Smrg      <entry role='protoname'>LbxPolyFillArc</entry>
3516ea1d6981Smrg    </row>
3517ea1d6981Smrg  </thead>
3518ea1d6981Smrg  <tbody>
3519ea1d6981Smrg    <row>
3520ea1d6981Smrg      <entry role='protoargs'><emphasis>
3521ea1d6981Smrggc-and-drawable: </emphasis>
3522ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3523ea1d6981Smrg    </row>
3524ea1d6981Smrg    <row>
3525ea1d6981Smrg      <entry role='protoargs'><emphasis>
3526ea1d6981Smrgarcs</emphasis>
3527ea1d6981Smrg: LISTofLBXARC</entry>
3528ea1d6981Smrg    </row>
3529ea1d6981Smrg
3530ea1d6981Smrg    <row>
3531ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
3532ea1d6981SmrgAlloc</emphasis>
3533ea1d6981Smrg and those given for the corresponding X request.</entry>
3534ea1d6981Smrg    </row>
3535ea1d6981Smrg  </tbody>
3536ea1d6981Smrg  </tgroup>
3537ea1d6981Smrg</informaltable>
3538ea1d6981Smrg
3539ea1d6981Smrg<para>
3540ea1d6981SmrgThis request replaces the <emphasis>
3541ea1d6981SmrgPolyFillArc</emphasis>
3542ea1d6981Smrg request. Not all <emphasis>
3543ea1d6981SmrgPolyFillArc</emphasis>
3544ea1d6981Smrg requests can be represented as <emphasis>
3545ea1d6981SmrgLbxPolyFillArc</emphasis>
3546ea1d6981Smrg requests.
3547ea1d6981Smrg</para>
3548ea1d6981Smrg
3549ea1d6981Smrg
3550ea1d6981Smrg<para>
3551ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#19081">See The
3552ea1d6981Smrgdescription of this request is on page 22.</ulink>.
3553ea1d6981Smrg</para>
3554ea1d6981Smrg
3555ea1d6981Smrg
3556ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3557ea1d6981Smrg  <?dbfo keep-together="always" ?>
3558ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3559ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3560ea1d6981Smrg  <thead>
3561ea1d6981Smrg    <row>
3562ea1d6981Smrg      <entry role='protoname'>LbxFillPoly</entry>
3563ea1d6981Smrg    </row>
3564ea1d6981Smrg  </thead>
3565ea1d6981Smrg  <tbody>
3566ea1d6981Smrg    <row>
3567ea1d6981Smrg      <entry role='protoargs'><emphasis>
3568ea1d6981Smrggc-and-drawable: </emphasis>
3569ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3570ea1d6981Smrg    </row>
3571ea1d6981Smrg    <row>
3572ea1d6981Smrg      <entry role='protoargs'><emphasis>
3573ea1d6981Smrgshape</emphasis>
3574ea1d6981Smrg: BYTE</entry>
3575ea1d6981Smrg    </row>
3576ea1d6981Smrg    <row>
3577ea1d6981Smrg      <entry role='protoargs'><emphasis>
3578ea1d6981Smrgpoints</emphasis>
3579ea1d6981Smrg: LISTofLBXPOINT</entry>
3580ea1d6981Smrg    </row>
3581ea1d6981Smrg
3582ea1d6981Smrg    <row>
3583ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
3584ea1d6981SmrgAlloc</emphasis>
3585ea1d6981Smrg and those given for the corresponding X request.</entry>
3586ea1d6981Smrg    </row>
3587ea1d6981Smrg  </tbody>
3588ea1d6981Smrg  </tgroup>
3589ea1d6981Smrg</informaltable>
3590ea1d6981Smrg
3591ea1d6981Smrg<para>
3592ea1d6981SmrgThis request replaces the <emphasis>
3593ea1d6981SmrgFillPoly</emphasis>
3594ea1d6981Smrg request. Not all <emphasis>
3595ea1d6981SmrgFillPoly</emphasis>
3596ea1d6981Smrg requests can be represented as <emphasis>
3597ea1d6981SmrgLbxFillPoly</emphasis>
3598ea1d6981Smrg requests.
3599ea1d6981Smrg</para>
3600ea1d6981Smrg
3601ea1d6981Smrg
3602ea1d6981Smrg<para>
3603ea1d6981SmrgThe proxy will convert the representation of the points to be relative to the
3604ea1d6981Smrgprevious point, as described by previous coordinate mode in the X protocol.
3605ea1d6981Smrg</para>
3606ea1d6981Smrg
3607ea1d6981Smrg
3608ea1d6981Smrg<para>
3609ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#24998">See
3610ea1d6981SmrgLbxFillPoly</ulink>.
3611ea1d6981Smrg</para>
3612ea1d6981Smrg
3613ea1d6981Smrg
3614ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3615ea1d6981Smrg  <?dbfo keep-together="always" ?>
3616ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3617ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3618ea1d6981Smrg  <thead>
3619ea1d6981Smrg    <row>
3620ea1d6981Smrg      <entry role='protoname'>LbxCopyArea</entry>
3621ea1d6981Smrg    </row>
3622ea1d6981Smrg  </thead>
3623ea1d6981Smrg  <tbody>
3624ea1d6981Smrg    <row>
3625ea1d6981Smrg      <entry role='protoargs'><emphasis>
3626ea1d6981SmrgsrcCache</emphasis>
3627ea1d6981Smrg: CARD8      /* source drawable */</entry>
3628ea1d6981Smrg    </row>
3629ea1d6981Smrg    <row>
3630ea1d6981Smrg      <entry role='protoargs'><emphasis>
3631ea1d6981Smrggc-and-drawable: </emphasis>
3632ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3633ea1d6981Smrg    </row>
3634ea1d6981Smrg    <row>
3635ea1d6981Smrg      <entry role='protoargs'><emphasis>
3636ea1d6981Smrgsrc-Drawable</emphasis>
3637ea1d6981Smrg: CARD32</entry>
3638ea1d6981Smrg    </row>
3639ea1d6981Smrg    <row>
3640ea1d6981Smrg      <entry role='protoargs'><emphasis>
3641ea1d6981Smrgsrc-x</emphasis>
3642ea1d6981Smrg: LBXPINT16</entry>
3643ea1d6981Smrg    </row>
3644ea1d6981Smrg    <row>
3645ea1d6981Smrg      <entry role='protoargs'><emphasis>
3646ea1d6981Smrgsrc-y</emphasis>
3647ea1d6981Smrg: LBXPINT16</entry>
3648ea1d6981Smrg    </row>
3649ea1d6981Smrg    <row>
3650ea1d6981Smrg      <entry role='protoargs'><emphasis>
3651ea1d6981Smrgwidth</emphasis>
3652ea1d6981Smrg: LBXCARD16</entry>
3653ea1d6981Smrg    </row>
3654ea1d6981Smrg    <row>
3655ea1d6981Smrg      <entry role='protoargs'><emphasis>
3656ea1d6981Smrgheight</emphasis>
3657ea1d6981Smrg: LBXCARD16</entry>
3658ea1d6981Smrg    </row>
3659ea1d6981Smrg    <row>
3660ea1d6981Smrg      <entry role='protoargs'><emphasis>
3661ea1d6981Smrgdst-x</emphasis>
3662ea1d6981Smrg: LBXPINT16 </entry>
3663ea1d6981Smrg    </row>
3664ea1d6981Smrg    <row>
3665ea1d6981Smrg      <entry role='protoargs'><emphasis>
3666ea1d6981Smrgdst-y</emphasis>
3667ea1d6981Smrg: LBXPINT16</entry>
3668ea1d6981Smrg    </row>
3669ea1d6981Smrg
3670ea1d6981Smrg    <row>
3671ea1d6981Smrg      <entry role='protoerror'>Errors: Those given for the corresponding X
3672ea1d6981Smrgrequest.</entry>
3673ea1d6981Smrg    </row>
3674ea1d6981Smrg  </tbody>
3675ea1d6981Smrg  </tgroup>
3676ea1d6981Smrg</informaltable>
3677ea1d6981Smrg
3678ea1d6981Smrg<para>
3679ea1d6981SmrgThis request replaces the <emphasis>
3680ea1d6981SmrgCopyArea</emphasis>
3681ea1d6981Smrg request for requests within its encoding range.
3682ea1d6981Smrg</para>
3683ea1d6981Smrg
3684ea1d6981Smrg
3685ea1d6981Smrg<para>
3686ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#10231">See
3687ea1d6981SmrgLbxCopyArea</ulink>.
3688ea1d6981Smrg</para>
3689ea1d6981Smrg
3690ea1d6981Smrg
3691ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3692ea1d6981Smrg  <?dbfo keep-together="always" ?>
3693ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3694ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3695ea1d6981Smrg  <thead>
3696ea1d6981Smrg    <row>
3697ea1d6981Smrg      <entry role='protoname'>LbxCopyPlane</entry>
3698ea1d6981Smrg    </row>
3699ea1d6981Smrg  </thead>
3700ea1d6981Smrg  <tbody>
3701ea1d6981Smrg    <row>
3702ea1d6981Smrg      <entry role='protoargs'><emphasis>
3703ea1d6981Smrgbit-plane</emphasis>
3704ea1d6981Smrg: CARD32</entry>
3705ea1d6981Smrg    </row>
3706ea1d6981Smrg    <row>
3707ea1d6981Smrg      <entry role='protoargs'><emphasis>
3708ea1d6981Smrgsrc-cache</emphasis>
3709ea1d6981Smrg: CARD8      /* cache reference for source drawable */</entry>
3710ea1d6981Smrg    </row>
3711ea1d6981Smrg    <row>
3712ea1d6981Smrg      <entry role='protoargs'><emphasis>
3713ea1d6981Smrggc-and-drawable: </emphasis>
3714ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3715ea1d6981Smrg    </row>
3716ea1d6981Smrg    <row>
3717ea1d6981Smrg      <entry role='protoargs'><emphasis>
3718ea1d6981Smrgsrc-drawable</emphasis>
3719ea1d6981Smrg: CARD32</entry>
3720ea1d6981Smrg    </row>
3721ea1d6981Smrg    <row>
3722ea1d6981Smrg      <entry role='protoargs'><emphasis>
3723ea1d6981Smrgsrc-x</emphasis>
3724ea1d6981Smrg: LBXPINT16</entry>
3725ea1d6981Smrg    </row>
3726ea1d6981Smrg    <row>
3727ea1d6981Smrg      <entry role='protoargs'><emphasis>
3728ea1d6981Smrgsrc-y</emphasis>
3729ea1d6981Smrg: LBXPINT16</entry>
3730ea1d6981Smrg    </row>
3731ea1d6981Smrg    <row>
3732ea1d6981Smrg      <entry role='protoargs'><emphasis>
3733ea1d6981Smrgwidth</emphasis>
3734ea1d6981Smrg: LBXCARD16</entry>
3735ea1d6981Smrg    </row>
3736ea1d6981Smrg    <row>
3737ea1d6981Smrg      <entry role='protoargs'><emphasis>
3738ea1d6981Smrgheight</emphasis>
3739ea1d6981Smrg: LBXCARD16</entry>
3740ea1d6981Smrg    </row>
3741ea1d6981Smrg    <row>
3742ea1d6981Smrg      <entry role='protoargs'><emphasis>
3743ea1d6981Smrgdst-x</emphasis>
3744ea1d6981Smrg: LBXPINT16</entry>
3745ea1d6981Smrg    </row>
3746ea1d6981Smrg    <row>
3747ea1d6981Smrg      <entry role='protoargs'><emphasis>
3748ea1d6981Smrgdst-y</emphasis>
3749ea1d6981Smrg: LBXPINT16</entry>
3750ea1d6981Smrg    </row>
3751ea1d6981Smrg
3752ea1d6981Smrg    <row>
3753ea1d6981Smrg      <entry role='protoerror'>Errors: Those given for the corresponding X
3754ea1d6981Smrgrequest.</entry>
3755ea1d6981Smrg    </row>
3756ea1d6981Smrg  </tbody>
3757ea1d6981Smrg  </tgroup>
3758ea1d6981Smrg</informaltable>
3759ea1d6981Smrg
3760ea1d6981Smrg<para>
3761ea1d6981SmrgThis request replaces the <emphasis>
3762ea1d6981SmrgCopyPlane</emphasis>
3763ea1d6981Smrg request for requests within its coding range.
3764ea1d6981Smrg</para>
3765ea1d6981Smrg
3766ea1d6981Smrg
3767ea1d6981Smrg<para>
3768ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#18847">See
3769ea1d6981SmrgLbxCopyPlane</ulink>.
3770ea1d6981Smrg</para>
3771ea1d6981Smrg
3772ea1d6981Smrg
3773ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3774ea1d6981Smrg  <?dbfo keep-together="always" ?>
3775ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3776ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3777ea1d6981Smrg  <thead>
3778ea1d6981Smrg    <row>
3779ea1d6981Smrg      <entry role='protoname'>LbxPolyText8</entry>
3780ea1d6981Smrg    </row>
3781ea1d6981Smrg  </thead>
3782ea1d6981Smrg  <tbody>
3783ea1d6981Smrg    <row>
3784ea1d6981Smrg      <entry role='protoargs'><emphasis>
3785ea1d6981Smrggc-and-drawable: </emphasis>
3786ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3787ea1d6981Smrg    </row>
3788ea1d6981Smrg    <row>
3789ea1d6981Smrg      <entry role='protoargs'><emphasis>
3790ea1d6981Smrgx</emphasis>
3791ea1d6981Smrg: LBXPINT16</entry>
3792ea1d6981Smrg    </row>
3793ea1d6981Smrg    <row>
3794ea1d6981Smrg      <entry role='protoargs'><emphasis>
3795ea1d6981Smrgy</emphasis>
3796ea1d6981Smrg: LBXPINT16</entry>
3797ea1d6981Smrg    </row>
3798ea1d6981Smrg    <row>
3799ea1d6981Smrg      <entry role='protoargs'><emphasis>
3800ea1d6981Smrgitems</emphasis>
3801ea1d6981Smrg: LISTofTEXTITEM8</entry>
3802ea1d6981Smrg    </row>
3803ea1d6981Smrg
3804ea1d6981Smrg    <row>
3805ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
3806ea1d6981SmrgAlloc</emphasis>
3807ea1d6981Smrg, and those given for the corresponding X request.</entry>
3808ea1d6981Smrg    </row>
3809ea1d6981Smrg  </tbody>
3810ea1d6981Smrg  </tgroup>
3811ea1d6981Smrg</informaltable>
3812ea1d6981Smrg
3813ea1d6981Smrg<para>
3814ea1d6981SmrgThis request replaces the <emphasis>
3815ea1d6981SmrgPolyText8</emphasis>
3816ea1d6981Smrg request for requests within its encoding range.
3817ea1d6981Smrg</para>
3818ea1d6981Smrg
3819ea1d6981Smrg
3820ea1d6981Smrg<para>
3821ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#39640">See The
3822ea1d6981Smrgdescription of this request is on page 23.</ulink>.
3823ea1d6981Smrg</para>
3824ea1d6981Smrg
3825ea1d6981Smrg
3826ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3827ea1d6981Smrg  <?dbfo keep-together="always" ?>
3828ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3829ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3830ea1d6981Smrg  <thead>
3831ea1d6981Smrg    <row>
3832ea1d6981Smrg      <entry role='protoname'>LbxPolyText16</entry>
3833ea1d6981Smrg    </row>
3834ea1d6981Smrg  </thead>
3835ea1d6981Smrg  <tbody>
3836ea1d6981Smrg    <row>
3837ea1d6981Smrg      <entry role='protoargs'><emphasis>
3838ea1d6981Smrggc-and-drawable: </emphasis>
3839ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3840ea1d6981Smrg    </row>
3841ea1d6981Smrg    <row>
3842ea1d6981Smrg      <entry role='protoargs'><emphasis>
3843ea1d6981Smrgx:</emphasis>
3844ea1d6981Smrg LBXPINT16</entry>
3845ea1d6981Smrg    </row>
3846ea1d6981Smrg    <row>
3847ea1d6981Smrg      <entry role='protoargs'><emphasis>
3848ea1d6981Smrgy</emphasis>
3849ea1d6981Smrg: LBXPINT16</entry>
3850ea1d6981Smrg    </row>
3851ea1d6981Smrg    <row>
3852ea1d6981Smrg      <entry role='protoargs'><emphasis>
3853ea1d6981Smrgitems</emphasis>
3854ea1d6981Smrg: LISTofTEXTITEM16</entry>
3855ea1d6981Smrg    </row>
3856ea1d6981Smrg
3857ea1d6981Smrg    <row>
3858ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
3859ea1d6981SmrgAlloc</emphasis>
3860ea1d6981Smrg, and those given for the corresponding X request.</entry>
3861ea1d6981Smrg    </row>
3862ea1d6981Smrg  </tbody>
3863ea1d6981Smrg  </tgroup>
3864ea1d6981Smrg</informaltable>
3865ea1d6981Smrg
3866ea1d6981Smrg<para>
3867ea1d6981SmrgThis request replaces the <emphasis>
3868ea1d6981SmrgPolyText16</emphasis>
3869ea1d6981Smrg request for requests within its encoding range.
3870ea1d6981Smrg</para>
3871ea1d6981Smrg
3872ea1d6981Smrg
3873ea1d6981Smrg<para>
3874ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#32634">See The
3875ea1d6981Smrgdescription of this request is on page 24.</ulink>.
3876ea1d6981Smrg</para>
3877ea1d6981Smrg
3878ea1d6981Smrg
3879ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3880ea1d6981Smrg  <?dbfo keep-together="always" ?>
3881ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3882ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3883ea1d6981Smrg  <thead>
3884ea1d6981Smrg    <row>
3885ea1d6981Smrg      <entry role='protoname'>LbxImageText8</entry>
3886ea1d6981Smrg    </row>
3887ea1d6981Smrg  </thead>
3888ea1d6981Smrg  <tbody>
3889ea1d6981Smrg    <row>
3890ea1d6981Smrg      <entry role='protoargs'><emphasis>
3891ea1d6981Smrggc-and-drawable: </emphasis>
3892ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3893ea1d6981Smrg    </row>
3894ea1d6981Smrg    <row>
3895ea1d6981Smrg      <entry role='protoargs'><emphasis>
3896ea1d6981SmrgnChars</emphasis>
3897ea1d6981Smrg: CARD8</entry>
3898ea1d6981Smrg    </row>
3899ea1d6981Smrg    <row>
3900ea1d6981Smrg      <entry role='protoargs'><emphasis>
3901ea1d6981Smrgx</emphasis>
3902ea1d6981Smrg: LBXPINT16</entry>
3903ea1d6981Smrg    </row>
3904ea1d6981Smrg    <row>
3905ea1d6981Smrg      <entry role='protoargs'><emphasis>
3906ea1d6981Smrgy</emphasis>
3907ea1d6981Smrg: LBXPINT16</entry>
3908ea1d6981Smrg    </row>
3909ea1d6981Smrg    <row>
3910ea1d6981Smrg      <entry role='protoargs'><emphasis>
3911ea1d6981Smrgstring</emphasis>
3912ea1d6981Smrg: STRING8</entry>
3913ea1d6981Smrg    </row>
3914ea1d6981Smrg
3915ea1d6981Smrg    <row>
3916ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
3917ea1d6981SmrgAlloc</emphasis>
3918ea1d6981Smrg, and those given for the corresponding X request.</entry>
3919ea1d6981Smrg    </row>
3920ea1d6981Smrg  </tbody>
3921ea1d6981Smrg  </tgroup>
3922ea1d6981Smrg</informaltable>
3923ea1d6981Smrg
3924ea1d6981Smrg<para>
3925ea1d6981SmrgThis request replaces the <emphasis>
3926ea1d6981SmrgImageText8</emphasis>
3927ea1d6981Smrg request for requests within its encoding range.
3928ea1d6981Smrg</para>
3929ea1d6981Smrg
3930ea1d6981Smrg
3931ea1d6981Smrg<para>
3932ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#17018">See The
3933ea1d6981Smrgdescription of this request is on page 24.</ulink>.
3934ea1d6981Smrg</para>
3935ea1d6981Smrg
3936ea1d6981Smrg
3937ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3938ea1d6981Smrg  <?dbfo keep-together="always" ?>
3939ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3940ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3941ea1d6981Smrg  <thead>
3942ea1d6981Smrg    <row>
3943ea1d6981Smrg      <entry role='protoname'>LbxImageText16</entry>
3944ea1d6981Smrg    </row>
3945ea1d6981Smrg  </thead>
3946ea1d6981Smrg  <tbody>
3947ea1d6981Smrg    <row>
3948ea1d6981Smrg      <entry role='protoargs'><emphasis>
3949ea1d6981SmrgnChars</emphasis>
3950ea1d6981Smrg: CARD8</entry>
3951ea1d6981Smrg    </row>
3952ea1d6981Smrg    <row>
3953ea1d6981Smrg      <entry role='protoargs'><emphasis>
3954ea1d6981Smrggc-and-drawable: </emphasis>
3955ea1d6981SmrgLBXGCANDDRAWABLE</entry>
3956ea1d6981Smrg    </row>
3957ea1d6981Smrg    <row>
3958ea1d6981Smrg      <entry role='protoargs'>x: LBXPINT16</entry>
3959ea1d6981Smrg    </row>
3960ea1d6981Smrg    <row>
3961ea1d6981Smrg      <entry role='protoargs'><emphasis>
3962ea1d6981Smrgy</emphasis>
3963ea1d6981Smrg: LBXPINT16</entry>
3964ea1d6981Smrg    </row>
3965ea1d6981Smrg    <row>
3966ea1d6981Smrg      <entry role='protoargs'><emphasis>
3967ea1d6981Smrgstring</emphasis>
3968ea1d6981Smrg: STRING16</entry>
3969ea1d6981Smrg    </row>
3970ea1d6981Smrg
3971ea1d6981Smrg    <row>
3972ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
3973ea1d6981SmrgAlloc</emphasis>
3974ea1d6981Smrg, and those given for the corresponding X request.</entry>
3975ea1d6981Smrg    </row>
3976ea1d6981Smrg  </tbody>
3977ea1d6981Smrg  </tgroup>
3978ea1d6981Smrg</informaltable>
3979ea1d6981Smrg
3980ea1d6981Smrg<para>
3981ea1d6981SmrgThis request replaces the <emphasis>
3982ea1d6981SmrgImageText16</emphasis>
3983ea1d6981Smrg request for requests within its encoding range.
3984ea1d6981Smrg</para>
3985ea1d6981Smrg
3986ea1d6981Smrg
3987ea1d6981Smrg<para>
3988ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#23910">See The
3989ea1d6981Smrgdescription of this request is on page 24.</ulink>.
3990ea1d6981Smrg</para>
3991ea1d6981Smrg
3992ea1d6981Smrg
3993ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
3994ea1d6981Smrg  <?dbfo keep-together="always" ?>
3995ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
3996ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
3997ea1d6981Smrg  <thead>
3998ea1d6981Smrg    <row>
3999ea1d6981Smrg      <entry role='protoname'>LbxPutImage</entry>
4000ea1d6981Smrg    </row>
4001ea1d6981Smrg  </thead>
4002ea1d6981Smrg  <tbody>
4003ea1d6981Smrg    <row>
4004ea1d6981Smrg      <entry role='protoargs'><emphasis>
4005ea1d6981Smrgcompression-method</emphasis>
4006ea1d6981Smrg: CARD8</entry>
4007ea1d6981Smrg    </row>
4008ea1d6981Smrg    <row>
4009ea1d6981Smrg      <entry role='protoargs'><emphasis>
4010ea1d6981Smrgformat</emphasis>
4011ea1d6981Smrg: {<emphasis>
4012ea1d6981SmrgBitmap</emphasis>
4013ea1d6981Smrg, <emphasis>
4014ea1d6981SmrgXYPixmap</emphasis>
4015ea1d6981Smrg, <emphasis>
4016ea1d6981SmrgZPixmap</emphasis>
4017ea1d6981Smrg}                  /* packed */</entry>
4018ea1d6981Smrg    </row>
4019ea1d6981Smrg    <row>
4020ea1d6981Smrg      <entry role='protoargs'><emphasis>
4021ea1d6981Smrggc-and-drawable: </emphasis>
4022ea1d6981SmrgLBXGCANDDRAWABLE</entry>
4023ea1d6981Smrg    </row>
4024ea1d6981Smrg    <row>
4025ea1d6981Smrg      <entry role='protoargs'><emphasis>
4026ea1d6981Smrgwidth</emphasis>
4027ea1d6981Smrg, <emphasis>
4028ea1d6981Smrgheight</emphasis>
4029ea1d6981Smrg: LBXCARD16</entry>
4030ea1d6981Smrg    </row>
4031ea1d6981Smrg    <row>
4032ea1d6981Smrg      <entry role='protoargs'><emphasis>
4033ea1d6981Smrgdst-x</emphasis>
4034ea1d6981Smrg, <emphasis>
4035ea1d6981Smrgdst-y</emphasis>
4036ea1d6981Smrg: LBXPINT16</entry>
4037ea1d6981Smrg    </row>
4038ea1d6981Smrg    <row>
4039ea1d6981Smrg      <entry role='protoargs'><emphasis>
4040ea1d6981Smrgdepth</emphasis>
4041ea1d6981Smrg: CARD8                  /* packed */</entry>
4042ea1d6981Smrg    </row>
4043ea1d6981Smrg    <row>
4044ea1d6981Smrg      <entry role='protoargs'><emphasis>
4045ea1d6981Smrgleft-pad</emphasis>
4046ea1d6981Smrg: CARD8                  /* packed */</entry>
4047ea1d6981Smrg    </row>
4048ea1d6981Smrg    <row>
4049ea1d6981Smrg      <entry role='protoargs'><emphasis>
4050ea1d6981Smrgpad-bytes</emphasis>
4051ea1d6981Smrg: CARD8                  /* packed */</entry>
4052ea1d6981Smrg    </row>
4053ea1d6981Smrg    <row>
4054ea1d6981Smrg      <entry role='protoargs'><emphasis>
4055ea1d6981Smrgdata</emphasis>
4056ea1d6981Smrg:LISTofBYTE</entry>
4057ea1d6981Smrg    </row>
4058ea1d6981Smrg
4059ea1d6981Smrg    <row>
4060ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
4061ea1d6981SmrgAlloc</emphasis>
4062ea1d6981Smrg, <emphasis>
4063ea1d6981SmrgValue</emphasis>
4064ea1d6981Smrg</entry>
4065ea1d6981Smrg    </row>
4066ea1d6981Smrg  </tbody>
4067ea1d6981Smrg  </tgroup>
4068ea1d6981Smrg</informaltable>
4069ea1d6981Smrg
4070ea1d6981Smrg<para>
4071ea1d6981SmrgWhen the request can be usefully compressed, this request replaces the
4072ea1d6981Smrg<emphasis>
4073ea1d6981SmrgPutImage</emphasis>
4074ea1d6981Smrg request. The <emphasis>
4075ea1d6981Smrgcompression-method</emphasis>
4076ea1d6981Smrg parameter contains the opcode of a compression method returned in the
4077ea1d6981Smrg<emphasis>
4078ea1d6981SmrgLbxStartProxy</emphasis>
4079ea1d6981Smrg reply. The <emphasis>
4080ea1d6981Smrgpad-bytes</emphasis>
4081ea1d6981Smrg parameter gives the number of unused pad bytes that follow the compressed
4082ea1d6981Smrgimage data. All other parameters are as in the X request. If the specified
4083ea1d6981Smrgcompression method is not recognized, the server returns a <emphasis>
4084ea1d6981SmrgValue</emphasis>
4085ea1d6981Smrg error.
4086ea1d6981Smrg</para>
4087ea1d6981Smrg
4088ea1d6981Smrg
4089ea1d6981Smrg<para>
4090ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#12268">See
4091ea1d6981SmrgLbxPutImage</ulink>.
4092ea1d6981Smrg</para>
4093ea1d6981Smrg
4094ea1d6981Smrg
4095ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4096ea1d6981Smrg  <?dbfo keep-together="always" ?>
4097ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4098ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4099ea1d6981Smrg  <thead>
4100ea1d6981Smrg    <row>
4101ea1d6981Smrg      <entry role='protoname'>LbxGetImage</entry>
4102ea1d6981Smrg    </row>
4103ea1d6981Smrg  </thead>
4104ea1d6981Smrg  <tbody>
4105ea1d6981Smrg    <row>
4106ea1d6981Smrg      <entry role='protoargs'><emphasis>
4107ea1d6981Smrgdrawable</emphasis>
4108ea1d6981Smrg: DRAWABLE</entry>
4109ea1d6981Smrg    </row>
4110ea1d6981Smrg    <row>
4111ea1d6981Smrg      <entry role='protoargs'><emphasis>
4112ea1d6981Smrgx</emphasis>
4113ea1d6981Smrg, <emphasis>
4114ea1d6981Smrgy</emphasis>
4115ea1d6981Smrg: INT16</entry>
4116ea1d6981Smrg    </row>
4117ea1d6981Smrg    <row>
4118ea1d6981Smrg      <entry role='protoargs'><emphasis>
4119ea1d6981Smrgwidth</emphasis>
4120ea1d6981Smrg, <emphasis>
4121ea1d6981Smrgheight</emphasis>
4122ea1d6981Smrg: CARD16</entry>
4123ea1d6981Smrg    </row>
4124ea1d6981Smrg    <row>
4125ea1d6981Smrg      <entry role='protoargs'><emphasis>
4126ea1d6981Smrgplane-mask</emphasis>
4127ea1d6981Smrg: CARD32</entry>
4128ea1d6981Smrg    </row>
4129ea1d6981Smrg    <row>
4130ea1d6981Smrg      <entry role='protoargs'><emphasis>
4131ea1d6981Smrgformat</emphasis>
4132ea1d6981Smrg: {XYPixmap, ZPixmap}</entry>
4133ea1d6981Smrg    </row>
4134ea1d6981Smrg    <row>
4135ea1d6981Smrg      <entry>=&gt;</entry>
4136ea1d6981Smrg    </row>
4137ea1d6981Smrg    <row>
4138ea1d6981Smrg      <entry role='protoargs'>depth: CARD8</entry>
4139ea1d6981Smrg    </row>
4140ea1d6981Smrg    <row>
4141ea1d6981Smrg      <entry role='protoargs'>x-length: CARD32</entry>
4142ea1d6981Smrg    </row>
4143ea1d6981Smrg    <row>
4144ea1d6981Smrg      <entry role='protoargs'>visual: VISUALID or None</entry>
4145ea1d6981Smrg    </row>
4146ea1d6981Smrg    <row>
4147ea1d6981Smrg      <entry role='protoargs'>compression-method: CARD8</entry>
4148ea1d6981Smrg    </row>
4149ea1d6981Smrg    <row>
4150ea1d6981Smrg      <entry role='protoargs'>data: LISTofBYTE</entry>
4151ea1d6981Smrg    </row>
4152ea1d6981Smrg
4153ea1d6981Smrg    <row>
4154ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
4155ea1d6981SmrgAlloc,Match,Value</emphasis>
4156ea1d6981Smrg</entry>
4157ea1d6981Smrg    </row>
4158ea1d6981Smrg  </tbody>
4159ea1d6981Smrg  </tgroup>
4160ea1d6981Smrg</informaltable>
4161ea1d6981Smrg
4162ea1d6981Smrg<para>
4163ea1d6981SmrgThis request can replace the <emphasis>
4164ea1d6981SmrgGetImage</emphasis>
4165ea1d6981Smrg request. The same semantics apply, with the following exceptions.
4166ea1d6981Smrg</para>
4167ea1d6981Smrg
4168ea1d6981Smrg
4169ea1d6981Smrg<para>
4170ea1d6981SmrgThe <emphasis>
4171ea1d6981Smrgcompression-method</emphasis>
4172ea1d6981Smrg field contains the opcode of the compression method used in the reply. The
4173ea1d6981Smrgcompression opcodes are supplied in the <emphasis>
4174ea1d6981SmrgLbxStartProxy</emphasis>
4175ea1d6981Smrg reply. The <emphasis>
4176ea1d6981Smrgx-length </emphasis>
4177ea1d6981Smrgfield<emphasis>
4178ea1d6981Smrg </emphasis>
4179ea1d6981Smrgcontains the length of the uncompressed version of the reply in 4 byte units.
4180ea1d6981Smrg</para>
4181ea1d6981Smrg
4182ea1d6981Smrg
4183ea1d6981Smrg<para>
4184ea1d6981SmrgA <emphasis>
4185ea1d6981SmrgValue</emphasis>
4186ea1d6981Smrg error is returned if the format is not recognized by the X server. A <emphasis>
4187ea1d6981SmrgMatch</emphasis>
4188ea1d6981Smrg error is returned under the same circumstances as described by the <emphasis>
4189ea1d6981SmrgGetImage</emphasis>
4190ea1d6981Smrg request.
4191ea1d6981Smrg</para>
4192ea1d6981Smrg
4193ea1d6981Smrg
4194ea1d6981Smrg<para>
4195ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#10066">See
4196ea1d6981SmrgLbxGetImage</ulink>.
4197ea1d6981Smrg</para>
4198ea1d6981Smrg
4199ea1d6981Smrg
4200ea1d6981Smrg
4201ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4202ea1d6981Smrg  <?dbfo keep-together="always" ?>
4203ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4204ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4205ea1d6981Smrg  <thead>
4206ea1d6981Smrg    <row>
4207ea1d6981Smrg      <entry role='protoname'>LbxBeginLargeRequest</entry>
4208ea1d6981Smrg    </row>
4209ea1d6981Smrg  </thead>
4210ea1d6981Smrg  <tbody>
4211ea1d6981Smrg    <row>
4212ea1d6981Smrg      <entry role='protoargs'><emphasis>
4213ea1d6981Smrglarge-request-length</emphasis>
4214ea1d6981Smrg: CARD32</entry>
4215ea1d6981Smrg    </row>
4216ea1d6981Smrg
4217ea1d6981Smrg    <row>
4218ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
4219ea1d6981SmrgAlloc</emphasis>
4220ea1d6981Smrg</entry>
4221ea1d6981Smrg    </row>
4222ea1d6981Smrg  </tbody>
4223ea1d6981Smrg  </tgroup>
4224ea1d6981Smrg</informaltable>
4225ea1d6981Smrg
4226ea1d6981Smrg<para>
4227ea1d6981SmrgThis request, along with the Lbx<emphasis>
4228ea1d6981SmrgLargeRequestData</emphasis>
4229ea1d6981Smrg and Lbx<emphasis>
4230ea1d6981SmrgEndLargeRequest</emphasis>
4231ea1d6981Smrg requests, is used to transport a large request in pieces. The smaller size of
4232ea1d6981Smrgthe resulting requests allows smoother multiplexing of clients on a single low
4233ea1d6981Smrgbandwidth connection to the server. The resulting finer-grained multiplexing
4234ea1d6981Smrgimproves responsiveness for the other clients.
4235ea1d6981Smrg</para>
4236ea1d6981Smrg
4237ea1d6981Smrg
4238ea1d6981Smrg<para>
4239ea1d6981SmrgAfter a <emphasis>
4240ea1d6981SmrgLbxBeginLargeRequest</emphasis>
4241ea1d6981Smrg request is sent, multiple <emphasis>
4242ea1d6981SmrgLbxLargeRequestData</emphasis>
4243ea1d6981Smrg requests are sent to transport all of the data in the large request, and
4244ea1d6981Smrgfinally an <emphasis>
4245ea1d6981SmrgLbxEndLargeRequest</emphasis>
4246ea1d6981Smrg request is sent. The large-request-length field expresses the total length of
4247ea1d6981Smrgthe transported large request, expressed as the number of bytes in the
4248ea1d6981Smrgtransported request divided by four.
4249ea1d6981Smrg</para>
4250ea1d6981Smrg
4251ea1d6981Smrg
4252ea1d6981Smrg<para>
4253ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#22013">See The
4254ea1d6981Smrgdescription of this request is on page 25.</ulink>.
4255ea1d6981Smrg</para>
4256ea1d6981Smrg
4257ea1d6981Smrg
4258ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4259ea1d6981Smrg  <?dbfo keep-together="always" ?>
4260ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4261ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4262ea1d6981Smrg  <thead>
4263ea1d6981Smrg    <row>
4264ea1d6981Smrg      <entry role='protoname'>LbxLargeRequestData</entry>
4265ea1d6981Smrg    </row>
4266ea1d6981Smrg  </thead>
4267ea1d6981Smrg  <tbody>
4268ea1d6981Smrg    <row>
4269ea1d6981Smrg      <entry role='protoargs'><emphasis>
4270ea1d6981Smrgdata</emphasis>
4271ea1d6981Smrg: LISTofBYTE</entry>
4272ea1d6981Smrg    </row>
4273ea1d6981Smrg
4274ea1d6981Smrg    <row>
4275ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
4276ea1d6981SmrgAlloc</emphasis>
4277ea1d6981Smrg</entry>
4278ea1d6981Smrg    </row>
4279ea1d6981Smrg  </tbody>
4280ea1d6981Smrg  </tgroup>
4281ea1d6981Smrg</informaltable>
4282ea1d6981Smrg
4283ea1d6981Smrg<para>
4284ea1d6981SmrgThis request is used to carry the segments of a larger request, as described in
4285ea1d6981Smrgthe definition of <emphasis>
4286ea1d6981SmrgLbxBeginLargeRequest</emphasis>
4287ea1d6981Smrg. The data must be carried in order, starting with the request header, and each
4288ea1d6981Smrgsegment must be multiples of 4 bytes long. If the <emphasis>
4289ea1d6981SmrgLbxLargeRequestData</emphasis>
4290ea1d6981Smrg is not preceded by a corresponding <emphasis>
4291ea1d6981SmrgLbxBeginLargeRequest</emphasis>
4292ea1d6981Smrg, a <emphasis>
4293ea1d6981SmrgBadAlloc</emphasis>
4294ea1d6981Smrg error is generated.
4295ea1d6981Smrg</para>
4296ea1d6981Smrg
4297ea1d6981Smrg
4298ea1d6981Smrg<para>
4299ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#31469">See The
4300ea1d6981Smrgdescription of this request is on page 26.</ulink>.
4301ea1d6981Smrg</para>
4302ea1d6981Smrg
4303ea1d6981Smrg
4304ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4305ea1d6981Smrg  <?dbfo keep-together="always" ?>
4306ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4307ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4308ea1d6981Smrg  <thead>
4309ea1d6981Smrg    <row>
4310ea1d6981Smrg      <entry role='protoname'>LbxEndLargeRequest</entry>
4311ea1d6981Smrg    </row>
4312ea1d6981Smrg  </thead>
4313ea1d6981Smrg  <tbody>
4314ea1d6981Smrg    <row>
4315ea1d6981Smrg      <entry role='protoerror'>Errors: <emphasis>
4316ea1d6981SmrgLength, Alloc</emphasis>
4317ea1d6981Smrg</entry>
4318ea1d6981Smrg    </row>
4319ea1d6981Smrg  </tbody>
4320ea1d6981Smrg  </tgroup>
4321ea1d6981Smrg</informaltable>
4322ea1d6981Smrg
4323ea1d6981Smrg<para>
4324ea1d6981SmrgAs described in the definition of <emphasis>
4325ea1d6981SmrgLbxBeginLargeRequest</emphasis>
4326ea1d6981Smrg, <emphasis>
4327ea1d6981SmrgLbxEndLargeRequest</emphasis>
4328ea1d6981Smrg is used to signal the end of a series of <emphasis>
4329ea1d6981SmrgLargeRequestData</emphasis>
4330ea1d6981Smrg requests. If the total length of the data transported by the <emphasis>
4331ea1d6981SmrgLbxLargeRequestData</emphasis>
4332ea1d6981Smrg requests does not match the large-request-length field of the preceding
4333ea1d6981Smrg<emphasis>
4334ea1d6981SmrgLbxBeginLargeRequest</emphasis>
4335ea1d6981Smrg request, then a <emphasis>
4336ea1d6981SmrgLength</emphasis>
4337ea1d6981Smrg error occurs. If the <emphasis>
4338ea1d6981SmrgLbxEndLargeRequest</emphasis>
4339ea1d6981Smrg is not preceded by a corresponding <emphasis>
4340ea1d6981SmrgLbxBeginLargeRequest</emphasis>
4341ea1d6981Smrg, a <emphasis>
4342ea1d6981SmrgBadAlloc</emphasis>
4343ea1d6981Smrg error is generated. The request is executed in order for that client as if it
4344ea1d6981Smrgwere the request after the request preceding <emphasis>
4345ea1d6981SmrgLbxEndLargeRequest</emphasis>
4346ea1d6981Smrg.
4347ea1d6981Smrg</para>
4348ea1d6981Smrg
4349ea1d6981Smrg
4350ea1d6981Smrg<para>
4351ea1d6981SmrgThe encoding for this request is on <ulink url="lbx.htm#31037">See
4352ea1d6981SmrgLbxEndLargeRequest</ulink>.
4353ea1d6981Smrg</para>
4354ea1d6981Smrg
4355ea1d6981Smrg
4356ea1d6981Smrg
4357ea1d6981Smrg</sect3>
4358ea1d6981Smrg</sect2>
4359ea1d6981Smrg<sect2 id='events'>
4360ea1d6981Smrg<title>Events</title>
4361ea1d6981Smrg
4362ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4363ea1d6981Smrg  <?dbfo keep-together="always" ?>
4364ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4365ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4366ea1d6981Smrg  <thead>
4367ea1d6981Smrg    <row>
4368ea1d6981Smrg      <entry role='protoname'>LbxSwitchEvent</entry>
4369ea1d6981Smrg    </row>
4370ea1d6981Smrg  </thead>
4371ea1d6981Smrg  <tbody>
4372ea1d6981Smrg    <row>
4373ea1d6981Smrg      <entry role='protoargs'><emphasis>
4374ea1d6981Smrgclient</emphasis>
4375ea1d6981Smrg: CARD32</entry>
4376ea1d6981Smrg    </row>
4377ea1d6981Smrg  </tbody>
4378ea1d6981Smrg  </tgroup>
4379ea1d6981Smrg</informaltable>
4380ea1d6981Smrg
4381ea1d6981Smrg<para>
4382ea1d6981SmrgNotify the proxy that the subsequent replies, events, and errors are relative
4383ea1d6981Smrgto the specified client.
4384ea1d6981Smrg</para>
4385ea1d6981Smrg
4386ea1d6981Smrg
4387ea1d6981Smrg<para>
4388ea1d6981SmrgThe encoding for this event is on <ulink url="lbx.htm#17348">See
4389ea1d6981SmrgLbxSwitchEvent</ulink>.
4390ea1d6981Smrg</para>
4391ea1d6981Smrg
4392ea1d6981Smrg
4393ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4394ea1d6981Smrg  <?dbfo keep-together="always" ?>
4395ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4396ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4397ea1d6981Smrg  <thead>
4398ea1d6981Smrg    <row>
4399ea1d6981Smrg      <entry role='protoname'>LbxCloseEvent</entry>
4400ea1d6981Smrg    </row>
4401ea1d6981Smrg  </thead>
4402ea1d6981Smrg  <tbody>
4403ea1d6981Smrg    <row>
4404ea1d6981Smrg      <entry role='protoargs'><emphasis>
4405ea1d6981Smrgclient</emphasis>
4406ea1d6981Smrg: CARD32</entry>
4407ea1d6981Smrg    </row>
4408ea1d6981Smrg  </tbody>
4409ea1d6981Smrg  </tgroup>
4410ea1d6981Smrg</informaltable>
4411ea1d6981Smrg
4412ea1d6981Smrg<para>
4413ea1d6981SmrgNotify the proxy that the specified client's connection to the server is closed.
4414ea1d6981Smrg</para>
4415ea1d6981Smrg
4416ea1d6981Smrg
4417ea1d6981Smrg<para>
4418ea1d6981SmrgThe encoding for this event is on <ulink url="lbx.htm#41814">See The
4419ea1d6981Smrgdescription of this event is on page 27.</ulink>.
4420ea1d6981Smrg</para>
4421ea1d6981Smrg
4422ea1d6981Smrg
4423ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4424ea1d6981Smrg  <?dbfo keep-together="always" ?>
4425ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4426ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4427ea1d6981Smrg  <thead>
4428ea1d6981Smrg    <row>
4429ea1d6981Smrg      <entry role='protoname'>LbxInvalidateTagEvent</entry>
4430ea1d6981Smrg    </row>
4431ea1d6981Smrg  </thead>
4432ea1d6981Smrg  <tbody>
4433ea1d6981Smrg    <row>
4434ea1d6981Smrg      <entry role='protoargs'><emphasis>
4435ea1d6981Smrgtag</emphasis>
4436ea1d6981Smrg: CARD32</entry>
4437ea1d6981Smrg    </row>
4438ea1d6981Smrg    <row>
4439ea1d6981Smrg      <entry role='protoargs'><emphasis>
4440ea1d6981Smrgtag-type</emphasis>
4441ea1d6981Smrg: {Modmap, Keymap, Property, Font, ConnInfo}</entry>
4442ea1d6981Smrg    </row>
4443ea1d6981Smrg  </tbody>
4444ea1d6981Smrg  </tgroup>
4445ea1d6981Smrg</informaltable>
4446ea1d6981Smrg
4447ea1d6981Smrg<para>
4448ea1d6981SmrgThis message informs the proxy that the tag and the server data referenced by
4449ea1d6981Smrgthe tag are obsolete, and should be discarded. The tag type may be one of the
4450ea1d6981Smrgfollowing values: <emphasis>
4451ea1d6981SmrgLbxTagTypeModmap</emphasis>
4452ea1d6981Smrg, <emphasis>
4453ea1d6981SmrgLbxTagTypeKeymap</emphasis>
4454ea1d6981Smrg, <emphasis>
4455ea1d6981SmrgLbxTagTypeProperty</emphasis>
4456ea1d6981Smrg, <emphasis>
4457ea1d6981SmrgLbxTagTypeFont</emphasis>
4458ea1d6981Smrg, <emphasis>
4459ea1d6981SmrgLbxTagTypeConnInfo</emphasis>
4460ea1d6981Smrg.
4461ea1d6981Smrg</para>
4462ea1d6981Smrg
4463ea1d6981Smrg
4464ea1d6981Smrg<para>
4465ea1d6981SmrgThe encoding for this event is on <ulink url="lbx.htm#34406">See
4466ea1d6981SmrgLbxInvalidateTagEvent</ulink>.
4467ea1d6981Smrg</para>
4468ea1d6981Smrg
4469ea1d6981Smrg
4470ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4471ea1d6981Smrg  <?dbfo keep-together="always" ?>
4472ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4473ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4474ea1d6981Smrg  <thead>
4475ea1d6981Smrg    <row>
4476ea1d6981Smrg      <entry role='protoname'>LbxSendTagDataEvent</entry>
4477ea1d6981Smrg    </row>
4478ea1d6981Smrg  </thead>
4479ea1d6981Smrg  <tbody>
4480ea1d6981Smrg    <row>
4481ea1d6981Smrg      <entry role='protoargs'><emphasis>
4482ea1d6981Smrgtag</emphasis>
4483ea1d6981Smrg: CARD32</entry>
4484ea1d6981Smrg    </row>
4485ea1d6981Smrg    <row>
4486ea1d6981Smrg      <entry role='protoargs'><emphasis>
4487ea1d6981Smrgtag-type</emphasis>
4488ea1d6981Smrg: {Property}</entry>
4489ea1d6981Smrg    </row>
4490ea1d6981Smrg  </tbody>
4491ea1d6981Smrg  </tgroup>
4492ea1d6981Smrg</informaltable>
4493ea1d6981Smrg
4494ea1d6981Smrg<para>
4495ea1d6981SmrgThe server sends this event to the proxy to request a copy of tagged data which
4496ea1d6981Smrgis being stored by the proxy. The request contains a tag which was previously
4497ea1d6981Smrgassigned to the data by the server. The proxy should respond to <emphasis>
4498ea1d6981SmrgSendTagData</emphasis>
4499ea1d6981Smrg by sending a <emphasis>
4500ea1d6981SmrgTagData</emphasis>
4501ea1d6981Smrg request to the server. The tag type may be one of the following values:
4502ea1d6981Smrg<emphasis>
4503ea1d6981SmrgLbxTagTypeProperty</emphasis>
4504ea1d6981Smrg.
4505ea1d6981Smrg</para>
4506ea1d6981Smrg
4507ea1d6981Smrg
4508ea1d6981Smrg<para>
4509ea1d6981SmrgThe encoding for this event is on <ulink url="lbx.htm#22353">See
4510ea1d6981SmrgLbxSendTagDataEvent</ulink>.
4511ea1d6981Smrg</para>
4512ea1d6981Smrg
4513ea1d6981Smrg
4514ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4515ea1d6981Smrg  <?dbfo keep-together="always" ?>
4516ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4517ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4518ea1d6981Smrg  <thead>
4519ea1d6981Smrg    <row>
4520ea1d6981Smrg      <entry role='protoname'>LbxListenToOne</entry>
4521ea1d6981Smrg    </row>
4522ea1d6981Smrg  </thead>
4523ea1d6981Smrg  <tbody>
4524ea1d6981Smrg    <row>
4525ea1d6981Smrg      <entry role='protoargs'><emphasis>
4526ea1d6981Smrgclient</emphasis>
4527ea1d6981Smrg: CARD32 or <emphasis>
4528ea1d6981Smrg0xffffffff</emphasis>
4529ea1d6981Smrg</entry>
4530ea1d6981Smrg    </row>
4531ea1d6981Smrg  </tbody>
4532ea1d6981Smrg  </tgroup>
4533ea1d6981Smrg</informaltable>
4534ea1d6981Smrg
4535ea1d6981Smrg<para>
4536ea1d6981SmrgWhen the server is grabbed, <emphasis>
4537ea1d6981SmrgListenToOne</emphasis>
4538ea1d6981Smrg is sent to the proxy. As an X client, the proxy itself is unaffected by grabs,
4539ea1d6981Smrgin order that it may respond to requests for data from the X server.
4540ea1d6981Smrg</para>
4541ea1d6981Smrg
4542ea1d6981Smrg
4543ea1d6981Smrg<para>
4544ea1d6981SmrgWhen the client grabbing the server is managed through the proxy, the proxy
4545ea1d6981Smrgwill permit messages from itself and the grabbing client to be sent immediately
4546ea1d6981Smrgto the server, and may buffer requests from other clients of the proxy. The
4547ea1d6981Smrgclient is identified in the event.
4548ea1d6981Smrg</para>
4549ea1d6981Smrg
4550ea1d6981Smrg
4551ea1d6981Smrg<para>
4552ea1d6981SmrgWhen the client grabbing the server is not managed through the proxy, the
4553ea1d6981Smrgclient field in the event will be <emphasis>
4554ea1d6981Smrg0xffffffff</emphasis>
4555ea1d6981Smrg. The proxy will communicate with the server, and it may buffer requests from
4556ea1d6981Smrgother clients. The proxy will continue to handle new connections while the
4557ea1d6981Smrgserver is grabbed.
4558ea1d6981Smrg</para>
4559ea1d6981Smrg
4560ea1d6981Smrg
4561ea1d6981Smrg<para>
4562ea1d6981SmrgThe server will send <emphasis>
4563ea1d6981SmrgListenToAll</emphasis>
4564ea1d6981Smrg to the proxy when the server is ungrabbed. There is no time-out for this
4565ea1d6981Smrginterval in the protocol.
4566ea1d6981Smrg</para>
4567ea1d6981Smrg
4568ea1d6981Smrg
4569ea1d6981Smrg<para>
4570ea1d6981SmrgThe encoding for this event is on <ulink url="lbx.htm#18630">See The
4571ea1d6981Smrgdescription of this event is on page 27.</ulink>.
4572ea1d6981Smrg</para>
4573ea1d6981Smrg
4574ea1d6981Smrg
4575ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4576ea1d6981Smrg  <?dbfo keep-together="always" ?>
4577ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4578ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4579ea1d6981Smrg  <tbody>
4580ea1d6981Smrg    <row>
4581ea1d6981Smrg      <entry role='protoname'>LbxListenToAll</entry>
4582ea1d6981Smrg    </row>
4583ea1d6981Smrg  </tbody>
4584ea1d6981Smrg  </tgroup>
4585ea1d6981Smrg</informaltable>
4586ea1d6981Smrg
4587ea1d6981Smrg<para>
4588ea1d6981SmrgNotify the proxy that the server has been ungrabbed, and that the proxy may now
4589ea1d6981Smrgsend all buffered client requests on to the server.
4590ea1d6981Smrg</para>
4591ea1d6981Smrg
4592ea1d6981Smrg
4593ea1d6981Smrg<para>
4594ea1d6981SmrgThe encoding for this event is on <ulink url="lbx.htm#30610">See The
4595ea1d6981Smrgdescription of this event is on page 27.</ulink>.
4596ea1d6981Smrg</para>
4597ea1d6981Smrg
4598ea1d6981Smrg
4599ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4600ea1d6981Smrg  <?dbfo keep-together="always" ?>
4601ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4602ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4603ea1d6981Smrg  <thead>
4604ea1d6981Smrg    <row>
4605ea1d6981Smrg      <entry role='protoname'>LbxQuickMotionDeltaEvent</entry>
4606ea1d6981Smrg    </row>
4607ea1d6981Smrg  </thead>
4608ea1d6981Smrg  <tbody>
4609ea1d6981Smrg    <row>
4610ea1d6981Smrg      <entry role='protoargs'><emphasis>
4611ea1d6981SmrgdeltaTime</emphasis>
4612ea1d6981Smrg: CARD8</entry>
4613ea1d6981Smrg    </row>
4614ea1d6981Smrg    <row>
4615ea1d6981Smrg      <entry role='protoargs'><emphasis>
4616ea1d6981SmrgdeltaX</emphasis>
4617ea1d6981Smrg: INT8</entry>
4618ea1d6981Smrg    </row>
4619ea1d6981Smrg    <row>
4620ea1d6981Smrg      <entry role='protoargs'><emphasis>
4621ea1d6981SmrgdeltaY</emphasis>
4622ea1d6981Smrg: INT8</entry>
4623ea1d6981Smrg    </row>
4624ea1d6981Smrg  </tbody>
4625ea1d6981Smrg  </tgroup>
4626ea1d6981Smrg</informaltable>
4627ea1d6981Smrg
4628ea1d6981Smrg<para>
4629ea1d6981SmrgThis event is used as a replacement for the <emphasis>
4630ea1d6981SmrgMotionNotify</emphasis>
4631ea1d6981Smrg event when possible. The fields are used as deltas to the most recent
4632ea1d6981Smrg<emphasis>
4633ea1d6981SmrgMotionNotify</emphasis>
4634ea1d6981Smrg event encoded as a <emphasis>
4635ea1d6981SmrgMotionNotify</emphasis>
4636ea1d6981Smrg event, <emphasis>
4637ea1d6981SmrgLbxQuickMotionDeltaEvent</emphasis>
4638ea1d6981Smrg, or <emphasis>
4639ea1d6981SmrgLbxMotionDeltaEvent</emphasis>
4640ea1d6981Smrg. Not every <emphasis>
4641ea1d6981SmrgMotionNotify</emphasis>
4642ea1d6981Smrg event can be encoded as a <emphasis>
4643ea1d6981SmrgLbxQuickMotionDeltaEvent</emphasis>
4644ea1d6981Smrg.
4645ea1d6981Smrg</para>
4646ea1d6981Smrg
4647ea1d6981Smrg
4648ea1d6981Smrg<para>
4649ea1d6981SmrgThe encoding for this event is on <ulink url="lbx.htm#35213">See
4650ea1d6981SmrgLbxQuickMotionDeltaEvent</ulink>.
4651ea1d6981Smrg</para>
4652ea1d6981Smrg
4653ea1d6981Smrg
4654ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4655ea1d6981Smrg  <?dbfo keep-together="always" ?>
4656ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4657ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4658ea1d6981Smrg  <thead>
4659ea1d6981Smrg    <row>
4660ea1d6981Smrg      <entry role='protoname'>LbxMotionDeltaEvent</entry>
4661ea1d6981Smrg    </row>
4662ea1d6981Smrg  </thead>
4663ea1d6981Smrg  <tbody>
4664ea1d6981Smrg    <row>
4665ea1d6981Smrg      <entry role='protoargs'><emphasis>
4666ea1d6981SmrgdeltaX</emphasis>
4667ea1d6981Smrg: INT8</entry>
4668ea1d6981Smrg    </row>
4669ea1d6981Smrg    <row>
4670ea1d6981Smrg      <entry role='protoargs'><emphasis>
4671ea1d6981SmrgdeltaY</emphasis>
4672ea1d6981Smrg: INT8</entry>
4673ea1d6981Smrg    </row>
4674ea1d6981Smrg    <row>
4675ea1d6981Smrg      <entry role='protoargs'><emphasis>
4676ea1d6981SmrgdeltaTime</emphasis>
4677ea1d6981Smrg: CARD16</entry>
4678ea1d6981Smrg    </row>
4679ea1d6981Smrg    <row>
4680ea1d6981Smrg      <entry role='protoargs'><emphasis>
4681ea1d6981SmrgdeltaSequence</emphasis>
4682ea1d6981Smrg: CARD16</entry>
4683ea1d6981Smrg    </row>
4684ea1d6981Smrg  </tbody>
4685ea1d6981Smrg  </tgroup>
4686ea1d6981Smrg</informaltable>
4687ea1d6981Smrg
4688ea1d6981Smrg<para>
4689ea1d6981SmrgThis event is used as a replacement for the <emphasis>
4690ea1d6981SmrgMotionNotify</emphasis>
4691ea1d6981Smrg event when possible. The fields are used as deltas to the most recent
4692ea1d6981Smrg<emphasis>
4693ea1d6981SmrgMotionNotify</emphasis>
4694ea1d6981Smrg event encoded as a <emphasis>
4695ea1d6981SmrgMotionNotify</emphasis>
4696ea1d6981Smrg event, <emphasis>
4697ea1d6981SmrgLbxQuickMotionDeltaEvent</emphasis>
4698ea1d6981Smrg, or <emphasis>
4699ea1d6981SmrgLbxMotionDeltaEvent</emphasis>
4700ea1d6981Smrg. Not every <emphasis>
4701ea1d6981SmrgMotionNotify</emphasis>
4702ea1d6981Smrg event can be encoded as <emphasis>
4703ea1d6981Smrga LbxMotionDeltaEvent</emphasis>
4704ea1d6981Smrg.
4705ea1d6981Smrg</para>
4706ea1d6981Smrg
4707ea1d6981Smrg
4708ea1d6981Smrg<para>
4709ea1d6981SmrgThe encoding for this event is on <ulink url="lbx.htm#35310">See
4710ea1d6981SmrgLbxMotionDeltaEvent</ulink>.
4711ea1d6981Smrg</para>
4712ea1d6981Smrg
4713ea1d6981Smrg
4714ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4715ea1d6981Smrg  <?dbfo keep-together="always" ?>
4716ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4717ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4718ea1d6981Smrg  <thead>
4719ea1d6981Smrg    <row>
4720ea1d6981Smrg      <entry role='protoname'>LbxReleaseCmapEvent</entry>
4721ea1d6981Smrg    </row>
4722ea1d6981Smrg  </thead>
4723ea1d6981Smrg  <tbody>
4724ea1d6981Smrg    <row>
4725ea1d6981Smrg      <entry role='protoargs'><emphasis>
4726ea1d6981Smrgcolormap</emphasis>
4727ea1d6981Smrg: Colormap</entry>
4728ea1d6981Smrg    </row>
4729ea1d6981Smrg  </tbody>
4730ea1d6981Smrg  </tgroup>
4731ea1d6981Smrg</informaltable>
4732ea1d6981Smrg
4733ea1d6981Smrg<para>
4734ea1d6981SmrgThis event notifies the proxy that it must release the grab on this colormap
4735ea1d6981Smrgvia the ReleaseCmap request. <ulink url="lbx.htm#34675">See
4736ea1d6981SmrgLbxReleaseCmap</ulink>
4737ea1d6981Smrg</para>
4738ea1d6981Smrg
4739ea1d6981Smrg
4740ea1d6981Smrg<para>
4741ea1d6981SmrgThe encoding for this event is on <ulink url="lbx.htm#14052">See
4742ea1d6981SmrgLbxReleaseCmapEvent</ulink>.
4743ea1d6981Smrg</para>
4744ea1d6981Smrg
4745ea1d6981Smrg
4746ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4747ea1d6981Smrg  <?dbfo keep-together="always" ?>
4748ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4749ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4750ea1d6981Smrg  <thead>
4751ea1d6981Smrg    <row>
4752ea1d6981Smrg      <entry role='protoname'>LbxFreeCellsEvent</entry>
4753ea1d6981Smrg    </row>
4754ea1d6981Smrg  </thead>
4755ea1d6981Smrg  <tbody>
4756ea1d6981Smrg    <row>
4757ea1d6981Smrg      <entry role='protoargs'><emphasis>
4758ea1d6981Smrgcolormap</emphasis>
4759ea1d6981Smrg: Colormap</entry>
4760ea1d6981Smrg    </row>
4761ea1d6981Smrg    <row>
4762ea1d6981Smrg      <entry role='protoargs'><emphasis>
4763ea1d6981SmrgpixelStart, pixelEnd</emphasis>
4764ea1d6981Smrg: CARD32</entry>
4765ea1d6981Smrg    </row>
4766ea1d6981Smrg  </tbody>
4767ea1d6981Smrg  </tgroup>
4768ea1d6981Smrg</informaltable>
4769ea1d6981Smrg
4770ea1d6981Smrg<para>
4771ea1d6981SmrgThe <emphasis>
4772ea1d6981SmrgLbxFreeCells</emphasis>
4773ea1d6981Smrg event is sent to a proxy that has a colormap grabbed to notify the proxy that
4774ea1d6981Smrgthe reference count of the described cells were decremented to zero by the
4775ea1d6981Smrgserver or another proxy. The reference count includes those by this proxy. The
4776ea1d6981Smrgproxy must update its copy of the colormap state accordingly if the colormap is
4777ea1d6981Smrgstill grabbed, or if the proxy may in the future grab the colormap using
4778ea1d6981Smrgsmart-grab mode. <ulink url="lbx.htm#10922">See LbxGrabCmap</ulink>
4779ea1d6981Smrg</para>
4780ea1d6981Smrg
4781ea1d6981Smrg
4782ea1d6981Smrg<para>
4783ea1d6981SmrgThe pixelStart and pixelEnd fields of the event denote a continuous range of
4784ea1d6981Smrgcells that were freed.
4785ea1d6981Smrg</para>
4786ea1d6981Smrg
4787ea1d6981Smrg
4788ea1d6981Smrg<para>
4789ea1d6981SmrgThe encoding for this event is on <ulink url="lbx.htm#14731">See
4790ea1d6981SmrgLbxFreeCellsEvent</ulink>.
4791ea1d6981Smrg</para>
4792ea1d6981Smrg
4793ea1d6981Smrg</sect2>
4794ea1d6981Smrg<sect2 id='responses'>
4795ea1d6981Smrg<title>Responses</title>
4796ea1d6981Smrg
4797ea1d6981Smrg<para>
4798ea1d6981SmrgResponses are messages from the server to the proxy that not, strictly
4799ea1d6981Smrgspeaking, events, replies or errors.
4800ea1d6981Smrg</para>
4801ea1d6981Smrg
4802ea1d6981Smrg<informaltable frame='none' tabstyle='proto'>
4803ea1d6981Smrg  <?dbfo keep-together="always" ?>
4804ea1d6981Smrg  <tgroup cols='1' align='left' colsep='0' rowsep='0'>
4805ea1d6981Smrg  <colspec colname='c1' colwidth="1.0*"/>
4806ea1d6981Smrg  <thead>
4807ea1d6981Smrg    <row>
4808ea1d6981Smrg      <entry role='protoname'>LbxDeltaResponse</entry>
4809ea1d6981Smrg    </row>
4810ea1d6981Smrg  </thead>
4811ea1d6981Smrg  <tbody>
4812ea1d6981Smrg    <row>
4813ea1d6981Smrg      <entry role='protoargs'><emphasis>
4814ea1d6981Smrgcount</emphasis>
4815ea1d6981Smrg: CARD8</entry>
4816ea1d6981Smrg    </row>
4817ea1d6981Smrg    <row>
4818ea1d6981Smrg      <entry role='protoargs'><emphasis>
4819ea1d6981Smrgcache-index</emphasis>
4820ea1d6981Smrg: CARD8</entry>
4821ea1d6981Smrg    </row>
4822ea1d6981Smrg    <row>
4823ea1d6981Smrg      <entry role='protoargs'><emphasis>
4824ea1d6981Smrgdiffs</emphasis>
4825ea1d6981Smrg: LISTofDIFFITEM</entry>
4826ea1d6981Smrg    </row>
4827ea1d6981Smrg  </tbody>
4828ea1d6981Smrg  </tgroup>
4829ea1d6981Smrg</informaltable>
4830ea1d6981Smrg
4831ea1d6981Smrg<para>
4832ea1d6981SmrgThis response carries an event, reply, or error that has been encoded relative
4833ea1d6981Smrgto a message in the response delta cache. The <emphasis>
4834ea1d6981Smrgcache-index</emphasis>
4835ea1d6981Smrg field is the index into the cache. Each entry in <emphasis>
4836ea1d6981Smrgdiffs</emphasis>
4837ea1d6981Smrg provides a byte offset and replacement value to use in reconstructing the
4838ea1d6981Smrgresponse.
4839ea1d6981Smrg</para>
4840ea1d6981Smrg
4841ea1d6981Smrg
4842ea1d6981Smrg<para>
4843ea1d6981SmrgThe encoding for this event is on <ulink url="lbx.htm#17100">See
4844ea1d6981SmrgLbxDeltaResponse</ulink>.
4845ea1d6981Smrg</para>
4846ea1d6981Smrg
4847ea1d6981Smrg
4848ea1d6981Smrg</sect2>
4849ea1d6981Smrg</sect1>
4850ea1d6981Smrg<sect1 id='algorithm_naming'>
4851ea1d6981Smrg<title>Algorithm Naming</title>
4852ea1d6981Smrg
4853ea1d6981Smrg<para>
4854ea1d6981SmrgTo avoid potential clashes between different but similar algorithms for stream,
4855ea1d6981Smrgbitmap, and pixmap compression, the following naming scheme will be adhered to:
4856ea1d6981Smrg</para>
4857ea1d6981Smrg
4858ea1d6981Smrg
4859ea1d6981Smrg<para>
4860ea1d6981SmrgEach algorithm has a unique name, which is a STRING8, of the following form:
4861ea1d6981Smrg</para>
4862ea1d6981Smrg
4863ea1d6981Smrg
4864ea1d6981Smrg<para>
4865ea1d6981Smrg   &lt;organization&gt;-&lt;some-descriptive-name&gt;
4866ea1d6981Smrg</para>
4867ea1d6981Smrg
4868ea1d6981Smrg
4869ea1d6981Smrg<para>
4870ea1d6981SmrgThe organization field above is the organization name as registered in section
4871ea1d6981Smrg1 of the X Registry (the registry is provided as a free service by the X
4872ea1d6981SmrgConsortium.) This prevents conflicts among different vendor’s extensions.
4873ea1d6981Smrg</para>
4874ea1d6981Smrg
4875ea1d6981Smrg
4876ea1d6981Smrg<para>
4877ea1d6981SmrgAs an example, the X Consortium defines a zlib-based stream compression
4878ea1d6981Smrgalgorithm called XC-ZLIB.
4879ea1d6981Smrg</para>
4880ea1d6981Smrg
4881ea1d6981Smrg
4882ea1d6981Smrg</sect1>
4883ea1d6981Smrg<sect1 id='encoding'>
4884ea1d6981Smrg<title>Encoding</title>
4885ea1d6981Smrg
4886ea1d6981Smrg<para>
4887ea1d6981SmrgThe syntax and types used in the encoding are taken from the X protocol
4888ea1d6981Smrgencoding. Where LBX defines new types, they are defined earlier in this
4889ea1d6981Smrgdocument.
4890ea1d6981Smrg</para>
4891ea1d6981Smrg
4892ea1d6981Smrg
4893ea1d6981Smrg<para>
4894ea1d6981SmrgAs in the X protocol, in various cases, the number of bytes occupied by a
4895ea1d6981Smrgcomponent will be specified by a lowercase single-letter variable name instead
4896ea1d6981Smrgof a specific numeric value, and often some other component will have its value
4897ea1d6981Smrgspecified as a simple numeric expression involving these variables. Components
4898ea1d6981Smrgspecified with such expressions are always interpreted as unsigned integers.
4899ea1d6981SmrgThe scope of such variables is always just the enclosing request, reply, error,
4900ea1d6981Smrgevent, or compound type structure.
4901ea1d6981Smrg</para>
4902ea1d6981Smrg
4903ea1d6981Smrg
4904ea1d6981Smrg<para>
4905ea1d6981SmrgFor unused bytes, the encode-form is:
4906ea1d6981Smrg</para>
4907ea1d6981Smrg
4908ea1d6981Smrg<literallayout>
4909ea1d6981SmrgN            unused
4910ea1d6981Smrg</literallayout>
4911ea1d6981Smrg
4912ea1d6981Smrg<para>
4913ea1d6981SmrgIf the number of unused bytes is variable, the encode-form typically is:
4914ea1d6981Smrg</para>
4915ea1d6981Smrg
4916ea1d6981Smrg<literallayout>
4917ea1d6981Smrgp            unused, p=pad(E)
4918ea1d6981Smrg</literallayout>
4919ea1d6981Smrg
4920ea1d6981Smrg<para>
4921ea1d6981Smrgwhere E is some expression, and pad(E) is the number of bytes needed to round E
4922ea1d6981Smrgup to a multiple of four.
4923ea1d6981Smrg</para>
4924ea1d6981Smrg
4925ea1d6981Smrg
4926ea1d6981Smrg<para>
4927ea1d6981Smrgpad(E) = (4 - (E mod 4)) mod 4
4928ea1d6981Smrg</para>
4929ea1d6981Smrg
4930ea1d6981Smrg
4931ea1d6981Smrg<para>
4932ea1d6981SmrgIn many of the encodings, the length depends on many variable length fields.
4933ea1d6981SmrgThe variable L is used to indicate the number of padded 4 byte units needed to
4934ea1d6981Smrgcarry the request. Similarly, the variable Lpad indicates the number of bytes
4935ea1d6981Smrgneeded to pad the request to a 4 byte boundary.
4936ea1d6981Smrg</para>
4937ea1d6981Smrg
4938ea1d6981Smrg<literallayout>
4939ea1d6981SmrgFor counted lists there is a common encoding of NLISTofFOO:
4940ea1d6981Smrg</literallayout>
4941ea1d6981Smrg
4942ea1d6981Smrg<literallayout class='monospaced'>
4943ea1d6981Smrg<emphasis role='bold'>NLISTofFOO</emphasis>
4944ea1d6981Smrg1      m      num items
4945ea1d6981Smrgm      LISTofFOO      items
4946ea1d6981Smrg</literallayout>
4947ea1d6981Smrg
4948ea1d6981Smrg<para>
4949ea1d6981SmrgFor cached GC and Drawables:
4950ea1d6981Smrg</para>
4951ea1d6981Smrg
4952ea1d6981Smrg<literallayout>
4953ea1d6981Smrg<emphasis role='bold'>LBXGCANDDRAWUPDATE</emphasis>
4954ea1d6981Smrg4 or 0      DRAWBLE      optional drawable
4955ea1d6981Smrg4 or 0      GC           optional GC
4956ea1d6981Smrg</literallayout>
4957ea1d6981Smrg
4958ea1d6981Smrg
4959ea1d6981Smrg
4960ea1d6981Smrg<literallayout>
4961ea1d6981Smrg<emphasis role='bold'>LBXGCANDDRAWABLE</emphasis>
4962ea1d6981Smrg8      LBXGCANDDRAWENT      cache-entries
4963ea1d6981Smrg8                           unused
4964ea1d6981Smrgm      LBXGCANDDRAWUPDATE   optional GC and Drawable
4965ea1d6981Smrg</literallayout>
4966ea1d6981Smrg
4967ea1d6981Smrg
4968ea1d6981Smrg<sect2 id='errors2'>
4969ea1d6981Smrg<title>Errors</title>
4970ea1d6981Smrg
4971ea1d6981Smrg<literallayout class='monospaced'>
4972ea1d6981Smrg<emphasis role='bold'>LbxClient</emphasis>
4973ea1d6981Smrg1      0          Error
4974ea1d6981Smrg1      CARD8      error-base + 0
4975ea1d6981Smrg2      CARD16     sequence number
4976ea1d6981Smrg4                 unused
4977ea1d6981Smrg2      CARD16     lbx opcode
4978ea1d6981Smrg1      CARD8      major opcode
4979ea1d6981Smrg21                unused
4980ea1d6981Smrg</literallayout>
4981ea1d6981Smrg
4982ea1d6981Smrg</sect2>
4983ea1d6981Smrg<sect2 id='requests2'>
4984ea1d6981Smrg<title>Requests</title>
4985ea1d6981Smrg
4986ea1d6981Smrg<literallayout class='monospaced'>
4987ea1d6981Smrg<emphasis role='bold'>LbxQueryVersion</emphasis>
4988ea1d6981Smrg1      CARD8      opcode
4989ea1d6981Smrg1      0          lbx opcode
4990ea1d6981Smrg2      1          request length
4991ea1d6981Smrg=&gt;
4992ea1d6981Smrg1      1          Reply
4993ea1d6981Smrg1                 unused
4994ea1d6981Smrg2      CARD16     sequence number
4995ea1d6981Smrg4      0          reply length
4996ea1d6981Smrg2      CARD16     major version
4997ea1d6981Smrg2      CARD16     minor version
4998ea1d6981Smrg20                unused
4999ea1d6981Smrg</literallayout>
5000ea1d6981Smrg
5001ea1d6981Smrg<para>
5002ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#18761">See
5003ea1d6981SmrgLbxQueryVersion</ulink>.
5004ea1d6981Smrg</para>
5005ea1d6981Smrg
5006ea1d6981Smrg
5007ea1d6981Smrg<literallayout class='monospaced'>
5008ea1d6981Smrg<emphasis role='bold'>LbxStartProxy</emphasis>
5009ea1d6981Smrg1      CARD8                      opcode
5010ea1d6981Smrg1      1                          lbx opcode
5011ea1d6981Smrg2      L                          request length
5012ea1d6981Smrgn      NLISTofOPTION-REQUEST      options
5013ea1d6981Smrgp                                 unused, p=pad(n)
5014ea1d6981Smrg
5015ea1d6981Smrg<emphasis role='bold'>OPTION-REQUEST</emphasis>
5016ea1d6981Smrg1      OPTCODE                    option-code
5017ea1d6981Smrgm      OPTLEN                     option-request-byte-length, (b=m+a+1)
5018ea1d6981Smrga      DELTAOPT or                option
5019ea1d6981Smrg       NLISTofNAMEDOPT or
5020ea1d6981Smrg       NLISTofSTR or
5021ea1d6981Smrg       NLISTofPIXMAPMETHOD or
5022ea1d6981Smrg       BOOL
5023ea1d6981Smrg</literallayout>
5024ea1d6981Smrg
5025ea1d6981Smrg<para>
5026ea1d6981SmrgThe encoding of the option field depends on the option-code.
5027ea1d6981SmrgSee <ulink url="lbx.htm#35444">See StartProxy Options</ulink>.
5028ea1d6981Smrg</para>
5029ea1d6981Smrg
5030ea1d6981Smrg<literallayout class='monospaced'>
5031ea1d6981Smrg1      OPTCODE                               option-code
5032ea1d6981Smrg0      LbxOptionDeltaProxy
5033ea1d6981Smrg1      LbxOptionDeltaServer
5034ea1d6981Smrg2      LbxOptionStreamCompression
5035ea1d6981Smrg3      LbxOptionBitmapCompression
5036ea1d6981Smrg4      LbxOptionPixmapCompression
5037ea1d6981Smrg5      LbxOptionMessageCompression              /* also known as squishing */
5038ea1d6981Smrg6      LbxOptionUseTags
5039ea1d6981Smrg7      LbxOptionColormapAllocation
5040ea1d6981Smrg255    LbxOptionExtension
5041ea1d6981Smrg</literallayout>
5042ea1d6981Smrg
5043ea1d6981Smrg<para>
5044ea1d6981SmrgOPTLEN has two possible encodings, depending on the size of the value carried:
5045ea1d6981Smrg</para>
5046ea1d6981Smrg
5047ea1d6981Smrg<literallayout class='monospaced'>
5048ea1d6981Smrg<emphasis role='bold'>OPTLEN</emphasis>
5049ea1d6981Smrg1      CARD8              b (0 &lt; b &lt;= 255)
5050ea1d6981Smrg
5051ea1d6981Smrg<emphasis role='bold'>OPTLEN</emphasis>
5052ea1d6981Smrg1      0                  long length header
5053ea1d6981Smrg1      c                  length0, c = b &gt;&gt; 8
5054ea1d6981Smrg1      d                  length1, d= b &amp; #xff
5055ea1d6981Smrg
5056ea1d6981Smrg<emphasis role='bold'>DELTAOPT</emphasis>
5057ea1d6981Smrg1      CARD8      min-cache-size
5058ea1d6981Smrg1      CARD8      max-cache-size
5059ea1d6981Smrg1      CARD8      preferred-cache-size
5060ea1d6981Smrg1      CARD8      min-message-length
5061ea1d6981Smrg1      CARD8      max-message-length (in 4-byte units)
5062ea1d6981Smrg1      CARD8      preferred-message-length
5063ea1d6981Smrg
5064ea1d6981Smrg<emphasis role='bold'>NAMEDOPT</emphasis>
5065ea1d6981Smrgf      STR             type-name
5066ea1d6981Smrg1      g+1             option-data-length
5067ea1d6981Smrgg      LISTofBYTE      option-data (option specific)
5068ea1d6981Smrg
5069ea1d6981Smrg<emphasis role='bold'>PIXMAPMETHOD</emphasis>
5070ea1d6981Smrgh      STR              name
5071ea1d6981Smrg1      BITMASK          format mask
5072ea1d6981Smrg1      j                depth count
5073ea1d6981Smrgj      LISTofCARD8      depths
5074ea1d6981Smrg
5075ea1d6981Smrg=&gt;
5076ea1d6981Smrg=&gt;
5077ea1d6981Smrg
5078ea1d6981Smrg1      1                 Reply
5079ea1d6981Smrg1      CARD8             count
5080ea1d6981Smrg
5081ea1d6981Smrg0xff      options in request cannot be decoded
5082ea1d6981Smrg2      CARD16            sequence number
5083ea1d6981Smrg4      (a+p-32)/4        reply length
5084ea1d6981Smrga      LISTofCHOICE      options-reply
5085ea1d6981Smrgp            unused, if (n&lt;24) p=24-n else p=pad(n)
5086ea1d6981Smrg
5087ea1d6981Smrg<emphasis role='bold'>CHOICE</emphasis>
5088ea1d6981Smrg1      CARD8                request-option-index
5089ea1d6981Smrgb      OPTLEN               reply-option-byte-length
5090ea1d6981Smrgc      DELTACHOICE or       choice
5091ea1d6981Smrg      INDEXEDCHOICE or
5092ea1d6981Smrg      NLISTofINDEXEDOPT or
5093ea1d6981Smrg      NLISTofPIXMAPCHOICE or
5094ea1d6981Smrg      BOOL or
5095ea1d6981Smrg      INDEXEDCHOICE
5096ea1d6981Smrg</literallayout>
5097ea1d6981Smrg
5098ea1d6981Smrg<para>
5099ea1d6981SmrgThe encoding of the choice field depends on the option-code. See <ulink
5100ea1d6981Smrgurl="lbx.htm#35444">See StartProxy Options</ulink>.
5101ea1d6981Smrg</para>
5102ea1d6981Smrg
5103ea1d6981Smrg<literallayout class='monospaced'>
5104ea1d6981Smrg<emphasis role='bold'>DELTACHOICE</emphasis>
5105ea1d6981Smrg1      CARD8      preferred cache size
5106ea1d6981Smrg1      CARD8      preferred message length in 4-byte units
5107ea1d6981Smrg
5108ea1d6981Smrg<emphasis role='bold'>INDEXEDCHOICE</emphasis>
5109ea1d6981Smrg1      CARD8           index
5110ea1d6981Smrgd      LISTofBYTE      data
5111ea1d6981Smrg
5112ea1d6981Smrg<emphasis role='bold'>PIXMAPCHOICE</emphasis>
5113ea1d6981Smrg1      CARD8           index
5114ea1d6981Smrg1      CARD8           opcode
5115ea1d6981Smrg1      BITMASK         format mask
5116ea1d6981Smrge      NLISTofCARD8    depths
5117ea1d6981Smrg</literallayout>
5118ea1d6981Smrg
5119ea1d6981Smrg<para>
5120ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#20870">See
5121ea1d6981SmrgLbxStartProxy</ulink>.
5122ea1d6981Smrg</para>
5123ea1d6981Smrg
5124ea1d6981Smrg
5125ea1d6981Smrg<literallayout class='monospaced'>
5126ea1d6981Smrg<emphasis role='bold'>LbxStopProxy</emphasis>
5127ea1d6981Smrg1      CARD8      opcode
5128ea1d6981Smrg1      2          lbx opcode
5129ea1d6981Smrg2      1          request length
5130ea1d6981Smrg</literallayout>
5131ea1d6981Smrg
5132ea1d6981Smrg<para>
5133ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#27455">See
5134ea1d6981SmrgLbxStopProxy</ulink>.
5135ea1d6981Smrg</para>
5136ea1d6981Smrg
5137ea1d6981Smrg
5138ea1d6981Smrg<literallayout class='monospaced'>
5139ea1d6981Smrg<emphasis role='bold'>LbxSwitch</emphasis>
5140ea1d6981Smrg1      CARD8      opcode
5141ea1d6981Smrg1      3          lbx opcode
5142ea1d6981Smrg2      2          request length
5143ea1d6981Smrg4      CARD32     client
5144ea1d6981Smrg</literallayout>
5145ea1d6981Smrg
5146ea1d6981Smrg<para>
5147ea1d6981SmrgThe description of this request is on
5148ea1d6981Smrg<ulink url="lbx.htm#33500">See LbxSwitch</ulink>.
5149ea1d6981Smrg</para>
5150ea1d6981Smrg
5151ea1d6981Smrg
5152ea1d6981Smrg<literallayout class='monospaced'>
5153ea1d6981Smrg<emphasis role='bold'>LbxNewClient</emphasis>
5154ea1d6981Smrg1      CARD8      opcode
5155ea1d6981Smrg1      4          lbx opcode
5156ea1d6981Smrg2      L          request length
5157ea1d6981Smrg4      CARD32     client
5158ea1d6981SmrgThe remaining bytes of the request are the core connection setup.
5159ea1d6981Smrg=&gt;
5160ea1d6981SmrgIf the connection is rejected, a core connection reply is sent. Otherwise the
5161ea1d6981Smrgreply has the form:
5162ea1d6981Smrg1      BOOL      success
5163ea1d6981Smrg1                change type
5164ea1d6981Smrg      0          no-deltas
5165ea1d6981Smrg      1          normal-client-deltas
5166ea1d6981Smrg      2          app-group-deltas
5167ea1d6981Smrg2      CARD16    major version
5168ea1d6981Smrg2      CARD16    minor version
5169ea1d6981Smrg2      1 + a     length
5170ea1d6981Smrg4      CARD32    tag id
5171ea1d6981Smrg</literallayout>
5172ea1d6981Smrg
5173ea1d6981Smrg<para>
5174ea1d6981SmrgThe remaining bytes depend on the value of change-type and length.
5175ea1d6981Smrg</para>
5176ea1d6981Smrg
5177ea1d6981Smrg<para>
5178ea1d6981SmrgFor no-deltas, the remaining bytes are the &quot;additional data&quot;
5179ea1d6981Smrgbytes of the core reply. (a = length of core reply, in 4 byte quantities).
5180ea1d6981Smrg</para>
5181ea1d6981Smrg
5182ea1d6981Smrg<para>
5183ea1d6981SmrgFor normal-client-deltas, the additional bytes have the form, with a length (a
5184ea1d6981Smrg= 1 +b):
5185ea1d6981Smrg</para>
5186ea1d6981Smrg
5187ea1d6981Smrg<literallayout class='monospaced'>
5188ea1d6981Smrg4      CARD32                 resource id base
5189ea1d6981Smrg4b      LISTofSETofEVENT      root input masks
5190ea1d6981Smrg</literallayout>
5191ea1d6981Smrg
5192ea1d6981Smrg<para>
5193ea1d6981SmrgFor app-group-deltas, the additional bytes have the following form, with a
5194ea1d6981Smrglength of (a = 1 + 4c):
5195ea1d6981Smrg</para>
5196ea1d6981Smrg
5197ea1d6981Smrg<literallayout class='monospaced'>
5198ea1d6981Smrg4      CARD32                resource id base
5199ea1d6981Smrg4      WINDOW                root id base
5200ea1d6981Smrg4      VISUALID              visual
5201ea1d6981Smrg4      COLORMAP              colormap
5202ea1d6981Smrg4      CARD32                white pixel
5203ea1d6981Smrg4      CARD32                black pixel
5204ea1d6981Smrg4c     LISTofSETofEVENT      root input masks
5205ea1d6981Smrg</literallayout>
5206ea1d6981Smrg
5207ea1d6981Smrg<para>
5208ea1d6981SmrgThe description of this request is on
5209ea1d6981Smrg<ulink url="lbx.htm#17810">See LbxNewClient</ulink>.
5210ea1d6981Smrg</para>
5211ea1d6981Smrg
5212ea1d6981Smrg
5213ea1d6981Smrg<literallayout class='monospaced'>
5214ea1d6981Smrg<emphasis role='bold'>LbxCloseClient</emphasis>
5215ea1d6981Smrg1      CARD8      opcode
5216ea1d6981Smrg1      5          lbx opcode
5217ea1d6981Smrg2      2          request length
5218ea1d6981Smrg4      CARD32     client
5219ea1d6981Smrg</literallayout>
5220ea1d6981Smrg
5221ea1d6981Smrg<para>
5222ea1d6981SmrgThe description of this request is on
5223ea1d6981Smrg<ulink url="lbx.htm#21625">See LbxCloseClient</ulink>.
5224ea1d6981Smrg</para>
5225ea1d6981Smrg
5226ea1d6981Smrg
5227ea1d6981Smrg<literallayout class='monospaced'>
5228ea1d6981Smrg<emphasis role='bold'>LbxModifySequence</emphasis>
5229ea1d6981Smrg1      CARD8      opcode
5230ea1d6981Smrg1      6          lbx opcode
5231ea1d6981Smrg2      2          request length
5232ea1d6981Smrg4      CARD32     offset to sequence number
5233ea1d6981Smrg</literallayout>
5234ea1d6981Smrg
5235ea1d6981Smrg<para>
5236ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#36693">See
5237ea1d6981SmrgLbxModifySequence</ulink>.
5238ea1d6981Smrg</para>
5239ea1d6981Smrg
5240ea1d6981Smrg
5241ea1d6981Smrg<literallayout class='monospaced'>
5242ea1d6981Smrg<emphasis role='bold'>LbxAllowMotion</emphasis>
5243ea1d6981Smrg1      CARD8      opcode
5244ea1d6981Smrg1      7          lbx opcode
5245ea1d6981Smrg2      2          request length
5246ea1d6981Smrg4      CARD32     number of MotionNotify events
5247ea1d6981Smrg</literallayout>
5248ea1d6981Smrg
5249ea1d6981Smrg<para>
5250ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#15895">See
5251ea1d6981SmrgLbxAllowMotion</ulink>.
5252ea1d6981Smrg</para>
5253ea1d6981Smrg
5254ea1d6981Smrg
5255ea1d6981Smrg<literallayout class='monospaced'>
5256ea1d6981Smrg<emphasis role='bold'>LbxIncrementPixel</emphasis>
5257ea1d6981Smrg1      CARD8      opcode
5258ea1d6981Smrg1      8          lbx opcode
5259ea1d6981Smrg2      3          request length
5260ea1d6981Smrg4      COLORMAP   colormap
5261ea1d6981Smrg4      CARD32      pixel
5262ea1d6981Smrg</literallayout>
5263ea1d6981Smrg
5264ea1d6981Smrg<para>
5265ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#27227">See
5266ea1d6981SmrgLbxIncrementPixel</ulink>.
5267ea1d6981Smrg</para>
5268ea1d6981Smrg
5269ea1d6981Smrg
5270ea1d6981Smrg<literallayout class='monospaced'>
5271ea1d6981Smrg<emphasis role='bold'>LbxDelta</emphasis>
5272ea1d6981Smrg1      CARD8              opcode
5273ea1d6981Smrg1      9                  lbx opcode
5274ea1d6981Smrg2      1+(2n +p+2)/4      request length
5275ea1d6981Smrg1      n                  count of diffs
5276ea1d6981Smrg1      CARD8              cache index
5277ea1d6981Smrg2n      LISTofDIFFITEM    offsets and differences
5278ea1d6981Smrgp                         unused, p=pad(2n + 2)
5279ea1d6981Smrg</literallayout>
5280ea1d6981Smrg
5281ea1d6981Smrg<para>
5282ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#26857">See
5283ea1d6981SmrgLbxDelta</ulink>.
5284ea1d6981Smrg</para>
5285ea1d6981Smrg
5286ea1d6981Smrg
5287ea1d6981Smrg<literallayout class='monospaced'>
5288ea1d6981Smrg<emphasis role='bold'>LbxGetModifierMapping</emphasis>
5289ea1d6981Smrg1      CARD8      opcode
5290ea1d6981Smrg1      10         lbx opcode
5291ea1d6981Smrg2      1          request length
5292ea1d6981Smrg=&gt;
5293ea1d6981Smrg1      1          Reply
5294ea1d6981Smrg1      n          keycodes-per-modifier
5295ea1d6981Smrg2      CARD16     sequence number
5296ea1d6981Smrg4      2n         reply length
5297ea1d6981Smrg4      CARD32     tag
5298ea1d6981Smrg20                unused
5299ea1d6981Smrg8n     LISTofKEYCODE      keycodes
5300ea1d6981Smrg</literallayout>
5301ea1d6981Smrg
5302ea1d6981Smrg<para>
5303ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#37687">See
5304ea1d6981SmrgLbxGetModifierMapping</ulink>.
5305ea1d6981Smrg</para>
5306ea1d6981Smrg
5307ea1d6981Smrg
5308ea1d6981Smrg<literallayout class='monospaced'>
5309ea1d6981Smrg<emphasis role='bold'>LbxInvalidateTag</emphasis>
5310ea1d6981Smrg1      CARD8      opcode
5311ea1d6981Smrg1      12         lbx opcode
5312ea1d6981Smrg2      2          request length
5313ea1d6981Smrg4      CARD32     tag
5314ea1d6981Smrg</literallayout>
5315ea1d6981Smrg
5316ea1d6981Smrg<para>
5317ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#12515">See
5318ea1d6981SmrgLbxInvalidateTag</ulink>.
5319ea1d6981Smrg</para>
5320ea1d6981Smrg
5321ea1d6981Smrg
5322ea1d6981Smrg<literallayout class='monospaced'>
5323ea1d6981Smrg<emphasis role='bold'>LbxPolyPoint</emphasis>
5324ea1d6981Smrg1      CARD8      opcode
5325ea1d6981Smrg1      13      lbx opcode
5326ea1d6981Smrg2      1+(m+n+p)/4      request length
5327ea1d6981Smrgm      LBXGCANDDRAWABLE      cache entries
5328ea1d6981Smrgn      LISTofLBXPOINT      points (n is data-dependent)
5329ea1d6981Smrgp      0      unused, p=Lpad
5330ea1d6981Smrg</literallayout>
5331ea1d6981Smrg
5332ea1d6981Smrg<para>
5333ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#37179">See
5334ea1d6981SmrgLbxPolyPoint</ulink>.
5335ea1d6981Smrg</para>
5336ea1d6981Smrg
5337ea1d6981Smrg
5338ea1d6981Smrg<literallayout class='monospaced'>
5339ea1d6981Smrg<emphasis role='bold'>LbxPolyLine</emphasis>
5340ea1d6981Smrg1      CARD8      opcode
5341ea1d6981Smrg1      14      lbx opcode
5342ea1d6981Smrg2      1+(m+n+p)/4      request length
5343ea1d6981Smrgm      LBXGCANDDRAWABLE      cache entries
5344ea1d6981Smrgn      LISTofLBXPOINT      points (n is data-dependent)
5345ea1d6981Smrgp      0      unused, p=Lpad
5346ea1d6981Smrg</literallayout>
5347ea1d6981Smrg
5348ea1d6981Smrg<para>
5349ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#16574">See
5350ea1d6981SmrgLbxPolyLine</ulink>.
5351ea1d6981Smrg</para>
5352ea1d6981Smrg
5353ea1d6981Smrg
5354ea1d6981Smrg<literallayout class='monospaced'>
5355ea1d6981Smrg<emphasis role='bold'>LbxPolySegment</emphasis>
5356ea1d6981Smrg1      CARD8      opcode
5357ea1d6981Smrg1      15      lbx opcode
5358ea1d6981Smrg2      1+(m+n+p)/4      request length
5359ea1d6981Smrgm      LBXGCANDDRAWABLE      cache entries
5360ea1d6981Smrgn      LISTofLBXSEGMENT      segments (n is data-dependent)
5361ea1d6981Smrgp      0      unused, p=Lpad
5362ea1d6981Smrg</literallayout>
5363ea1d6981Smrg
5364ea1d6981Smrg<para>
5365ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#26077">See
5366ea1d6981SmrgLbxPolySegment</ulink>.
5367ea1d6981Smrg</para>
5368ea1d6981Smrg
5369ea1d6981Smrg
5370ea1d6981Smrg<literallayout class='monospaced'>
5371ea1d6981Smrg<emphasis role='bold'>LbxPolyRectangle</emphasis>
5372ea1d6981Smrg1      CARD8      opcode
5373ea1d6981Smrg1      16      lbx opcode
5374ea1d6981Smrg2      1+(m+n+p)/4      request length
5375ea1d6981Smrgm      LBXGCANDDRAWABLE      cache entries
5376ea1d6981Smrgn      LISTofLBXRECTANGLE      rectangles (n is data-dependent)
5377ea1d6981Smrgp      0      unused, p=pad(m+n)
5378ea1d6981Smrg</literallayout>
5379ea1d6981Smrg
5380ea1d6981Smrg<para>
5381ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#40958">See
5382ea1d6981SmrgLbxPolyRectangle</ulink>.
5383ea1d6981Smrg</para>
5384ea1d6981Smrg
5385ea1d6981Smrg
5386ea1d6981Smrg<literallayout class='monospaced'>
5387ea1d6981Smrg<emphasis role='bold'>LbxPolyArc</emphasis>
5388ea1d6981Smrg1      CARD8      opcode
5389ea1d6981Smrg1      17      lbx opcode
5390ea1d6981Smrg2      1+(m+n+p)/4      request length
5391ea1d6981Smrgm      LBXGCANDDRAWABLE      cache entries
5392ea1d6981Smrgn      LISTofLBXARCS      arcs (n is data-dependent)
5393ea1d6981Smrgp      0      unused, p=Lpad
5394ea1d6981Smrg</literallayout>
5395ea1d6981Smrg
5396ea1d6981Smrg<para>
5397ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#15317">See
5398ea1d6981SmrgLbxPolyArc</ulink>.
5399ea1d6981Smrg</para>
5400ea1d6981Smrg
5401ea1d6981Smrg
5402ea1d6981Smrg<literallayout class='monospaced'>
5403ea1d6981Smrg<emphasis role='bold'>LbxFillPoly</emphasis>
5404ea1d6981Smrg1      CARD8      opcode
5405ea1d6981Smrg1      18      lbx opcode
5406ea1d6981Smrg2      1+(3+m+n+p)/4      request length
5407ea1d6981Smrg1      LBXGCANDDRAWENT      cache entries
5408ea1d6981Smrg1            shape
5409ea1d6981Smrg0      Complex
5410ea1d6981Smrg1      Nonconvex
5411ea1d6981Smrg2      Convex
5412ea1d6981Smrg1      p      pad byte count
5413ea1d6981Smrgm      LBXGCANDDRAWUPDATE      optional gc and drawable
5414ea1d6981Smrgn      LISTofLBXPOINT      points (n is data-dependent)
5415ea1d6981Smrgp      0      unused, p=Lpad
5416ea1d6981Smrg</literallayout>
5417ea1d6981Smrg
5418ea1d6981Smrg<para>
5419ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#35796">See
5420ea1d6981SmrgLbxFillPoly</ulink>.
5421ea1d6981Smrg</para>
5422ea1d6981Smrg
5423ea1d6981Smrg
5424ea1d6981Smrg<literallayout class='monospaced'>
5425ea1d6981Smrg<emphasis role='bold'>LbxPolyFillRectangle</emphasis>
5426ea1d6981Smrg1      CARD8      opcode
5427ea1d6981Smrg1      19      lbx opcode
5428ea1d6981Smrg2      1+(m+n+p)/4      request length
5429ea1d6981Smrgm      LBXGCANDDRAWABLE      cache entries
5430ea1d6981Smrgn      LISTofLBXRECTANGLE      rectangles (n is data-dependent)
5431ea1d6981Smrgp      0      unused, p=Lpad
5432ea1d6981Smrg</literallayout>
5433ea1d6981Smrg
5434ea1d6981Smrg<para>
5435ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#25511">See
5436ea1d6981SmrgLbxPolyFillRectangle</ulink>.
5437ea1d6981Smrg</para>
5438ea1d6981Smrg
5439ea1d6981Smrg
5440ea1d6981Smrg<literallayout class='monospaced'>
5441ea1d6981Smrg<emphasis role='bold'>LbxPolyFillArc</emphasis>
5442ea1d6981Smrg1      CARD8      opcode
5443ea1d6981Smrg1      20      lbx opcode
5444ea1d6981Smrg2      1+(m+n+p)/4      request length
5445ea1d6981Smrgm      LBXGCANDDRAWABLE      cache entries
5446ea1d6981Smrgn      LISTofLBXARC      arcs (n is data-dependent)
5447ea1d6981Smrgp      0      unused, p=Lpad
5448ea1d6981Smrg</literallayout>
5449ea1d6981Smrg
5450ea1d6981Smrg<para>
5451ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#42698">See
5452ea1d6981SmrgLbxPolyFillArc</ulink>.
5453ea1d6981Smrg</para>
5454ea1d6981Smrg
5455ea1d6981Smrg
5456ea1d6981Smrg<literallayout class='monospaced'>
5457ea1d6981Smrg<emphasis role='bold'>LbxGetKeyboardMapping</emphasis>
5458ea1d6981Smrg1      CARD8      opcode
5459ea1d6981Smrg1      21      lbx opcode
5460ea1d6981Smrg2      2      request length
5461ea1d6981Smrg1      KEYCODE      first keycode
5462ea1d6981Smrg1      m      count
5463ea1d6981Smrg2            unused
5464ea1d6981Smrg=&gt;
5465ea1d6981Smrg1      1      Reply
5466ea1d6981Smrg1      n      keysyms-per-keycode
5467ea1d6981Smrg2      CARD16      sequence number
5468ea1d6981Smrg4      nm      reply length (m = count field from the request)
5469ea1d6981Smrg4      CARD32      tag
5470ea1d6981Smrg20            unused
5471ea1d6981Smrg4nm      LISTofKEYSYM      keysyms
5472ea1d6981Smrg</literallayout>
5473ea1d6981Smrg
5474ea1d6981Smrg<para>
5475ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#33719">See
5476ea1d6981SmrgLbxGetKeyboardMapping</ulink>.
5477ea1d6981Smrg</para>
5478ea1d6981Smrg
5479ea1d6981Smrg
5480ea1d6981Smrg<literallayout class='monospaced'>
5481ea1d6981Smrg<emphasis role='bold'>LbxQueryFont</emphasis>
5482ea1d6981Smrg1      CARD8      opcode
5483ea1d6981Smrg1      22      lbx opcode
5484ea1d6981Smrg2      2      request length
5485ea1d6981Smrg4      FONTABLE      font
5486ea1d6981Smrg=&gt;
5487ea1d6981Smrg1      1      Reply
5488ea1d6981Smrg1      BOOL      compression
5489ea1d6981Smrg2      CARD16      sequence number
5490ea1d6981Smrg4      L      reply length
5491ea1d6981Smrg4      CARD32      tag
5492ea1d6981Smrg20            unused
5493ea1d6981SmrgAll of the following is conditional:
5494ea1d6981Smrg12      CHARINFO      min-bounds
5495ea1d6981Smrg4            unused
5496ea1d6981Smrg12      CHARINFO      max-bounds
5497ea1d6981Smrg4            unused
5498ea1d6981Smrg2      CARD16      min-char-or-byte2
5499ea1d6981Smrg2      CARD16      max-char-or-byte2
5500ea1d6981Smrg2      CARD16      default-char
5501ea1d6981Smrg2      n      number of FONTPROPs in properties
5502ea1d6981Smrg1            draw-direction
5503ea1d6981Smrg0      <emphasis>LeftToRight</emphasis>
5504ea1d6981Smrg1      <emphasis>RightToLeft</emphasis>
5505ea1d6981Smrg1      CARD8      min-byte1
5506ea1d6981Smrg1      CARD8      max-byte1
5507ea1d6981Smrg1      BOOL      all-chars-exist
5508ea1d6981Smrg2      INT16      font-ascent
5509ea1d6981Smrg2      INT16      font-descent
5510ea1d6981Smrg4      m      number of elements in char-infos
5511ea1d6981Smrg8n      LISTofFONTPROP      properties
5512ea1d6981Smrgand either
5513ea1d6981Smrg12m      LISTofCHARINFO      char-infos
5514ea1d6981Smrgor
5515ea1d6981Smrgm      LISTofLBXCHARINFO      char-infos
5516ea1d6981Smrg</literallayout>
5517ea1d6981Smrg
5518ea1d6981Smrg<para>
5519ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#18818">See
5520ea1d6981SmrgLbxQueryFont</ulink>.
5521ea1d6981Smrg</para>
5522ea1d6981Smrg
5523ea1d6981Smrg
5524ea1d6981Smrg<literallayout class='monospaced'>
5525ea1d6981Smrg<emphasis role='bold'>LbxChangeProperty</emphasis>
5526ea1d6981Smrg1      CARD8      opcode
5527ea1d6981Smrg1      23      lbx opcode
5528ea1d6981Smrg2      6      request length
5529ea1d6981Smrg4      WINDOW      window
5530ea1d6981Smrg4      ATOM      property
5531ea1d6981Smrg4      ATOM      type
5532ea1d6981Smrg1      CARD8      format
5533ea1d6981Smrg1            mode
5534ea1d6981Smrg0      Replace
5535ea1d6981Smrg1      Preprend
5536ea1d6981Smrg2      Append
5537ea1d6981Smrg2            unused
5538ea1d6981Smrg4      CARD32      length of data in format units
5539ea1d6981Smrg            (= n for format = 8)
5540ea1d6981Smrg            (= n/2 for format = 16)
5541ea1d6981Smrg            (= n/4 for format = 32)
5542ea1d6981Smrg=&gt;
5543ea1d6981Smrg1      1      Reply
5544ea1d6981Smrg1            unused
5545ea1d6981Smrg2      CARD16      sequence number
5546ea1d6981Smrg4      0      reply length
5547ea1d6981Smrg4      CARD32      tag
5548ea1d6981Smrg20            unused
5549ea1d6981Smrg</literallayout>
5550ea1d6981Smrg
5551ea1d6981Smrg<para>
5552ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#40098">See
5553ea1d6981SmrgLbxChangeProperty</ulink>.
5554ea1d6981Smrg</para>
5555ea1d6981Smrg
5556ea1d6981Smrg
5557ea1d6981Smrg<literallayout class='monospaced'>
5558ea1d6981Smrg<emphasis role='bold'>LbxGetProperty</emphasis>
5559ea1d6981Smrg1      CARD8      opcode
5560ea1d6981Smrg1      24      lbx opcode
5561ea1d6981Smrg2      7      request length
5562ea1d6981Smrg4      WINDOW      window
5563ea1d6981Smrg4      ATOM      property
5564ea1d6981Smrg4      ATOM      type
5565ea1d6981Smrg0      AnyPropertyType
5566ea1d6981Smrg1      CARD8      delete
5567ea1d6981Smrg3            unused
5568ea1d6981Smrg4      CARD32      long-offset
5569ea1d6981Smrg4      CARD32      long-length
5570ea1d6981Smrg=&gt;
5571ea1d6981Smrg1      1      Reply
5572ea1d6981Smrg1      CARD8      format
5573ea1d6981Smrg2      CARD16      sequence number
5574ea1d6981Smrg4      CARD32      reply length
5575ea1d6981Smrg4      ATOM      type
5576ea1d6981Smrg0      None
5577ea1d6981Smrg4      CARD32      bytes-after
5578ea1d6981Smrg4      CARD32      length of value in format units
5579ea1d6981Smrg            (= 0 for format = 0)
5580ea1d6981Smrg            (= n for format = 8)
5581ea1d6981Smrg            (= n/2 for format = 16)
5582ea1d6981Smrg            (= n/4 for format = 32)
5583ea1d6981Smrg4      CARD32      tag
5584ea1d6981Smrg8            unused
5585ea1d6981Smrg</literallayout>
5586ea1d6981Smrg
5587ea1d6981Smrg<para>
5588ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#31397">See
5589ea1d6981SmrgLbxGetProperty</ulink>.
5590ea1d6981Smrg</para>
5591ea1d6981Smrg
5592ea1d6981Smrg
5593ea1d6981Smrg<literallayout class='monospaced'>
5594ea1d6981Smrg<emphasis role='bold'>LbxTagData</emphasis>
5595ea1d6981Smrg1      CARD8      opcode
5596ea1d6981Smrg1      25      lbx opcode
5597ea1d6981Smrg2      3+(n+p)/4      request length
5598ea1d6981Smrg4      CARD32      tag
5599ea1d6981Smrg4      CARD32      length of data in bytes
5600ea1d6981Smrgn      LISTofBYTE      data
5601ea1d6981Smrgp            unused, p=pad(n)
5602ea1d6981Smrg</literallayout>
5603ea1d6981Smrg
5604ea1d6981Smrg<para>
5605ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#17987">See
5606ea1d6981SmrgLbxTagData</ulink>.
5607ea1d6981Smrg</para>
5608ea1d6981Smrg
5609ea1d6981Smrg
5610ea1d6981Smrg<literallayout class='monospaced'>
5611ea1d6981Smrg<emphasis role='bold'>LbxCopyArea</emphasis>
5612ea1d6981Smrg1      CARD8      opcode
5613ea1d6981Smrg1      26      lbx opcode
5614ea1d6981Smrg2      L      request length
5615ea1d6981Smrg1      CARD8      source drawable cache entry
5616ea1d6981Smrg1      LBXGCANDDRAWENT      cache entries
5617ea1d6981Smrg4 or 0      DRAWABLE      optional source drawable
5618ea1d6981Smrgb      LBXGCANDDRAWUPDATE      optional gc and dest drawable
5619ea1d6981Smrgc      LBXPINT16      src-x
5620ea1d6981Smrgd      LBXPINT16      src-y
5621ea1d6981Smrge      LBXPINT16      dst-x
5622ea1d6981Smrgf      LBXPINT16      dst-y
5623ea1d6981Smrgg      LBXCARD16      width
5624ea1d6981Smrgh      LBXCARD16      height
5625ea1d6981Smrgp            unused, p=Lpad
5626ea1d6981Smrg</literallayout>
5627ea1d6981Smrg
5628ea1d6981Smrg<para>
5629ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#11409">See
5630ea1d6981SmrgLbxCopyArea</ulink>.
5631ea1d6981Smrg</para>
5632ea1d6981Smrg
5633ea1d6981Smrg
5634ea1d6981Smrg<literallayout class='monospaced'>
5635ea1d6981Smrg<emphasis role='bold'>LbxCopyPlane</emphasis>
5636ea1d6981Smrg1      CARD8      opcode
5637ea1d6981Smrg1      27      lbx opcode
5638ea1d6981Smrg2      L      request length
5639ea1d6981Smrg4      CARD32      bit plane
5640ea1d6981Smrg1      CARD8      source drawable cache entry
5641ea1d6981Smrg1      LBXGCANDDRAWENT      cache entries
5642ea1d6981Smrg4 or 0      DRAWABLE      optional source drawable
5643ea1d6981Smrgb      LBXGCANDDRAWUPDATE      optional gc and dest drawable
5644ea1d6981Smrgc      LBXPINT16      src-x
5645ea1d6981Smrgd      LBXPINT16      src-y
5646ea1d6981Smrge      LBXPINT16      dst-x
5647ea1d6981Smrgf      LBXPINT16      dst-y
5648ea1d6981Smrgg      LBXCARD16      width
5649ea1d6981Smrgh      LBXCARD16      height
5650ea1d6981Smrgp            unused, p=Lpad
5651ea1d6981Smrg</literallayout>
5652ea1d6981Smrg
5653ea1d6981Smrg<para>
5654ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#36772">See
5655ea1d6981SmrgLbxCopyPlane</ulink>.
5656ea1d6981Smrg</para>
5657ea1d6981Smrg
5658ea1d6981Smrg
5659ea1d6981Smrg<literallayout class='monospaced'>
5660ea1d6981Smrg<emphasis role='bold'>LbxPolyText8</emphasis>
5661ea1d6981Smrg1      CARD8      opcode
5662ea1d6981Smrg1      28      lbx opcode
5663ea1d6981Smrg2      L      request length
5664ea1d6981Smrg1      LBXGCANDDRAWENT      cache entries
5665ea1d6981Smrga      LBXGCANDDRAWUPDATE      optional gc and drawable
5666ea1d6981Smrgb      LBXPINT16      x
5667ea1d6981Smrgc      LBXPINT16      y
5668ea1d6981Smrgn      LISTofTEXTITEM8      items
5669ea1d6981Smrgp            unused, p=Lpad
5670ea1d6981Smrg</literallayout>
5671ea1d6981Smrg
5672ea1d6981Smrg<para>
5673ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#23201">See
5674ea1d6981SmrgLbxPolyText8</ulink>.
5675ea1d6981Smrg</para>
5676ea1d6981Smrg
5677ea1d6981Smrg
5678ea1d6981Smrg<literallayout class='monospaced'>
5679ea1d6981Smrg<emphasis role='bold'>LbxPolyText16</emphasis>
5680ea1d6981Smrg1      CARD8      opcode
5681ea1d6981Smrg1      29      lbx opcode
5682ea1d6981Smrg2      L      request length
5683ea1d6981Smrg1      LBXGCANDDRAWENT      cache entries
5684ea1d6981Smrga      LBXGCANDDRAWUPDATE      optional gc and drawable
5685ea1d6981Smrgb      LBXPINT16      x
5686ea1d6981Smrgc      LBXPINT16      y
5687ea1d6981Smrg2n      LISTofTEXTITEM16      items
5688ea1d6981Smrgp            unused, p=Lpad
5689ea1d6981Smrg</literallayout>
5690ea1d6981Smrg
5691ea1d6981Smrg<para>
5692ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#13228">See
5693ea1d6981SmrgLbxPolyText16</ulink>.
5694ea1d6981Smrg</para>
5695ea1d6981Smrg
5696ea1d6981Smrg
5697ea1d6981Smrg<literallayout class='monospaced'>
5698ea1d6981Smrg<emphasis role='bold'>LbxImageText8</emphasis>
5699ea1d6981Smrg1      CARD8      opcode
5700ea1d6981Smrg1      30      lbx opcode
5701ea1d6981Smrg2      L      request length
5702ea1d6981Smrg1      LBXGCANDDRAWENT      cache entries
5703ea1d6981Smrga      LBXGCANDDRAWUPDATE      optional gc and drawable
5704ea1d6981Smrgb      LBXPINT16      x
5705ea1d6981Smrgc      LBXPINT16      y
5706ea1d6981Smrgn      STRING8      string
5707ea1d6981Smrgp            unused, p=Lpad
5708ea1d6981Smrg</literallayout>
5709ea1d6981Smrg
5710ea1d6981Smrg<para>
5711ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#10990">See
5712ea1d6981SmrgLbxImageText8</ulink>.
5713ea1d6981Smrg</para>
5714ea1d6981Smrg
5715ea1d6981Smrg
5716ea1d6981Smrg<literallayout class='monospaced'>
5717ea1d6981Smrg<emphasis role='bold'>LbxImageText16</emphasis>
5718ea1d6981Smrg1      CARD8      opcode
5719ea1d6981Smrg1      31      lbx opcode
5720ea1d6981Smrg2      L      request length
5721ea1d6981Smrg1      LBXGCANDDRAWENT      cache entries
5722ea1d6981Smrga      LBXGCANDDRAWUPDATE      optional gc and drawable
5723ea1d6981Smrgb      LBXPINT16      x
5724ea1d6981Smrgc      LBXPINT16      y
5725ea1d6981Smrg2n      STRING16      string
5726ea1d6981Smrgp            unused, p=Lpad
5727ea1d6981Smrg</literallayout>
5728ea1d6981Smrg
5729ea1d6981Smrg<para>
5730ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#39584">See
5731ea1d6981SmrgLbxImageText16</ulink>.
5732ea1d6981Smrg</para>
5733ea1d6981Smrg
5734ea1d6981Smrg
5735ea1d6981Smrg<literallayout class='monospaced'>
5736ea1d6981Smrg<emphasis role='bold'>LbxQueryExtension</emphasis>
5737ea1d6981Smrg1      CARD8      opcode
5738ea1d6981Smrg1      32      lbx opcode
5739ea1d6981Smrg2      2+(n+p)/4      request length
5740ea1d6981Smrg4      n      length of extension name
5741ea1d6981Smrgn      STRING8      extension name
5742ea1d6981Smrgp            unused, p=pad(n)
5743ea1d6981Smrg=&gt;
5744ea1d6981Smrg1      1      Reply
5745ea1d6981Smrg1      n      number of requests in the extension
5746ea1d6981Smrg2      CARD16      sequence number
5747ea1d6981Smrg4      0 or 2*(m + p)      reply length, m = (n+7)/8
5748ea1d6981Smrg1      BOOL      present
5749ea1d6981Smrg1      CARD8      major opcode
5750ea1d6981Smrg1      CARD8      first event
5751ea1d6981Smrg1      CARD8      first error
5752ea1d6981Smrg20            unused
5753ea1d6981Smrgm      LISTofMASK      optional reply-mask
5754ea1d6981Smrgp            unused, p=pad(m)
5755ea1d6981Smrgm      LISTofMASK      optional event-mask
5756ea1d6981Smrgp            unused, p=pad(m)
5757ea1d6981Smrg</literallayout>
5758ea1d6981Smrg
5759ea1d6981Smrg<para>
5760ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#36662">See
5761ea1d6981SmrgLbxQueryExtension</ulink>.
5762ea1d6981Smrg</para>
5763ea1d6981Smrg
5764ea1d6981Smrg
5765ea1d6981Smrg<literallayout class='monospaced'>
5766ea1d6981Smrg<emphasis role='bold'>LbxPutImage</emphasis>
5767ea1d6981Smrg1      CARD8      opcode
5768ea1d6981Smrg1      33      lbx opcode
5769ea1d6981Smrg2      L      request length
5770ea1d6981Smrg1      CARD8      compression method
5771ea1d6981Smrg1      LBXGCANDDRAWENT      cache entries
5772ea1d6981Smrga      PIPACKED            bit-packed
5773ea1d6981Smrgb      LBXGCANDDRAWUPDATE      optional gc and drawable
5774ea1d6981Smrgc      LBXCARD16      width
5775ea1d6981Smrgd      LBXCARD16      height
5776ea1d6981Smrge      LBXPINT16      x
5777ea1d6981Smrgf      LBXPINT16      y
5778ea1d6981Smrgn      LISTofBYTE      compressed image data
5779ea1d6981Smrgp            unused, p=Lpad
5780ea1d6981Smrg</literallayout>
5781ea1d6981Smrg
5782ea1d6981Smrg<para>
5783ea1d6981SmrgIf there is no left padding and the depth is less than or equal to nine,
5784ea1d6981SmrgPIPPACKED is encoded as follows:
5785ea1d6981Smrg</para>
5786ea1d6981Smrg
5787ea1d6981Smrg<literallayout class='monospaced'>
5788ea1d6981Smrg<emphasis role='bold'>PIPACKED</emphasis>
5789ea1d6981Smrg1      #x80 | (format &lt;&lt; 5) | ((depth -1) &lt;&lt; 2)
5790ea1d6981Smrg</literallayout>
5791ea1d6981Smrg
5792ea1d6981Smrg<para>
5793ea1d6981SmrgOtherwise PIPACKED is defined as:
5794ea1d6981Smrg</para>
5795ea1d6981Smrg
5796ea1d6981Smrg<literallayout class='monospaced'>
5797ea1d6981Smrg<emphasis role='bold'>PIPACKED</emphasis>
5798ea1d6981Smrg1      (depth -1) &lt;&lt; 2)
5799ea1d6981Smrg1      (format &lt;&lt; 5) | left-pad
5800ea1d6981Smrg</literallayout>
5801ea1d6981Smrg
5802ea1d6981Smrg<para>
5803ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#21218">See
5804ea1d6981SmrgLbxPutImage</ulink>.
5805ea1d6981Smrg</para>
5806ea1d6981Smrg
5807ea1d6981Smrg
5808ea1d6981Smrg<literallayout class='monospaced'>
5809ea1d6981Smrg<emphasis role='bold'>LbxGetImage</emphasis>
5810ea1d6981Smrg1      CARD8      opcode
5811ea1d6981Smrg1      34      lbx opcode
5812ea1d6981Smrg2      6      request length
5813ea1d6981Smrg4      DRAWABLE      drawable
5814ea1d6981Smrg2      INT16      x
5815ea1d6981Smrg2      INT16      y
5816ea1d6981Smrg2      CARD16      width
5817ea1d6981Smrg2      CARD16      height
5818ea1d6981Smrg4      CARD32      plane mask
5819ea1d6981Smrg1      CARD8      format
5820ea1d6981Smrg3            unused
5821ea1d6981Smrg=&gt;
5822ea1d6981Smrg1      1      Reply
5823ea1d6981Smrg1      CARD8      depth
5824ea1d6981Smrg2      CARD16      sequence number
5825ea1d6981Smrg4      (n+p)/4      reply length
5826ea1d6981Smrg4      (m+p)/4      X reply length; if uncompressed, m=n
5827ea1d6981Smrg4      VISUALID      visual
5828ea1d6981Smrg0      None
5829ea1d6981Smrg1            compression method
5830ea1d6981Smrg15            unused
5831ea1d6981Smrgn      LISTofBYTE      data
5832ea1d6981Smrgp            unused, p=pad(n)
5833ea1d6981Smrg</literallayout>
5834ea1d6981Smrg
5835ea1d6981Smrg<para>
5836ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#26896">See
5837ea1d6981SmrgLbxGetImage</ulink>.
5838ea1d6981Smrg</para>
5839ea1d6981Smrg
5840ea1d6981Smrg
5841ea1d6981Smrg<literallayout class='monospaced'>
5842ea1d6981Smrg<emphasis role='bold'>LbxBeginLargeRequest</emphasis>
5843ea1d6981Smrg1      CARD8      opcode
5844ea1d6981Smrg1      35      lbx opcode
5845ea1d6981Smrg2      2      request length
5846ea1d6981Smrg4      CARD32      large request length
5847ea1d6981Smrg</literallayout>
5848ea1d6981Smrg
5849ea1d6981Smrg<para>
5850ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#31209">See
5851ea1d6981SmrgLbxBeginLargeRequest</ulink>.
5852ea1d6981Smrg</para>
5853ea1d6981Smrg
5854ea1d6981Smrg
5855ea1d6981Smrg<literallayout class='monospaced'>
5856ea1d6981Smrg<emphasis role='bold'>LbxLargeRequestData</emphasis>
5857ea1d6981Smrg1      CARD8      opcode
5858ea1d6981Smrg1      36      lbx opcode
5859ea1d6981Smrg2      1+n      request length
5860ea1d6981Smrg4n      LISTofBYTE      data
5861ea1d6981Smrg</literallayout>
5862ea1d6981Smrg
5863ea1d6981Smrg<para>
5864ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#36982">See
5865ea1d6981SmrgLbxLargeRequestData</ulink>.
5866ea1d6981Smrg</para>
5867ea1d6981Smrg
5868ea1d6981Smrg
5869ea1d6981Smrg<literallayout class='monospaced'>
5870ea1d6981Smrg<emphasis role='bold'>LbxEndLargeRequest</emphasis>
5871ea1d6981Smrg1      CARD8      opcode
5872ea1d6981Smrg1      37      lbx opcode
5873ea1d6981Smrg2      1      request length
5874ea1d6981Smrg</literallayout>
5875ea1d6981Smrg
5876ea1d6981Smrg<para>
5877ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#31841">See
5878ea1d6981SmrgLbxEndLargeRequest</ulink>.
5879ea1d6981Smrg</para>
5880ea1d6981Smrg
5881ea1d6981Smrg
5882ea1d6981Smrg<literallayout class='monospaced'>
5883ea1d6981Smrg<emphasis role='bold'>LbxInternAtoms</emphasis>
5884ea1d6981Smrg1      CARD8      opcode
5885ea1d6981Smrg1      38      lbx opcode
5886ea1d6981Smrg2      1+(2+m+n+p)/4      request length
5887ea1d6981Smrg2      m      num-atoms
5888ea1d6981Smrgn      LISTofLONGSTR      names
5889ea1d6981Smrgp            pad p=Lpad
5890ea1d6981Smrg=&gt;
5891ea1d6981Smrg1      1      Reply
5892ea1d6981Smrg1            unused
5893ea1d6981Smrg2      CARD16      sequence number
5894ea1d6981Smrg4      a      reply length, a = MAX(m - 6, 0)
5895ea1d6981Smrg4*m      LISTofATOM      atoms
5896ea1d6981Smrgp            pad p = MAX(0, 4*(6 - m))
5897ea1d6981Smrg&nbsp;
5898ea1d6981SmrgLONGSTR
5899ea1d6981Smrg2      c      string length
5900ea1d6981Smrgc      STRING8      string
5901ea1d6981Smrg</literallayout>
5902ea1d6981Smrg
5903ea1d6981Smrg<para>
5904ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#21636">See
5905ea1d6981SmrgLbxInternAtoms</ulink>.
5906ea1d6981Smrg</para>
5907ea1d6981Smrg
5908ea1d6981Smrg
5909ea1d6981Smrg<literallayout class='monospaced'>
5910ea1d6981Smrg<emphasis role='bold'>LbxGetWinAttrAndGeom</emphasis>
5911ea1d6981Smrg1      CARD8      opcode
5912ea1d6981Smrg1      39      lbx opcode
5913ea1d6981Smrg2      2      request length
5914ea1d6981Smrg4      CARD32      window id
5915ea1d6981Smrg=&gt;
5916ea1d6981Smrg1      1      Reply
5917ea1d6981Smrg1            backing store
5918ea1d6981Smrg0      NotUseful
5919ea1d6981Smrg1      WhenMapped
5920ea1d6981Smrg2      Always
5921ea1d6981Smrg2      CARD16      sequence number
5922ea1d6981Smrg4      7      reply length
5923ea1d6981Smrg4      VISUALID      visual id
5924ea1d6981Smrg2            class
5925ea1d6981Smrg1      InputOutput
5926ea1d6981Smrg2      InputOnly
5927ea1d6981Smrg1      BITGRAVITY      bit gravity
5928ea1d6981Smrg1      WINGRAVITY      window gravity
5929ea1d6981Smrg4      CARD32      backing bit planes
5930ea1d6981Smrg4      CARD32      backing pixel
5931ea1d6981Smrg1      BOOL      save under
5932ea1d6981Smrg1      BOOL      map installed
5933ea1d6981Smrg1            map state
5934ea1d6981Smrg0      Unmapped
5935ea1d6981Smrg1      Unviewable
5936ea1d6981Smrg2      Viewable
5937ea1d6981Smrg1      BOOL      override
5938ea1d6981Smrg4      COLORMAP      colormap
5939ea1d6981Smrg4      SETofEVENT      all events mask
5940ea1d6981Smrg4      SETofEVENT      your event mask
5941ea1d6981Smrg2      SETofDEVICEEVENT      do not propagate mask
5942ea1d6981Smrg2            unused
5943ea1d6981Smrg4      WINDOW      root
5944ea1d6981Smrg2      INT16      x
5945ea1d6981Smrg2      INT16      y
5946ea1d6981Smrg2      CARD16      width
5947ea1d6981Smrg2      CARD16      height
5948ea1d6981Smrg2      CARD16      border width
5949ea1d6981Smrg1      CARD8      depth
5950ea1d6981Smrg1            unused
5951ea1d6981Smrg</literallayout>
5952ea1d6981Smrg
5953ea1d6981Smrg<para>
5954ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#39382">See
5955ea1d6981SmrgLbxGetWinAttrAndGeom</ulink>.
5956ea1d6981Smrg</para>
5957ea1d6981Smrg
5958ea1d6981Smrg
5959ea1d6981Smrg<literallayout class='monospaced'>
5960ea1d6981Smrg<emphasis role='bold'>LbxGrabCmap</emphasis>
5961ea1d6981Smrg1      CARD8      opcode
5962ea1d6981Smrg1      40      lbx opcode
5963ea1d6981Smrg2      2      request length
5964ea1d6981Smrg4      COLORMAP      colormap
5965ea1d6981Smrg=&gt;
5966ea1d6981Smrg</literallayout>
5967ea1d6981Smrg
5968ea1d6981Smrg<para>
5969ea1d6981SmrgIf smart-grab is true, the reply is as follows:
5970ea1d6981Smrg</para>
5971ea1d6981Smrg
5972ea1d6981Smrg<literallayout class='monospaced'>
5973ea1d6981Smrg1      1      Reply
5974ea1d6981Smrg1      #x80      flags
5975ea1d6981Smrg2      CARD16      sequence number
5976ea1d6981Smrg4      0      reply length
5977ea1d6981Smrg24            unused
5978ea1d6981Smrg
5979ea1d6981SmrgIf smart-grab is false, the reply is as follows:
5980ea1d6981Smrg
5981ea1d6981Smrg1      1      Reply
5982ea1d6981Smrg1            flags (set of)
5983ea1d6981Smrg       #x40      auto-release
5984ea1d6981Smrg       #x20      three-channels
5985ea1d6981Smrg       #x10      two-byte-pixels
5986ea1d6981Smrglower four bits specifies bits-per-pixel
5987ea1d6981Smrg2      CARD16      sequence number
5988ea1d6981Smrg4      L      reply length
5989ea1d6981Smrgm      CHAN or CHANNELS      cells (CHAN if !three-channels)
5990ea1d6981Smrgp      0      pad(m)
5991ea1d6981Smrg
5992ea1d6981Smrg<emphasis role='bold'>CHANNELS</emphasis>
5993ea1d6981Smrga      CHAN      red
5994ea1d6981Smrg1      5            next channel
5995ea1d6981Smrgb      CHAN      green
5996ea1d6981Smrg1      5      next channel
5997ea1d6981Smrgc      CHAN      blue
5998ea1d6981Smrg1      0      list end
5999ea1d6981Smrg
6000ea1d6981Smrg<emphasis role='bold'>CHAN</emphasis>
6001ea1d6981Smrgd      LISTofLBXPIXEL
6002ea1d6981Smrg
6003ea1d6981Smrg<emphasis role='bold'>LBXPIXEL</emphasis>
6004ea1d6981Smrge      PIXELPRIVATE or
6005ea1d6981Smrg      PIXELPRIVATERANGE or
6006ea1d6981Smrg      PIXELALLOC or
6007ea1d6981Smrg      PIXELALLOCRANGE
6008ea1d6981Smrg
6009ea1d6981Smrg<emphasis role='bold'>PIXELPRIVATE</emphasis>
6010ea1d6981Smrg1      1      pixel-private
6011ea1d6981Smrgf      PIXEL      pixel
6012ea1d6981Smrg
6013ea1d6981Smrg<emphasis role='bold'>PIXEL</emphasis>
6014ea1d6981Smrgf      CARD8 or CARD16      (CARD8 if !two-byte-pixels)
6015ea1d6981Smrg
6016ea1d6981Smrg<emphasis role='bold'>PIXELPRIVATERANGE</emphasis>
6017ea1d6981Smrg1      2      pixel-private-range
6018ea1d6981Smrgf      PIXEL      fist-pixel
6019ea1d6981Smrgf      PIXEL      last-pixel
6020ea1d6981Smrg
6021ea1d6981Smrg<emphasis role='bold'>PIXELALLOC</emphasis>
6022ea1d6981Smrg1      3      pixel-private
6023ea1d6981Smrgf      PIXEL      pixel
6024ea1d6981Smrgg      COLORSINGLE or COLORTRIPLE      color       (COLORSINGLE if
6025ea1d6981Smrgthree-channels)
6026ea1d6981Smrg
6027ea1d6981Smrg<emphasis role='bold'>COLORSINGLE</emphasis>
6028ea1d6981Smrgh      CARD8 or CARD16      value (CARD8       if bits-per-rgb =&lt; 7)
6029ea1d6981Smrg
6030ea1d6981Smrg<emphasis role='bold'>COLORTRIPLE</emphasis>
6031ea1d6981Smrgh      COLORSINGLE      red
6032ea1d6981Smrgh      COLORSINGLE      green
6033ea1d6981Smrgh      COLORSINGLE      blue
6034ea1d6981Smrg
6035ea1d6981Smrg<emphasis role='bold'>PIXELALLOCRANGE</emphasis>
6036ea1d6981Smrg1      4      pixel-private
6037ea1d6981Smrgf      PIXEL      first-pixel
6038ea1d6981Smrgf      PIXEL      last-pixel
6039ea1d6981Smrgj      LISTofCOLORSINGLE or       color       (COLORSINGLE if three-channels)
6040ea1d6981Smrg      LISTofCOLORTRIPLE
6041ea1d6981Smrg</literallayout>
6042ea1d6981Smrg
6043ea1d6981Smrg<para>
6044ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#10922">See
6045ea1d6981SmrgLbxGrabCmap</ulink>.
6046ea1d6981Smrg</para>
6047ea1d6981Smrg
6048ea1d6981Smrg
6049ea1d6981Smrg<literallayout class='monospaced'>
6050ea1d6981Smrg<emphasis role='bold'>LbxReleaseCmap</emphasis>
6051ea1d6981Smrg1      CARD8      opcode
6052ea1d6981Smrg1      41      lbx opcode
6053ea1d6981Smrg2      2      request length
6054ea1d6981Smrg4      COLORMAP      cmap
6055ea1d6981Smrg</literallayout>
6056ea1d6981Smrg
6057ea1d6981Smrg<para>
6058ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#34675">See
6059ea1d6981SmrgLbxReleaseCmap</ulink>.
6060ea1d6981Smrg</para>
6061ea1d6981Smrg
6062ea1d6981Smrg
6063ea1d6981Smrg<literallayout class='monospaced'>
6064ea1d6981Smrg<emphasis role='bold'>LbxAllocColor</emphasis>
6065ea1d6981Smrg1      CARD8      opcode
6066ea1d6981Smrg1      42      lbx opcode
6067ea1d6981Smrg2      5      request length
6068ea1d6981Smrg4      COLORMAP      colormap
6069ea1d6981Smrg4      CARD32      pixel
6070ea1d6981Smrg2      CARD16      red
6071ea1d6981Smrg2      CARD16      green
6072ea1d6981Smrg2      CARD16            blue
6073ea1d6981Smrg2            unused
6074ea1d6981Smrg</literallayout>
6075ea1d6981Smrg
6076ea1d6981Smrg<para>
6077ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#10446">See
6078ea1d6981SmrgLbxAllocColor</ulink>.
6079ea1d6981Smrg</para>
6080ea1d6981Smrg
6081ea1d6981Smrg
6082ea1d6981Smrg<literallayout class='monospaced'>
6083ea1d6981Smrg<emphasis role='bold'>LbxSync</emphasis>
6084ea1d6981Smrg1      CARD8      opcode
6085ea1d6981Smrg1      43      lbx opcode
6086ea1d6981Smrg2      1      request length
6087ea1d6981Smrg=&gt;
6088ea1d6981Smrg1      1      Reply
6089ea1d6981Smrg1      n      unused
6090ea1d6981Smrg2      CARD16      sequence number
6091ea1d6981Smrg4      0      reply length
6092ea1d6981Smrg24            unused
6093ea1d6981Smrg</literallayout>
6094ea1d6981Smrg
6095ea1d6981Smrg<para>
6096ea1d6981SmrgThe description of this request is on <ulink url="lbx.htm#30719">See
6097ea1d6981SmrgLbxSync</ulink>.
6098ea1d6981Smrg</para>
6099ea1d6981Smrg
6100ea1d6981Smrg
6101ea1d6981Smrg
6102ea1d6981Smrg</sect2>
6103ea1d6981Smrg<sect2 id='events2'>
6104ea1d6981Smrg<title>Events</title>
6105ea1d6981Smrg
6106ea1d6981Smrg<literallayout class='monospaced'>
6107ea1d6981Smrg<emphasis role='bold'>LbxSwitchEvent</emphasis>
6108ea1d6981Smrg1      base + 0      code
6109ea1d6981Smrg1      0      lbx type
6110ea1d6981Smrg2      CARD16      sequence number
6111ea1d6981Smrg4      CARD32      client
6112ea1d6981Smrg24            unused
6113ea1d6981Smrg</literallayout>
6114ea1d6981Smrg
6115ea1d6981Smrg<para>
6116ea1d6981SmrgThe description of this event is on <ulink url="lbx.htm#33748">See
6117ea1d6981SmrgLbxSwitchEvent</ulink>.
6118ea1d6981Smrg</para>
6119ea1d6981Smrg
6120ea1d6981Smrg
6121ea1d6981Smrg<literallayout class='monospaced'>
6122ea1d6981Smrg<emphasis role='bold'>LbxCloseEvent</emphasis>
6123ea1d6981Smrg1      base + 0      code
6124ea1d6981Smrg1      1      lbx type
6125ea1d6981Smrg2      CARD16      sequence number
6126ea1d6981Smrg4      CARD32      client
6127ea1d6981Smrg24            unused
6128ea1d6981Smrg</literallayout>
6129ea1d6981Smrg
6130ea1d6981Smrg<para>
6131ea1d6981SmrgThe description of this event is on <ulink url="lbx.htm#17292">See
6132ea1d6981SmrgLbxCloseEvent</ulink>.
6133ea1d6981Smrg</para>
6134ea1d6981Smrg
6135ea1d6981Smrg
6136ea1d6981Smrg<literallayout class='monospaced'>
6137ea1d6981Smrg<emphasis role='bold'>LbxInvalidateTagEvent</emphasis>
6138ea1d6981Smrg1      base + 0      code
6139ea1d6981Smrg1      3      lbx type
6140ea1d6981Smrg2      CARD16      sequence number
6141ea1d6981Smrg4      CARD32      tag
6142ea1d6981Smrg4            tag-type
6143ea1d6981Smrg1      <emphasis>LbxTagTypeModmap</emphasis>
6144ea1d6981Smrg2      <emphasis>LbxTagTypeKeymap</emphasis>
6145ea1d6981Smrg3      <emphasis>LbxTagTypeProperty</emphasis>
6146ea1d6981Smrg4      <emphasis>LbxTagTypeFont</emphasis>
6147ea1d6981Smrg5      <emphasis>LbxTagTypeConnInfo</emphasis>
6148ea1d6981Smrg20            unused
6149ea1d6981Smrg</literallayout>
6150ea1d6981Smrg
6151ea1d6981Smrg<para>
6152ea1d6981SmrgThe description of this event is on <ulink url="lbx.htm#23016">See
6153ea1d6981SmrgLbxInvalidateTagEvent</ulink>.
6154ea1d6981Smrg</para>
6155ea1d6981Smrg
6156ea1d6981Smrg
6157ea1d6981Smrg<literallayout class='monospaced'>
6158ea1d6981Smrg<emphasis role='bold'>LbxSendTagDataEvent</emphasis>
6159ea1d6981Smrg1      base + 0      code
6160ea1d6981Smrg1      4      lbx type
6161ea1d6981Smrg2      CARD16      sequence number
6162ea1d6981Smrg4      CARD32      tag
6163ea1d6981Smrg4            tag-type
6164ea1d6981Smrg3      <emphasis>LbxTagTypeProperty</emphasis>
6165ea1d6981Smrg20            unused
6166ea1d6981Smrg</literallayout>
6167ea1d6981Smrg
6168ea1d6981Smrg<para>
6169ea1d6981SmrgThe description of this event is on <ulink url="lbx.htm#20373">See
6170ea1d6981SmrgLbxSendTagDataEvent</ulink>.
6171ea1d6981Smrg</para>
6172ea1d6981Smrg
6173ea1d6981Smrg
6174ea1d6981Smrg<literallayout class='monospaced'>
6175ea1d6981Smrg<emphasis role='bold'>LbxListenToOne</emphasis>
6176ea1d6981Smrg1      base + 0      code
6177ea1d6981Smrg1      5      lbx type
6178ea1d6981Smrg2      CARD16      sequence number
6179ea1d6981Smrg4      CARD32      client
6180ea1d6981Smrg<emphasis>#xFFFFFFFF</emphasis>
6181ea1d6981Smrga client not managed by the proxy
6182ea1d6981Smrg24            unused
6183ea1d6981Smrg</literallayout>
6184ea1d6981Smrg
6185ea1d6981Smrg<para>
6186ea1d6981SmrgThe description of this event is on <ulink url="lbx.htm#25209">See
6187ea1d6981SmrgLbxListenToOne</ulink>.
6188ea1d6981Smrg</para>
6189ea1d6981Smrg
6190ea1d6981Smrg
6191ea1d6981Smrg<literallayout class='monospaced'>
6192ea1d6981Smrg<emphasis role='bold'>LbxListenToAll</emphasis>
6193ea1d6981Smrg1      base + 0      code
6194ea1d6981Smrg1      6      lbx type
6195ea1d6981Smrg2      CARD16      sequence number
6196ea1d6981Smrg28            unused
6197ea1d6981Smrg</literallayout>
6198ea1d6981Smrg
6199ea1d6981Smrg<para>
6200ea1d6981SmrgThe description of this event is on <ulink url="lbx.htm#11095">See
6201ea1d6981SmrgLbxListenToAll</ulink>.
6202ea1d6981Smrg</para>
6203ea1d6981Smrg
6204ea1d6981Smrg
6205ea1d6981Smrg<literallayout class='monospaced'>
6206ea1d6981Smrg<emphasis role='bold'>LbxQuickMotionDeltaEvent</emphasis>
6207ea1d6981Smrg1      base + 1      code
6208ea1d6981Smrg1      CARD8      delta-time
6209ea1d6981Smrg1      INT8      delta-x
6210ea1d6981Smrg1      INT8      delta-y
6211ea1d6981Smrg</literallayout>
6212ea1d6981Smrg
6213ea1d6981Smrg<para>
6214ea1d6981SmrgThis event is not padded to 32 bytes.
6215ea1d6981Smrg</para>
6216ea1d6981Smrg
6217ea1d6981Smrg
6218ea1d6981Smrg<para>
6219ea1d6981SmrgThe description of this event is on <ulink url="lbx.htm#40268">See
6220ea1d6981SmrgLbxQuickMotionDeltaEvent</ulink>.
6221ea1d6981Smrg</para>
6222ea1d6981Smrg
6223ea1d6981Smrg
6224ea1d6981Smrg<literallayout class='monospaced'>
6225ea1d6981Smrg<emphasis role='bold'>LbxMotionDeltaEvent</emphasis>
6226ea1d6981Smrg1      base + 0      code
6227ea1d6981Smrg1      7                  lbx type
6228ea1d6981Smrg1      INT8      delta-x
6229ea1d6981Smrg1      INT8      delta-y
6230ea1d6981Smrg2      CARD16      delta-time
6231ea1d6981Smrg2      CARD16      delta-sequence
6232ea1d6981Smrg</literallayout>
6233ea1d6981Smrg
6234ea1d6981Smrg<para>
6235ea1d6981SmrgThis event is not padded to 32 bytes.
6236ea1d6981Smrg</para>
6237ea1d6981Smrg
6238ea1d6981Smrg
6239ea1d6981Smrg<para>
6240ea1d6981SmrgThe description of this event is on <ulink url="lbx.htm#30033">See
6241ea1d6981SmrgLbxMotionDeltaEvent</ulink>.
6242ea1d6981Smrg</para>
6243ea1d6981Smrg
6244ea1d6981Smrg
6245ea1d6981Smrg<literallayout class='monospaced'>
6246ea1d6981Smrg<emphasis role='bold'>LbxReleaseCmapEvent</emphasis>
6247ea1d6981Smrg1      base + 0      code
6248ea1d6981Smrg1      8                  lbx type
6249ea1d6981Smrg2      CARD16      sequence number
6250ea1d6981Smrg4      COLORMAP      colormap
6251ea1d6981Smrg24            unused
6252ea1d6981Smrg</literallayout>
6253ea1d6981Smrg
6254ea1d6981Smrg<para>
6255ea1d6981SmrgThe description of this event is on <ulink url="lbx.htm#19129">See
6256ea1d6981SmrgLbxReleaseCmapEvent</ulink>.
6257ea1d6981Smrg</para>
6258ea1d6981Smrg
6259ea1d6981Smrg
6260ea1d6981Smrg<literallayout class='monospaced'>
6261ea1d6981Smrg<emphasis role='bold'>LbxFreeCellsEvent</emphasis>
6262ea1d6981Smrg1      base + 0      code
6263ea1d6981Smrg1      9                  lbx type
6264ea1d6981Smrg2      CARD16      sequence number
6265ea1d6981Smrg4      COLORMAP      colormap
6266ea1d6981Smrg4      PIXEL      pixel start
6267ea1d6981Smrg4      PIXEL      pixel end
6268ea1d6981Smrg16            unused
6269ea1d6981Smrg</literallayout>
6270ea1d6981Smrg
6271ea1d6981Smrg<para>
6272ea1d6981SmrgThe description of this event is on <ulink url="lbx.htm#38041">See
6273ea1d6981SmrgLbxFreeCellsEvent</ulink>.
6274ea1d6981Smrg</para>
6275ea1d6981Smrg
6276ea1d6981Smrg
6277ea1d6981Smrg</sect2>
6278ea1d6981Smrg<sect2 id='re_encoding_of_x_events'>
6279ea1d6981Smrg<title>Re-encoding of X Events</title>
6280ea1d6981Smrg
6281ea1d6981Smrg<para>
6282ea1d6981SmrgThe X protocol requires all X events to be 32 bytes. The LBX server reduces the
6283ea1d6981Smrgnumber of bytes sent between the server and the proxy for some X events by not
6284ea1d6981Smrgappending unused pad bytes to the event data. The offsets of X event data are
6285ea1d6981Smrgunchanged. The proxy will pad the events to 32 bytes before passing them on to
6286ea1d6981Smrgthe client.
6287ea1d6981Smrg</para>
6288ea1d6981Smrg
6289ea1d6981Smrg
6290ea1d6981Smrg<para>
6291ea1d6981SmrgLBX reencodes X event representations into the following sizes, if squishing is
6292ea1d6981Smrgenabled:
6293ea1d6981Smrg</para>
6294ea1d6981Smrg
6295ea1d6981Smrg<para><programlisting>
6296ea1d6981SmrgKeyOrButton            32
6297ea1d6981SmrgEnterOrLeave           32
6298ea1d6981SmrgKeymap                 32
6299ea1d6981SmrgExpose                 20
6300ea1d6981SmrgGraphicsExposure       24
6301ea1d6981SmrgNoExposure             12
6302ea1d6981SmrgVisibilityNotify       12
6303ea1d6981SmrgCreateNotify           24
6304ea1d6981SmrgDestroyNotify          12
6305ea1d6981SmrgUnmapNotify            16
6306ea1d6981SmrgMapNotify              16
6307ea1d6981SmrgMapRequest             12
6308ea1d6981SmrgReparent               24
6309ea1d6981SmrgConfigureNotify        28
6310ea1d6981SmrgConfigureRequest       28
6311ea1d6981SmrgGravityNotify          16
6312ea1d6981SmrgResizeRequest          12
6313ea1d6981SmrgCirculate              20
6314ea1d6981SmrgProperty      Notify   20
6315ea1d6981SmrgSelectionClear         20
6316ea1d6981SmrgSelectionRequest       28
6317ea1d6981SmrgSelectionNotify        24
6318ea1d6981SmrgColormap      Notify   16
6319ea1d6981SmrgMappingNotify          8
6320ea1d6981SmrgClientMessage          32
6321ea1d6981SmrgUnknown                32
6322ea1d6981Smrg</programlisting></para>
6323ea1d6981Smrg
6324ea1d6981Smrg</sect2>
6325ea1d6981Smrg<sect2 id='responses2'>
6326ea1d6981Smrg<title>Responses</title>
6327ea1d6981Smrg
6328ea1d6981Smrg<literallayout class='monospaced'>
6329ea1d6981Smrg<emphasis role='bold'>LbxDeltaResponse</emphasis>
6330ea1d6981Smrg1      event_base + 0      event code
6331ea1d6981Smrg1      2      lbx type
6332ea1d6981Smrg2      1+(2+2n+p)/4      request length
6333ea1d6981Smrg1      n      count of diffs
6334ea1d6981Smrg1      CARD8      cache index
6335ea1d6981Smrg2n      LISTofDIFFITEM      offsets and differences
6336ea1d6981Smrgp            unused, p=pad(2n)
6337ea1d6981Smrg</literallayout>
6338ea1d6981Smrg
6339ea1d6981Smrg<para>
6340ea1d6981SmrgThe description of this response is on <ulink url="lbx.htm#34042">See
6341ea1d6981SmrgLbxDeltaResponse</ulink>.
6342ea1d6981Smrg</para>
6343ea1d6981Smrg
6344ea1d6981Smrg</sect2>
6345ea1d6981Smrg</sect1>
6346ea1d6981Smrg</article>
6347