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 “AS IS”, 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 "LBX". 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 "optional" 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 & 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 & 0xfff) >> 8 | ((compflag) ? 0x80 : 0); 579ea1d6981Smrg out[1] = length & 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 "XLbx.h". 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 <= in <= A(95)) && !(in % A(5)) out = 0x5a + (in / 803ea1d6981SmrgA(5)) 804ea1d6981Smrg A(105) <= in <= A(360) && !(in % A(15)) out = 0x67 + 805ea1d6981Smrg(in / A(15)) 806ea1d6981Smrg -A(100) <= in <= -A(5) && !(in % A(5)) out = 0xa6 + 807ea1d6981Smrg(in / A(5)) 808ea1d6981Smrg -A(360) < in <= -A(105) && !(in % A(15)) out = 0x98 + 809ea1d6981Smrg(in / A(15)) 810ea1d6981Smrg -A(360) < in <= A(360) out[0] = in >> 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 <= in < 0x00F0 CARD8 829ea1d6981Smrg 0x00F0 <= in < 0x10F0 out[0] = 0xF0 | ((in - 0xF0) >> 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 <= in < 0xFF90 out[0] = 0x80 | (((in + 0x70) >> 857ea1d6981Smrg8) & 0x0F) 858ea1d6981Smrg out[1] = in + 0x70 859ea1d6981Smrg 0xFF90 <= in < 0x0080 CARD8 860ea1d6981Smrg 0x0080 <= in < 0x0880 out[0] = 0x80 | (((in - 0x80) >> 861ea1d6981Smrg8) & 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 <= in < 0x0000 out[0] = 0xF0 | (((in + 0x1000) 870ea1d6981Smrg>> 8) & 0x0F) 871ea1d6981Smrg out[1] = in + 0x1000 872ea1d6981Smrg 0x0000 <= in < 0x00F0 CARD8 873ea1d6981Smrg 0x00F0 <= in < 0x0EF0 out[0] = 0xF0 | ((in - 0xF0) >>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>=>;</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>=></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>=></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'> </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 < in <= 0xFF): out = 1294ea1d6981Smrgin</entry> 1295ea1d6981Smrg </row> 1296ea1d6981Smrg <row> 1297ea1d6981Smrg <entry role='protoargs'> (0 <= in<= 0xFFFF): out[0] = 1298ea1d6981Smrg0; out[1] = in >> 8; out[2] = in& 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>=></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'> </entry> 1562ea1d6981Smrg </row> 1563ea1d6981Smrg <row> 1564ea1d6981Smrg <entry role='protoargs'>OR</entry> 1565ea1d6981Smrg </row> 1566ea1d6981Smrg <row> 1567ea1d6981Smrg <entry role='protoargs'> </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'> </entry> 1594ea1d6981Smrg </row> 1595ea1d6981Smrg <row> 1596ea1d6981Smrg <entry role='protoargs'>where:</entry> 1597ea1d6981Smrg </row> 1598ea1d6981Smrg <row> 1599ea1d6981Smrg <entry role='protoargs'>CONINFO: (the "additional data" 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>=></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>=></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'> </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>=></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>=></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>=></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>=></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>=></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>=></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>=></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'> </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>=></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 <organization>-<some-descriptive-name> 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=> 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 < b <= 255) 5050ea1d6981Smrg 5051ea1d6981Smrg<emphasis role='bold'>OPTLEN</emphasis> 5052ea1d6981Smrg1 0 long length header 5053ea1d6981Smrg1 c length0, c = b >> 8 5054ea1d6981Smrg1 d length1, d= b & #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=> 5076ea1d6981Smrg=> 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<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=> 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 "additional data" 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=> 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=> 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=> 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=> 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=> 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=> 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 << 5) | ((depth -1) << 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) << 2) 5799ea1d6981Smrg1 (format << 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=> 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=> 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 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=> 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=> 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 =< 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=> 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