1d4401354Smrg<?xml version="1.0" encoding="utf-8"?> 2d4401354Smrg<!-- 3d4401354SmrgCopyright (C) 2004 Josh Triplett 4d4401354SmrgCopyright (C) 2007 Jeremy Kolb 5d4401354SmrgAll Rights Reserved. 6d4401354Smrg 7d4401354SmrgPermission is hereby granted, free of charge, to any person obtaining a copy 8d4401354Smrgof this software and associated documentation files (the "Software"), to deal 9d4401354Smrgin the Software without restriction, including without limitation the rights 10d4401354Smrgto use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11d4401354Smrgcopies of the Software, and to permit persons to whom the Software is 12d4401354Smrgfurnished to do so, subject to the following conditions: 13d4401354Smrg 14d4401354SmrgThe above copyright notice and this permission notice shall be included in all 15d4401354Smrgcopies or substantial portions of the Software. 16d4401354Smrg 17d4401354SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18d4401354SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19d4401354SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20d4401354SmrgAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 21d4401354SmrgACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22d4401354SmrgWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23d4401354Smrg 24d4401354SmrgExcept as contained in this notice, the names of the authors or their 25d4401354Smrginstitutions shall not be used in advertising or otherwise to promote the 26d4401354Smrgsale, use or other dealings in this Software without prior written 27d4401354Smrgauthorization from the authors. 28d4401354Smrg--> 29d4401354Smrg<!-- This file describes version 1.1 of DAMAGE. --> 30d4401354Smrg<xcb header="damage" extension-xname="DAMAGE" extension-name="Damage" 31d4401354Smrg major-version="1" minor-version="1"> 32d4401354Smrg <import>xproto</import> 33d4401354Smrg <import>xfixes</import> 34d4401354Smrg 35d4401354Smrg <xidtype name="DAMAGE" /> 36d4401354Smrg 37d4401354Smrg <enum name="ReportLevel"> 38f591e195Smrg <item name="RawRectangles"> <value>0</value> </item> 39f591e195Smrg <item name="DeltaRectangles"> <value>1</value> </item> 40f591e195Smrg <item name="BoundingBox"> <value>2</value> </item> 41f591e195Smrg <item name="NonEmpty"> <value>3</value> </item> 42d4401354Smrg </enum> 43d4401354Smrg 44d4401354Smrg <error name="BadDamage" number="0" /> 45d4401354Smrg 46d4401354Smrg <request name="QueryVersion" opcode="0"> 47d4401354Smrg <field type="CARD32" name="client_major_version" /> 48d4401354Smrg <field type="CARD32" name="client_minor_version" /> 49d4401354Smrg <reply> 50d4401354Smrg <pad bytes="1" /> 51d4401354Smrg <field type="CARD32" name="major_version" /> 52d4401354Smrg <field type="CARD32" name="minor_version" /> 53d4401354Smrg <pad bytes="16" /> 5418ea056eSmrg <doc> 5518ea056eSmrg <brief>The negotiated version of the DAMAGE extension</brief> 5618ea056eSmrg <description> 5718ea056eSmrgThis indicates the version of the DAMAGE extension chosen by the server. 5818ea056eSmrgIt will always be less than or equal to the version offered by the client. 5918ea056eSmrg </description> 6018ea056eSmrg <field name="major_version">The major version chosen by the server.</field> 6118ea056eSmrg <field name="minor_version">The minor version chosen by the server.</field> 6218ea056eSmrg </doc> 63d4401354Smrg </reply> 6418ea056eSmrg <doc> 6518ea056eSmrg <brief>Negotiate the version of the DAMAGE extension</brief> 6618ea056eSmrg <description> 6718ea056eSmrgThis negotiates the version of the DAMAGE extension. It must precede any other 6818ea056eSmrgrequest using the DAMAGE extension. Failure to do so will cause a BadRequest 6918ea056eSmrgerror for those requests. 7018ea056eSmrg </description> 7118ea056eSmrg <field name="client_major_version">The major version supported by the client.</field> 7218ea056eSmrg <field name="client_minor_version">The minor version supported by the client.</field> 7318ea056eSmrg </doc> 74d4401354Smrg </request> 75d4401354Smrg 76d4401354Smrg <request name="Create" opcode="1"> 77d4401354Smrg <field type="DAMAGE" name="damage" /> 78d4401354Smrg <field type="DRAWABLE" name="drawable" /> 79d4401354Smrg <field type="CARD8" name="level" enum="ReportLevel" /> 80d4401354Smrg <pad bytes="3" /> 8118ea056eSmrg <doc> 8218ea056eSmrg <brief>Creates a Damage object to monitor changes to a drawable.</brief> 8318ea056eSmrg <description><![CDATA[ 8418ea056eSmrgThis creates a Damage object to monitor changes to a drawable, and specifies 8518ea056eSmrgthe level of detail to be reported for changes. 8618ea056eSmrg 8718ea056eSmrgWe call changes made to pixel contents of windows and pixmaps 'damage' 8818ea056eSmrgthroughout this extension. 8918ea056eSmrg 9018ea056eSmrgDamage accumulates as drawing occurs in the drawable. Each drawing operation 9118ea056eSmrg'damages' one or more rectangular areas within the drawable. The rectangles 9218ea056eSmrgare guaranteed to include the set of pixels modified by each operation, but 9318ea056eSmrgmay include significantly more than just those pixels. The desire is for 9418ea056eSmrgthe damage to strike a balance between the number of rectangles reported and 9518ea056eSmrgthe extraneous area included. A reasonable goal is for each primitive 9618ea056eSmrgobject drawn (line, string, rectangle) to be represented as a single 9718ea056eSmrgrectangle and for the damage area of the operation to be the union of these 9818ea056eSmrgrectangles. 9918ea056eSmrg 10018ea056eSmrgThe DAMAGE extension allows applications to either receive the raw 10118ea056eSmrgrectangles as a stream of events, or to have them partially processed within 10218ea056eSmrgthe X server to reduce the amount of data transmitted as well as reduce the 10318ea056eSmrgprocessing latency once the repaint operation has started. 10418ea056eSmrg 10518ea056eSmrgThe Damage object holds any accumulated damage region and reflects the 10618ea056eSmrgrelationship between the drawable selected for damage notification and the 10718ea056eSmrgdrawable for which damage is tracked. 10818ea056eSmrg ]]></description> 10918ea056eSmrg <field name="damage"><![CDATA[ 11018ea056eSmrgThe ID with which you will refer to the new Damage object, created by 11118ea056eSmrg`xcb_generate_id`. 11218ea056eSmrg ]]></field> 11318ea056eSmrg <field name="drawable">The ID of the drawable to be monitored.</field> 11418ea056eSmrg <field name="level">The level of detail to be provided in Damage events.</field> 11518ea056eSmrg </doc> 116d4401354Smrg </request> 117d4401354Smrg 118d4401354Smrg <request name="Destroy" opcode="2"> 119d4401354Smrg <field type="DAMAGE" name="damage" /> 12018ea056eSmrg <doc> 12118ea056eSmrg <brief>Destroys a previously created Damage object.</brief> 12218ea056eSmrg <description> 12318ea056eSmrgThis destroys a Damage object and requests the X server stop reporting 12418ea056eSmrgthe changes it was tracking. 12518ea056eSmrg </description> 12618ea056eSmrg <field name="damage"><![CDATA[ 12718ea056eSmrgThe ID you provided to `xcb_create_damage`. 12818ea056eSmrg ]]></field> 12918ea056eSmrg </doc> 130d4401354Smrg </request> 131d4401354Smrg 132d4401354Smrg <request name="Subtract" opcode="3"> 133d4401354Smrg <field type="DAMAGE" name="damage" /> 134d4401354Smrg <field type="REGION" name="repair" altenum="Region" /> 135d4401354Smrg <field type="REGION" name="parts" altenum="Region" /> 13618ea056eSmrg <doc> 13718ea056eSmrg <brief>Remove regions from a previously created Damage object.</brief> 13818ea056eSmrg <description> 13918ea056eSmrgThis updates the regions of damage recorded in a a Damage object. 14018ea056eSmrgSee https://www.x.org/releases/current/doc/damageproto/damageproto.txt 14118ea056eSmrgfor details. 14218ea056eSmrg </description> 14318ea056eSmrg <field name="damage">The ID you provided to `xcb_create_damage`.</field> 14418ea056eSmrg </doc> 145d4401354Smrg </request> 146d4401354Smrg 147d4401354Smrg <request name="Add" opcode="4"> 148d4401354Smrg <field type="DRAWABLE" name="drawable" /> 149d4401354Smrg <field type="REGION" name="region" /> 15018ea056eSmrg <doc> 15118ea056eSmrg <brief>Add a region to a previously created Damage object.</brief> 15218ea056eSmrg <description> 15318ea056eSmrgThis updates the regions of damage recorded in a a Damage object. 15418ea056eSmrgSee https://www.x.org/releases/current/doc/damageproto/damageproto.txt 15518ea056eSmrgfor details. 15618ea056eSmrg </description> 15718ea056eSmrg <field name="damage">The ID you provided to `xcb_create_damage`.</field> 15818ea056eSmrg </doc> 159d4401354Smrg </request> 160d4401354Smrg 161d4401354Smrg <event name="Notify" number="0"> 162d4401354Smrg <field type="CARD8" name="level" enum="ReportLevel" /> 163d4401354Smrg <field type="DRAWABLE" name="drawable" /> 164d4401354Smrg <field type="DAMAGE" name="damage" /> 165d4401354Smrg <field type="TIMESTAMP" name="timestamp" /> 166d4401354Smrg <field type="RECTANGLE" name="area" /> 167d4401354Smrg <field type="RECTANGLE" name="geometry" /> 16818ea056eSmrg <doc> 16918ea056eSmrg <brief>the contents of the monitored drawable have changed</brief> 17018ea056eSmrg <field name="level"><![CDATA[ 17118ea056eSmrgThe level of the damage being reported. 17218ea056eSmrgIf the 0x80 bit is set, indicates there are subsequent Damage events 17318ea056eSmrgbeing delivered immediately as part of a larger Damage region. 17418ea056eSmrg ]]></field> 17518ea056eSmrg <field name="drawable"><![CDATA[ 17618ea056eSmrgThe drawable for which damage is being reported. 17718ea056eSmrg ]]></field> 17818ea056eSmrg <field name="damage"><![CDATA[ 17918ea056eSmrgThe Damage object being used to track the damage. 18018ea056eSmrg ]]></field> 18118ea056eSmrg <field name="timestamp"><![CDATA[ 18218ea056eSmrgTime when the event was generated (in milliseconds). 18318ea056eSmrg ]]></field> 18418ea056eSmrg <field name="area"><![CDATA[ 18518ea056eSmrgDamaged area of the drawable. 18618ea056eSmrg ]]></field> 18718ea056eSmrg <field name="geometry"><![CDATA[ 18818ea056eSmrgTotal area of the drawable. 18918ea056eSmrg ]]></field> 19018ea056eSmrg <see type="request" name="Create" /> 19118ea056eSmrg </doc> 192d4401354Smrg </event> 193d4401354Smrg</xcb> 194