1d4401354Smrg<?xml version="1.0" encoding="utf-8"?>
2d4401354Smrg<!--
3d4401354SmrgCopyright (C) 2006 Jeremy Kolb, Ian Osgood
4d4401354SmrgAll Rights Reserved.
5d4401354Smrg
6d4401354SmrgPermission is hereby granted, free of charge, to any person obtaining a copy
7d4401354Smrgof this software and associated documentation files (the "Software"), to deal
8d4401354Smrgin the Software without restriction, including without limitation the rights
9d4401354Smrgto use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10d4401354Smrgcopies of the Software, and to permit persons to whom the Software is
11d4401354Smrgfurnished to do so, subject to the following conditions:
12d4401354Smrg
13d4401354SmrgThe above copyright notice and this permission notice shall be included in all
14d4401354Smrgcopies or substantial portions of the Software.
15d4401354Smrg
16d4401354SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17d4401354SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18d4401354SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19d4401354SmrgAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20d4401354SmrgACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21d4401354SmrgWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22d4401354Smrg
23d4401354SmrgExcept as contained in this notice, the names of the authors or their
24d4401354Smrginstitutions shall not be used in advertising or otherwise to promote the
25d4401354Smrgsale, use or other dealings in this Software without prior written
26d4401354Smrgauthorization from the authors.
27d4401354Smrg-->
28d4401354Smrg
29d4401354Smrg<xcb header="randr" extension-xname="RANDR" extension-name="RandR"
30a27842ffSmrg    major-version="1" minor-version="6">
31d4401354Smrg
32d4401354Smrg	<import>xproto</import>
33d4401354Smrg	<import>render</import>
34d4401354Smrg
35d4401354Smrg	<!-- XIDs -->
36d4401354Smrg	<xidtype name="MODE" />
37d4401354Smrg	<xidtype name="CRTC" />
38d4401354Smrg	<xidtype name="OUTPUT" />
39f591e195Smrg	<xidtype name="PROVIDER" />
40a27842ffSmrg	<xidtype name="LEASE" />
41d4401354Smrg	
42d4401354Smrg	<!-- Errors -->
43d4401354Smrg
44f591e195Smrg	<error name="BadOutput"   number="0" />
45f591e195Smrg	<error name="BadCrtc"     number="1" />
46f591e195Smrg	<error name="BadMode"     number="2" />
47f591e195Smrg	<error name="BadProvider" number="3" />
48d4401354Smrg
49d4401354Smrg	<!-- Requests -->
50d4401354Smrg
51d4401354Smrg	<enum name="Rotation">
52d4401354Smrg		<item name="Rotate_0">  <bit>0</bit></item>
53d4401354Smrg		<item name="Rotate_90"> <bit>1</bit></item>
54d4401354Smrg		<item name="Rotate_180"><bit>2</bit></item>
55d4401354Smrg		<item name="Rotate_270"><bit>3</bit></item>
56d4401354Smrg		<item name="Reflect_X"> <bit>4</bit></item>
57d4401354Smrg		<item name="Reflect_Y"> <bit>5</bit></item>
58d4401354Smrg	</enum>
59d4401354Smrg
60d4401354Smrg	<struct name="ScreenSize">
61d4401354Smrg		<field type="CARD16" name="width" />   <!-- pixels -->
62d4401354Smrg		<field type="CARD16" name="height" />
63d4401354Smrg		<field type="CARD16" name="mwidth" />  <!-- millimeters -->
64d4401354Smrg		<field type="CARD16" name="mheight" />
65d4401354Smrg	</struct>
66d4401354Smrg	
67d4401354Smrg	<struct name="RefreshRates">
68d4401354Smrg		<field type="CARD16" name="nRates" />
69d4401354Smrg		<list type="CARD16" name="rates">
70d4401354Smrg			<fieldref>nRates</fieldref>
71d4401354Smrg		</list>
72d4401354Smrg	</struct>
73d4401354Smrg	
74d4401354Smrg	<request name="QueryVersion" opcode="0">
75d4401354Smrg		<field type="CARD32" name="major_version" />
76d4401354Smrg		<field type="CARD32" name="minor_version" />
77d4401354Smrg		<reply>
78d4401354Smrg			<pad bytes="1" />
79d4401354Smrg			<field type="CARD32" name="major_version" />
80d4401354Smrg			<field type="CARD32" name="minor_version" />
81d4401354Smrg			<pad bytes="16" />
82d4401354Smrg		</reply>
83d4401354Smrg	</request>
84d4401354Smrg	
85d4401354Smrg	<!-- Skip obsolete opcode 1 so old clients fail immediately -->
86d4401354Smrg
87d4401354Smrg	<enum name="SetConfig">
88d4401354Smrg		<item name="Success"><value>0</value></item>
89d4401354Smrg		<item name="InvalidConfigTime"><value>1</value></item>
90d4401354Smrg		<item name="InvalidTime"><value>2</value></item>
91d4401354Smrg		<item name="Failed"><value>3</value></item>
92d4401354Smrg	</enum>
93d4401354Smrg
94d4401354Smrg	<!-- This is for the 1.1 version request.  I don't believe we need to specify a 1.0 request
95d4401354Smrg	as few things used randr 1.0.  The only difference is the removal of refresh and padding I think.
96d4401354Smrg	BEWARE: the docs lie!
97d4401354Smrg	-->
98d4401354Smrg	<request name="SetScreenConfig" opcode="2">
99d4401354Smrg		<field type="WINDOW" name="window" />
100d4401354Smrg		<field type="TIMESTAMP" name="timestamp" />
101d4401354Smrg		<field type="TIMESTAMP" name="config_timestamp" />
102d4401354Smrg		<field type="CARD16" name="sizeID" />
103d4401354Smrg		<field type="CARD16" name="rotation" mask="Rotation" />
104d4401354Smrg		<field type="CARD16" name="rate" />
105d4401354Smrg		<pad bytes="2" />
106d4401354Smrg		<reply>
107d4401354Smrg			<field type="CARD8" name="status" enum="SetConfig" />
108d4401354Smrg			<field type="TIMESTAMP" name="new_timestamp" />
109d4401354Smrg			<field type="TIMESTAMP" name="config_timestamp" />
110d4401354Smrg			<field type="WINDOW" name="root" />
111d4401354Smrg			<field type="CARD16" name="subpixel_order" enum="SubPixel" />
112d4401354Smrg			<pad bytes="10" />
113d4401354Smrg		</reply>
114d4401354Smrg	</request>
115d4401354Smrg	
116d4401354Smrg	<!-- opcode 3 is obsolete -->
117d4401354Smrg
118d4401354Smrg	<enum name="NotifyMask" >
119f591e195Smrg		<item name="ScreenChange">    <bit>0</bit></item>
120f591e195Smrg		<!-- New in version 1.2 -->
121f591e195Smrg		<item name="CrtcChange">      <bit>1</bit></item>
122f591e195Smrg		<item name="OutputChange">    <bit>2</bit></item>
123f591e195Smrg		<item name="OutputProperty">  <bit>3</bit></item>
124f591e195Smrg		<!-- New in version 1.4 -->
125f591e195Smrg		<item name="ProviderChange">  <bit>4</bit></item>
126f591e195Smrg		<item name="ProviderProperty"><bit>5</bit></item>
127f591e195Smrg		<item name="ResourceChange">  <bit>6</bit></item>
128a27842ffSmrg		<item name="Lease">           <bit>7</bit></item>
129d4401354Smrg	</enum>
130d4401354Smrg
131d4401354Smrg	<request name="SelectInput" opcode="4">	
132d4401354Smrg		<field type="WINDOW" name="window" />
133d4401354Smrg		<field type="CARD16" name="enable" mask="NotifyMask" />
134d4401354Smrg		<pad bytes="2" />
135d4401354Smrg	</request>
136d4401354Smrg
137d4401354Smrg	<!--
138d4401354Smrg	I think this is correct.  It works. though I believe nInfo is a bit high...
139d4401354Smrg	-->
140d4401354Smrg	<request name="GetScreenInfo" opcode="5">
141d4401354Smrg		<field type="WINDOW" name="window" />
142d4401354Smrg		<reply>
143d4401354Smrg			<field type="CARD8" name="rotations" mask="Rotation" />
144d4401354Smrg			<field type="WINDOW" name="root" />
145d4401354Smrg			<field type="TIMESTAMP" name="timestamp" />
146d4401354Smrg			<field type="TIMESTAMP" name="config_timestamp" />
147d4401354Smrg			<field type="CARD16" name="nSizes" />
148d4401354Smrg			<field type="CARD16" name="sizeID" />
149d4401354Smrg			<field type="CARD16" name="rotation" mask="Rotation" />
150d4401354Smrg			<field type="CARD16" name="rate" />
151d4401354Smrg			<field type="CARD16" name="nInfo" />
152d4401354Smrg			<pad bytes="2" />
153d4401354Smrg			<list type="ScreenSize" name="sizes">
154d4401354Smrg			    <fieldref>nSizes</fieldref>
155d4401354Smrg			</list>
156d4401354Smrg			<list type="RefreshRates" name="rates">
157d4401354Smrg				<op op="-">
158d4401354Smrg					<fieldref>nInfo</fieldref>
159d4401354Smrg					<fieldref>nSizes</fieldref>
160d4401354Smrg				</op>
161d4401354Smrg			</list>
162d4401354Smrg		</reply>
163d4401354Smrg	</request>
164d4401354Smrg
165d4401354Smrg	<!-- new in version 1.2 -->
166d4401354Smrg
167d4401354Smrg	<request name="GetScreenSizeRange" opcode="6">
168d4401354Smrg		<field type="WINDOW" name="window" />
169d4401354Smrg		<reply>
170d4401354Smrg			<pad bytes="1" />
171d4401354Smrg			<field type="CARD16" name="min_width" />
172d4401354Smrg			<field type="CARD16" name="min_height" />
173d4401354Smrg			<field type="CARD16" name="max_width" />
174d4401354Smrg			<field type="CARD16" name="max_height" />
175d4401354Smrg			<pad bytes="16" />
176d4401354Smrg		</reply>
177d4401354Smrg	</request>
178d4401354Smrg
179d4401354Smrg	<request name="SetScreenSize" opcode="7">
180d4401354Smrg		<field type="WINDOW" name="window" />
181d4401354Smrg		<field type="CARD16" name="width" />    <!-- pixels -->
182d4401354Smrg		<field type="CARD16" name="height" />
183d4401354Smrg		<field type="CARD32" name="mm_width" />  <!-- millimeters -->
184d4401354Smrg		<field type="CARD32" name="mm_height" />
185d4401354Smrg	</request>
186d4401354Smrg
187d4401354Smrg	<!-- for GetScreenResources.ModeInfo.ModeFlag -->
188d4401354Smrg	<enum name="ModeFlag">
189d4401354Smrg		<item name="HsyncPositive"> <bit>0</bit></item>
190d4401354Smrg		<item name="HsyncNegative"> <bit>1</bit></item>
191d4401354Smrg		<item name="VsyncPositive"> <bit>2</bit></item>
192d4401354Smrg		<item name="VsyncNegative"> <bit>3</bit></item>
193d4401354Smrg		<item name="Interlace">     <bit>4</bit></item>
194d4401354Smrg		<item name="DoubleScan">    <bit>5</bit></item>
195d4401354Smrg		<item name="Csync">         <bit>6</bit></item>
196d4401354Smrg		<item name="CsyncPositive"> <bit>7</bit></item>
197d4401354Smrg		<item name="CsyncNegative"> <bit>8</bit></item>
198d4401354Smrg		<item name="HskewPresent">  <bit>9</bit></item>
199d4401354Smrg		<item name="Bcast">         <bit>10</bit></item>
200d4401354Smrg		<item name="PixelMultiplex"><bit>11</bit></item>
201d4401354Smrg		<item name="DoubleClock">   <bit>12</bit></item>
202d4401354Smrg		<item name="HalveClock">    <bit>13</bit></item>
203d4401354Smrg	</enum>
204d4401354Smrg
205d4401354Smrg	<struct name="ModeInfo">
206d4401354Smrg		<field type="CARD32" name="id" />
207d4401354Smrg		<field type="CARD16" name="width" />
208d4401354Smrg		<field type="CARD16" name="height" />
209d4401354Smrg		<field type="CARD32" name="dot_clock" />
210d4401354Smrg		<field type="CARD16" name="hsync_start" />
211d4401354Smrg		<field type="CARD16" name="hsync_end" />
212d4401354Smrg		<field type="CARD16" name="htotal" />
213d4401354Smrg		<field type="CARD16" name="hskew" />
214d4401354Smrg		<field type="CARD16" name="vsync_start" />
215d4401354Smrg		<field type="CARD16" name="vsync_end" />
216d4401354Smrg		<field type="CARD16" name="vtotal" />
217d4401354Smrg		<field type="CARD16" name="name_len" />
218d4401354Smrg		<field type="CARD32" name="mode_flags" mask="ModeFlag" />
219d4401354Smrg		<!-- the mode name itself -->
220d4401354Smrg	</struct>
221d4401354Smrg
222d4401354Smrg	<request name="GetScreenResources" opcode="8">
223d4401354Smrg		<field type="WINDOW" name="window" />
224d4401354Smrg		<reply>
225d4401354Smrg			<pad bytes="1" />
226d4401354Smrg			<field type="TIMESTAMP" name="timestamp" />
227d4401354Smrg			<field type="TIMESTAMP" name="config_timestamp" />
228d4401354Smrg			<field type="CARD16" name="num_crtcs" />
229d4401354Smrg			<field type="CARD16" name="num_outputs" />
230d4401354Smrg			<field type="CARD16" name="num_modes" />
231d4401354Smrg			<field type="CARD16" name="names_len" />
232d4401354Smrg			<pad bytes="8" />
233d4401354Smrg			<list type="CRTC" name="crtcs">
234d4401354Smrg			    <fieldref>num_crtcs</fieldref>
235d4401354Smrg			</list>
236d4401354Smrg			<list type="OUTPUT" name="outputs">
237d4401354Smrg			    <fieldref>num_outputs</fieldref>
238d4401354Smrg			</list>
239d4401354Smrg			<list type="ModeInfo" name="modes">
240d4401354Smrg			    <fieldref>num_modes</fieldref>
241d4401354Smrg			</list>
242d4401354Smrg			<!-- FIXME: this is *not* null separated!
243d4401354Smrg			     One must use ModeInfo.name_len from each previous
244d4401354Smrg			     ModeInfo to infer the position of the name. -->
245d4401354Smrg			<list type="BYTE" name="names">
246d4401354Smrg			    <fieldref>names_len</fieldref>
247d4401354Smrg			</list>
248d4401354Smrg		</reply>
249d4401354Smrg	</request>
250d4401354Smrg
251d4401354Smrg	<!-- for GetOutputInfo.connection -->
252d4401354Smrg	<enum name="Connection">
253f591e195Smrg		<item name="Connected">    <value>0</value> </item>
254f591e195Smrg		<item name="Disconnected"> <value>1</value> </item>
255f591e195Smrg		<item name="Unknown">      <value>2</value> </item>
256d4401354Smrg	</enum>
257d4401354Smrg
258d4401354Smrg	<request name="GetOutputInfo" opcode="9">
259d4401354Smrg		<field type="OUTPUT" name="output" />
260d4401354Smrg		<field type="TIMESTAMP" name="config_timestamp" />
261d4401354Smrg		<reply>
262d4401354Smrg			<field type="CARD8" name="status" enum="SetConfig" />
263d4401354Smrg			<field type="TIMESTAMP" name="timestamp" />
264d4401354Smrg			<field type="CRTC" name="crtc" />
265d4401354Smrg			<field type="CARD32" name="mm_width" />  <!-- millimeters -->
266d4401354Smrg			<field type="CARD32" name="mm_height" />
267d4401354Smrg			<field type="CARD8" name="connection" enum="Connection" />
268d4401354Smrg			<field type="CARD8" name="subpixel_order" enum="SubPixel" />
269d4401354Smrg			<field type="CARD16" name="num_crtcs" />
270d4401354Smrg			<field type="CARD16" name="num_modes" />
271d4401354Smrg			<field type="CARD16" name="num_preferred" />
272d4401354Smrg			<field type="CARD16" name="num_clones" />
273d4401354Smrg			<field type="CARD16" name="name_len" />
274d4401354Smrg			<list type="CRTC" name="crtcs">
275d4401354Smrg			    <fieldref>num_crtcs</fieldref>
276d4401354Smrg			</list>
277d4401354Smrg			<list type="MODE" name="modes">
278d4401354Smrg			    <fieldref>num_modes</fieldref>
279d4401354Smrg			</list>
280d4401354Smrg			<list type="OUTPUT" name="clones">
281d4401354Smrg			    <fieldref>num_clones</fieldref>
282d4401354Smrg			</list>
283d4401354Smrg			<list type="BYTE" name="name">
284d4401354Smrg			    <fieldref>name_len</fieldref>
285d4401354Smrg			</list>
286d4401354Smrg		</reply>
287d4401354Smrg	</request>
288d4401354Smrg
289d4401354Smrg	<request name="ListOutputProperties" opcode="10">
290d4401354Smrg		<field type="OUTPUT" name="output" />
291d4401354Smrg		<reply>
292d4401354Smrg			<pad bytes="1" />
293d4401354Smrg			<field type="CARD16" name="num_atoms" />
294d4401354Smrg			<pad bytes="22" />
295d4401354Smrg			<list type="ATOM" name="atoms">
296d4401354Smrg				<fieldref>num_atoms</fieldref>
297d4401354Smrg			</list>
298d4401354Smrg		</reply>
299d4401354Smrg	</request>
300d4401354Smrg
301d4401354Smrg	<request name="QueryOutputProperty" opcode="11">
302d4401354Smrg		<field type="OUTPUT" name="output" />
303d4401354Smrg		<field type="ATOM" name="property" />
304d4401354Smrg		<reply>
305d4401354Smrg			<pad bytes="1" />
306d4401354Smrg			<field type="BOOL" name="pending" />
307d4401354Smrg			<field type="BOOL" name="range" />
308d4401354Smrg			<field type="BOOL" name="immutable" />
309d4401354Smrg			<pad bytes="21" />
310d4401354Smrg			<list type="INT32" name="validValues">
311d4401354Smrg				<fieldref>length</fieldref>
312d4401354Smrg			</list>
313d4401354Smrg		</reply>
314d4401354Smrg	</request>
315d4401354Smrg
316d4401354Smrg	<request name="ConfigureOutputProperty" opcode="12">
317d4401354Smrg		<field type="OUTPUT" name="output" />
318d4401354Smrg		<field type="ATOM" name="property" />
319d4401354Smrg		<field type="BOOL" name="pending" />
320d4401354Smrg		<field type="BOOL" name="range" />
321d4401354Smrg		<pad bytes="2" />
322d4401354Smrg		<list type="INT32" name="values" />
323d4401354Smrg	</request>
324d4401354Smrg
325d4401354Smrg	<request name="ChangeOutputProperty" opcode="13">
326d4401354Smrg		<field type="OUTPUT" name="output" />
327d4401354Smrg		<field type="ATOM" name="property" />
328d4401354Smrg		<field type="ATOM" name="type" />
329d4401354Smrg		<field type="CARD8" name="format" />
330d4401354Smrg		<field type="CARD8" name="mode" enum="PropMode" />
331d4401354Smrg		<pad bytes="2" />
332d4401354Smrg		<field type="CARD32" name="num_units" />
333d4401354Smrg		<list type="void" name="data">
334d4401354Smrg		    <op op="/">
335d4401354Smrg			<op op="*">
336d4401354Smrg			    <fieldref>num_units</fieldref>
337d4401354Smrg			    <fieldref>format</fieldref>
338d4401354Smrg			</op>
339d4401354Smrg			<value>8</value>
340d4401354Smrg		    </op>
341d4401354Smrg		</list>
342d4401354Smrg	</request>
343d4401354Smrg
344d4401354Smrg	<request name="DeleteOutputProperty" opcode="14">
345d4401354Smrg		<field type="OUTPUT" name="output" />
346d4401354Smrg		<field type="ATOM" name="property" />
347d4401354Smrg	</request>
348d4401354Smrg
349d4401354Smrg	<!-- NOTE: num_items depends on format (8/16/32) -->
350d4401354Smrg	<request name="GetOutputProperty" opcode="15">
351d4401354Smrg		<field type="OUTPUT" name="output" />
352d4401354Smrg		<field type="ATOM" name="property" />
353d4401354Smrg		<field type="ATOM" name="type" altenum="GetPropertyType" />
354d4401354Smrg		<field type="CARD32" name="long_offset" />
355d4401354Smrg		<field type="CARD32" name="long_length" />
356d4401354Smrg		<field type="BOOL" name="delete" />
357d4401354Smrg		<field type="BOOL" name="pending" />
358d4401354Smrg		<pad bytes="2" />
359d4401354Smrg		<reply>
360d4401354Smrg			<field type="CARD8" name="format" />
361d4401354Smrg			<field type="ATOM" name="type" altenum="Atom" />
362d4401354Smrg			<field type="CARD32" name="bytes_after" />
363d4401354Smrg			<field type="CARD32" name="num_items" />
364d4401354Smrg			<pad bytes="12" />
365d4401354Smrg			<list type="BYTE" name="data">
366d4401354Smrg				<!-- n * format / 8 -->
367d4401354Smrg				<op op="*">
368d4401354Smrg					<fieldref>num_items</fieldref>
369d4401354Smrg					<op op="/">
370d4401354Smrg						<fieldref>format</fieldref>
371d4401354Smrg						<value>8</value>
372d4401354Smrg					</op>
373d4401354Smrg				</op>
374d4401354Smrg			</list>
375d4401354Smrg		</reply>
376d4401354Smrg	</request>
377d4401354Smrg
378d4401354Smrg	<request name="CreateMode" opcode="16">
379d4401354Smrg		<field type="WINDOW" name="window" />
380d4401354Smrg		<field type="ModeInfo" name="mode_info" />
381d4401354Smrg		<list type="char" name="name" />
382d4401354Smrg		<reply>
383d4401354Smrg			<pad bytes="1" />
384d4401354Smrg			<field type="MODE" name="mode" />
385d4401354Smrg			<pad bytes="20" />
386d4401354Smrg		</reply>
387d4401354Smrg	</request>
388d4401354Smrg
389d4401354Smrg	<request name="DestroyMode" opcode="17">
390d4401354Smrg		<field type="MODE" name="mode" />
391d4401354Smrg	</request>
392d4401354Smrg
393d4401354Smrg	<request name="AddOutputMode" opcode="18">
394d4401354Smrg		<field type="OUTPUT" name="output" />
395d4401354Smrg		<field type="MODE" name="mode" />
396d4401354Smrg	</request>
397d4401354Smrg
398d4401354Smrg	<request name="DeleteOutputMode" opcode="19">
399d4401354Smrg		<field type="OUTPUT" name="output" />
400d4401354Smrg		<field type="MODE" name="mode" />
401d4401354Smrg	</request>
402d4401354Smrg
403d4401354Smrg	<request name="GetCrtcInfo" opcode="20">
404d4401354Smrg		<field type="CRTC" name="crtc" />
405d4401354Smrg		<field type="TIMESTAMP" name="config_timestamp" />
406d4401354Smrg		<reply>
407d4401354Smrg			<field type="CARD8" name="status" enum="SetConfig" />
408d4401354Smrg			<field type="TIMESTAMP" name="timestamp" />
409d4401354Smrg			<field type="INT16" name="x" />
410d4401354Smrg			<field type="INT16" name="y" />
411d4401354Smrg			<field type="CARD16" name="width" />
412d4401354Smrg			<field type="CARD16" name="height" />
413d4401354Smrg			<field type="MODE" name="mode" />
414d4401354Smrg			<field type="CARD16" name="rotation" mask="Rotation" />
415d4401354Smrg			<field type="CARD16" name="rotations" mask="Rotation" />
416d4401354Smrg			<field type="CARD16" name="num_outputs" />
417d4401354Smrg			<field type="CARD16" name="num_possible_outputs" />
418d4401354Smrg			<list type="OUTPUT" name="outputs">
419d4401354Smrg				<fieldref>num_outputs</fieldref>
420d4401354Smrg			</list>
421d4401354Smrg			<list type="OUTPUT" name="possible">
422d4401354Smrg				<fieldref>num_possible_outputs</fieldref>
423d4401354Smrg			</list>
424d4401354Smrg		</reply>
425d4401354Smrg	</request>
426d4401354Smrg
427d4401354Smrg	<request name="SetCrtcConfig" opcode="21">
428d4401354Smrg		<field type="CRTC" name="crtc" />
429d4401354Smrg		<field type="TIMESTAMP" name="timestamp" />
430d4401354Smrg		<field type="TIMESTAMP" name="config_timestamp" />
431d4401354Smrg		<field type="INT16" name="x" />
432d4401354Smrg		<field type="INT16" name="y" />
433d4401354Smrg		<field type="MODE" name="mode" />
434d4401354Smrg		<field type="CARD16" name="rotation" mask="Rotation" />
435d4401354Smrg		<pad bytes="2" />
436d4401354Smrg		<list type="OUTPUT" name="outputs" />
437d4401354Smrg		<reply>
438d4401354Smrg			<field type="CARD8" name="status" enum="SetConfig" />
439d4401354Smrg			<field type="TIMESTAMP" name="timestamp" />
440d4401354Smrg			<pad bytes="20" />
441d4401354Smrg		</reply>
442d4401354Smrg	</request>
443d4401354Smrg
444d4401354Smrg	<request name="GetCrtcGammaSize" opcode="22">
445d4401354Smrg		<field type="CRTC" name="crtc" />
446d4401354Smrg		<reply>
447d4401354Smrg			<pad bytes="1" />
448d4401354Smrg			<field type="CARD16" name="size" />
449d4401354Smrg			<pad bytes="22" />
450d4401354Smrg		</reply>
451d4401354Smrg	</request>
452d4401354Smrg
453d4401354Smrg	<request name="GetCrtcGamma" opcode="23">
454d4401354Smrg		<field type="CRTC" name="crtc" />
455d4401354Smrg		<reply>
456d4401354Smrg			<pad bytes="1" />
457d4401354Smrg			<field type="CARD16" name="size" />
458d4401354Smrg			<pad bytes="22" />
459d4401354Smrg			<list type="CARD16" name="red">
460d4401354Smrg				<fieldref>size</fieldref>
461d4401354Smrg			</list>
462d4401354Smrg			<list type="CARD16" name="green">
463d4401354Smrg				<fieldref>size</fieldref>
464d4401354Smrg			</list>
465d4401354Smrg			<list type="CARD16" name="blue">
466d4401354Smrg				<fieldref>size</fieldref>
467d4401354Smrg			</list>
468d4401354Smrg		</reply>
469d4401354Smrg	</request>
470d4401354Smrg
471d4401354Smrg	<request name="SetCrtcGamma" opcode="24">
472d4401354Smrg		<field type="CRTC" name="crtc" />
473d4401354Smrg		<field type="CARD16" name="size" />
474d4401354Smrg		<pad bytes="2"/>
475d4401354Smrg		<list type="CARD16" name="red">
476d4401354Smrg			<fieldref>size</fieldref>
477d4401354Smrg		</list>
478d4401354Smrg		<list type="CARD16" name="green">
479d4401354Smrg			<fieldref>size</fieldref>
480d4401354Smrg		</list>
481d4401354Smrg		<list type="CARD16" name="blue">
482d4401354Smrg			<fieldref>size</fieldref>
483d4401354Smrg		</list>
484d4401354Smrg	</request>
485d4401354Smrg
486d4401354Smrg	<!-- new in 1.3 -->
487d4401354Smrg
488d4401354Smrg	<request name="GetScreenResourcesCurrent" opcode="25">
489d4401354Smrg		<field type="WINDOW" name="window" />
490d4401354Smrg		<reply>
491d4401354Smrg			<pad bytes="1" />
492d4401354Smrg			<field type="TIMESTAMP" name="timestamp" />
493d4401354Smrg			<field type="TIMESTAMP" name="config_timestamp" />
494d4401354Smrg			<field type="CARD16" name="num_crtcs" />
495d4401354Smrg			<field type="CARD16" name="num_outputs" />
496d4401354Smrg			<field type="CARD16" name="num_modes" />
497d4401354Smrg			<field type="CARD16" name="names_len" />
498d4401354Smrg			<pad bytes="8" />
499d4401354Smrg			<list type="CRTC" name="crtcs">
500d4401354Smrg			    <fieldref>num_crtcs</fieldref>
501d4401354Smrg			</list>
502d4401354Smrg			<list type="OUTPUT" name="outputs">
503d4401354Smrg			    <fieldref>num_outputs</fieldref>
504d4401354Smrg			</list>
505d4401354Smrg			<list type="ModeInfo" name="modes">
506d4401354Smrg			    <fieldref>num_modes</fieldref>
507d4401354Smrg			</list>
508d4401354Smrg			<!-- FIXME: this is *not* null separated!
509d4401354Smrg			     One must use ModeInfo.name_len from each previous
510d4401354Smrg			     ModeInfo to infer the position of the name. -->
511d4401354Smrg			<list type="BYTE" name="names">
512d4401354Smrg			    <fieldref>names_len</fieldref>
513d4401354Smrg			</list>
514d4401354Smrg		</reply>
515d4401354Smrg	</request>
516d4401354Smrg
517f591e195Smrg	<enum name="Transform">
518f591e195Smrg		<!-- Introduced in version 1.3, but not referenced. -->
519f591e195Smrg		<item name="Unit">       <bit>0</bit></item>
520f591e195Smrg		<item name="ScaleUp">    <bit>1</bit></item>
521f591e195Smrg		<item name="ScaleDown">  <bit>2</bit></item>
522f591e195Smrg		<item name="Projective"> <bit>3</bit></item>
523f591e195Smrg	</enum>
524f591e195Smrg
525d4401354Smrg	<request name="SetCrtcTransform" opcode="26">
526d4401354Smrg		<field type="CRTC" name="crtc" />
527d4401354Smrg		<field type="TRANSFORM" name="transform" />
528d4401354Smrg		<field type="CARD16" name="filter_len" />
529d4401354Smrg		<pad bytes="2" />
530d4401354Smrg		<list type="char" name="filter_name">
531d4401354Smrg			<fieldref>filter_len</fieldref>
532d4401354Smrg		</list>
533891601f5Smrg		<pad align="4" />
534d4401354Smrg		<list type="FIXED" name="filter_params" />
535d4401354Smrg	</request>
536d4401354Smrg
537d4401354Smrg	<request name="GetCrtcTransform" opcode="27">
538d4401354Smrg		<field type="CRTC" name="crtc" />
539d4401354Smrg		<reply>
540d4401354Smrg			<pad bytes="1" />
541d4401354Smrg			<field type="TRANSFORM" name="pending_transform" />
542d4401354Smrg			<field type="BOOL" name="has_transforms" />
543d4401354Smrg			<pad bytes="3" />
544d4401354Smrg			<field type="TRANSFORM" name="current_transform" />
545d4401354Smrg			<pad bytes="4" />
546d4401354Smrg			<field type="CARD16" name="pending_len" />
547d4401354Smrg			<field type="CARD16" name="pending_nparams" />
548d4401354Smrg			<field type="CARD16" name="current_len" />
549d4401354Smrg			<field type="CARD16" name="current_nparams" />
550d4401354Smrg			<list type="char" name="pending_filter_name" >
551d4401354Smrg				<fieldref>pending_len</fieldref>
552d4401354Smrg			</list>
553891601f5Smrg			<pad align="4" />
554d4401354Smrg			<list type="FIXED" name="pending_params" >
555d4401354Smrg				<fieldref>pending_nparams</fieldref>
556d4401354Smrg			</list>
557d4401354Smrg			<list type="char" name="current_filter_name" >
558d4401354Smrg				<fieldref>current_len</fieldref>
559d4401354Smrg			</list>
560891601f5Smrg			<pad align="4" />
561d4401354Smrg			<list type="FIXED" name="current_params" >
562d4401354Smrg				<fieldref>current_nparams</fieldref>
563d4401354Smrg			</list>
564d4401354Smrg		</reply>
565d4401354Smrg	</request>
566d4401354Smrg
567d4401354Smrg	<request name="GetPanning" opcode="28">
568d4401354Smrg		<field type="CRTC" name="crtc" />
569d4401354Smrg		<reply>
570d4401354Smrg			<field type="CARD8" name="status" enum="SetConfig" />
571d4401354Smrg			<field type="TIMESTAMP" name="timestamp" />
572d4401354Smrg			<field type="CARD16" name="left" />
573d4401354Smrg			<field type="CARD16" name="top" />
574d4401354Smrg			<field type="CARD16" name="width" />
575d4401354Smrg			<field type="CARD16" name="height" />
576d4401354Smrg			<field type="CARD16" name="track_left" />
577d4401354Smrg			<field type="CARD16" name="track_top" />
578d4401354Smrg			<field type="CARD16" name="track_width" />
579d4401354Smrg			<field type="CARD16" name="track_height" />
580d4401354Smrg			<field type="INT16" name="border_left" />
581d4401354Smrg			<field type="INT16" name="border_top" />
582d4401354Smrg			<field type="INT16" name="border_right" />
583d4401354Smrg			<field type="INT16" name="border_bottom" />
584d4401354Smrg		</reply>
585d4401354Smrg	</request>
586d4401354Smrg
587d4401354Smrg	<request name="SetPanning" opcode="29">
588d4401354Smrg		<field type="CRTC" name="crtc" />
589d4401354Smrg		<field type="TIMESTAMP" name="timestamp" />
590d4401354Smrg		<field type="CARD16" name="left" />
591d4401354Smrg		<field type="CARD16" name="top" />
592d4401354Smrg		<field type="CARD16" name="width" />
593d4401354Smrg		<field type="CARD16" name="height" />
594d4401354Smrg		<field type="CARD16" name="track_left" />
595d4401354Smrg		<field type="CARD16" name="track_top" />
596d4401354Smrg		<field type="CARD16" name="track_width" />
597d4401354Smrg		<field type="CARD16" name="track_height" />
598d4401354Smrg		<field type="INT16" name="border_left" />
599d4401354Smrg		<field type="INT16" name="border_top" />
600d4401354Smrg		<field type="INT16" name="border_right" />
601d4401354Smrg		<field type="INT16" name="border_bottom" />
602d4401354Smrg		<reply>
603d4401354Smrg			<field type="CARD8" name="status" enum="SetConfig" />
604d4401354Smrg			<field type="TIMESTAMP" name="timestamp" />
605d4401354Smrg		</reply>
606d4401354Smrg	</request>
607d4401354Smrg
608d4401354Smrg	<request name="SetOutputPrimary" opcode="30">
609d4401354Smrg		<field type="WINDOW" name="window" />
610d4401354Smrg		<field type="OUTPUT" name="output" />
611d4401354Smrg	</request>
612d4401354Smrg
613d4401354Smrg	<request name="GetOutputPrimary" opcode="31">
614d4401354Smrg		<field type="WINDOW" name="window" />
615d4401354Smrg		<reply>
616d4401354Smrg			<pad bytes="1" />
617d4401354Smrg			<field type="OUTPUT" name="output" />
618d4401354Smrg		</reply>
619d4401354Smrg	</request>
620d4401354Smrg
621f591e195Smrg	<!-- New in version 1.4 -->
622f591e195Smrg
623f591e195Smrg	<request name="GetProviders" opcode="32">
624f591e195Smrg		<field type="WINDOW" name="window" />
625f591e195Smrg		<reply>
626f591e195Smrg			<pad bytes="1" />
627f591e195Smrg			<field type="TIMESTAMP" name="timestamp" />
628f591e195Smrg			<field type="CARD16" name="num_providers" />
629f591e195Smrg			<pad bytes="18" />
630f591e195Smrg			<list type="PROVIDER" name="providers">
631f591e195Smrg				<fieldref>num_providers</fieldref>
632f591e195Smrg			</list>
633f591e195Smrg		</reply>
634f591e195Smrg	</request>
635f591e195Smrg
636f591e195Smrg	<enum name="ProviderCapability">
637f591e195Smrg		<item name="SourceOutput">  <bit>0</bit></item>
638f591e195Smrg		<item name="SinkOutput">    <bit>1</bit></item>
639f591e195Smrg		<item name="SourceOffload"> <bit>2</bit></item>
640f591e195Smrg		<item name="SinkOffload">   <bit>3</bit></item>
641f591e195Smrg	</enum>
642f591e195Smrg
643f591e195Smrg	<request name="GetProviderInfo" opcode="33">
644f591e195Smrg		<field type="PROVIDER" name="provider" />
645f591e195Smrg		<field type="TIMESTAMP" name="config_timestamp" />
646f591e195Smrg		<reply>
647f591e195Smrg			<field type="CARD8" name="status" />
648f591e195Smrg			<field type="TIMESTAMP" name="timestamp" />
649f591e195Smrg			<field type="CARD32" name="capabilities" mask="ProviderCapability" />
650f591e195Smrg			<field type="CARD16" name="num_crtcs" />
651f591e195Smrg			<field type="CARD16" name="num_outputs" />
652f591e195Smrg			<field type="CARD16" name="num_associated_providers" />
653f591e195Smrg			<field type="CARD16" name="name_len" />
654f591e195Smrg			<pad bytes="8" />
655f591e195Smrg			<list type="CRTC" name="crtcs">
656f591e195Smrg				<fieldref>num_crtcs</fieldref>
657f591e195Smrg			</list>
658f591e195Smrg			<list type="OUTPUT" name="outputs">
659f591e195Smrg				<fieldref>num_outputs</fieldref>
660f591e195Smrg			</list>
661f591e195Smrg			<list type="PROVIDER" name="associated_providers">
662f591e195Smrg				<fieldref>num_associated_providers</fieldref>
663f591e195Smrg			</list>
664f591e195Smrg			<list type="CARD32" name="associated_capability">
665f591e195Smrg				<fieldref>num_associated_providers</fieldref>
666f591e195Smrg			</list>
667f591e195Smrg			<list type="char" name="name">
668f591e195Smrg				<fieldref>name_len</fieldref>
669f591e195Smrg			</list>
670f591e195Smrg			<!-- XXX: Prepared for the future. Until xcbgen supports
671f591e195Smrg			          the align attribute in <pad>, we ignore the
672f591e195Smrg			          trailing pad bytes here.
673f591e195Smrg			<pad align="4" />
674f591e195Smrg			-->
675f591e195Smrg		</reply>
676f591e195Smrg	</request>
677f591e195Smrg
678f591e195Smrg	<request name="SetProviderOffloadSink" opcode="34">
679f591e195Smrg		<field type="PROVIDER" name="provider" />
680f591e195Smrg		<field type="PROVIDER" name="sink_provider" />
681f591e195Smrg		<field type="TIMESTAMP" name="config_timestamp" />
682f591e195Smrg	</request>
683f591e195Smrg
684f591e195Smrg	<request name="SetProviderOutputSource" opcode="35">
685f591e195Smrg		<field type="PROVIDER" name="provider" />
686f591e195Smrg		<field type="PROVIDER" name="source_provider" />
687f591e195Smrg		<field type="TIMESTAMP" name="config_timestamp" />
688f591e195Smrg	</request>
689f591e195Smrg
690f591e195Smrg	<request name="ListProviderProperties" opcode="36">
691f591e195Smrg		<field type="PROVIDER" name="provider" />
692f591e195Smrg		<reply>
693f591e195Smrg			<pad bytes="1" />
694f591e195Smrg			<field type="CARD16" name="num_atoms" />
695f591e195Smrg			<pad bytes="22" />
696f591e195Smrg			<list type="ATOM" name="atoms">
697f591e195Smrg				<fieldref>num_atoms</fieldref>
698f591e195Smrg			</list>
699f591e195Smrg		</reply>
700f591e195Smrg	</request>
701f591e195Smrg
702f591e195Smrg	<request name="QueryProviderProperty" opcode="37">
703f591e195Smrg		<field type="PROVIDER" name="provider" />
704f591e195Smrg		<field type="ATOM" name="property" />
705f591e195Smrg		<reply>
706f591e195Smrg			<pad bytes="1" />
707f591e195Smrg			<field type="BOOL" name="pending" />
708f591e195Smrg			<field type="BOOL" name="range" />
709f591e195Smrg			<field type="BOOL" name="immutable" />
710f591e195Smrg			<pad bytes="21" />
711f591e195Smrg			<list type="INT32" name="valid_values">
712f591e195Smrg				<fieldref>length</fieldref>
713f591e195Smrg			</list>
714f591e195Smrg		</reply>
715f591e195Smrg	</request>
716f591e195Smrg
717f591e195Smrg	<request name="ConfigureProviderProperty" opcode="38">
718f591e195Smrg		<field type="PROVIDER" name="provider" />
719f591e195Smrg		<field type="ATOM" name="property" />
720f591e195Smrg		<field type="BOOL" name="pending" />
721f591e195Smrg		<field type="BOOL" name="range" />
722f591e195Smrg		<pad bytes="2" />
723f591e195Smrg		<list type="INT32" name="values" />
724f591e195Smrg	</request>
725f591e195Smrg
726f591e195Smrg	<request name="ChangeProviderProperty" opcode="39">
727f591e195Smrg		<field type="PROVIDER" name="provider" />
728f591e195Smrg		<field type="ATOM" name="property" />
729f591e195Smrg		<field type="ATOM" name="type" />
730f591e195Smrg		<field type="CARD8" name="format" />
731f591e195Smrg		<field type="CARD8" name="mode" />
732f591e195Smrg		<pad bytes="2" />
733f591e195Smrg		<field type="CARD32" name="num_items" />
734f591e195Smrg		<list type="void" name="data">
735f591e195Smrg			<op op="*">
736f591e195Smrg				<fieldref>num_items</fieldref>
737f591e195Smrg				<op op="/">
738f591e195Smrg					<fieldref>format</fieldref>
739f591e195Smrg					<value>8</value>
740f591e195Smrg				</op>
741f591e195Smrg			</op>
742f591e195Smrg		</list>
743f591e195Smrg	</request>
744f591e195Smrg
745f591e195Smrg	<request name="DeleteProviderProperty" opcode="40">
746f591e195Smrg		<field type="PROVIDER" name="provider" />
747f591e195Smrg		<field type="ATOM" name="property" />
748f591e195Smrg	</request>
749f591e195Smrg
750f591e195Smrg	<request name="GetProviderProperty" opcode="41">
751f591e195Smrg		<field type="PROVIDER" name="provider" />
752f591e195Smrg		<field type="ATOM" name="property" />
753f591e195Smrg		<field type="ATOM" name="type" /> <!-- AnyProperty -->
754f591e195Smrg		<field type="CARD32" name="long_offset" />
755f591e195Smrg		<field type="CARD32" name="long_length" />
756f591e195Smrg		<field type="BOOL" name="delete" />
757f591e195Smrg		<field type="BOOL" name="pending" />
758f591e195Smrg		<pad bytes="2" />
759f591e195Smrg		<reply>
760f591e195Smrg			<field type="CARD8" name="format" />
761f591e195Smrg			<field type="ATOM" name="type" /> <!-- None -->
762f591e195Smrg			<field type="CARD32" name="bytes_after" />
763f591e195Smrg			<field type="CARD32" name="num_items" />
764f591e195Smrg			<pad bytes="12" />
765f591e195Smrg			<list type="void" name="data">
766f591e195Smrg				<op op="*">
767f591e195Smrg					<fieldref>num_items</fieldref>
768f591e195Smrg					<op op="/">
769f591e195Smrg						<fieldref>format</fieldref>
770f591e195Smrg						<value>8</value>
771f591e195Smrg					</op>
772f591e195Smrg				</op>
773f591e195Smrg			</list>
774f591e195Smrg		</reply>
775f591e195Smrg	</request>
776f591e195Smrg
777d4401354Smrg	<!-- Events -->
778d4401354Smrg
779d4401354Smrg	<event name="ScreenChangeNotify" number="0">
780d4401354Smrg		<field type="CARD8" name="rotation" mask="Rotation" />
781d4401354Smrg		<field type="TIMESTAMP" name="timestamp" />
782d4401354Smrg		<field type="TIMESTAMP" name="config_timestamp" />
783d4401354Smrg		<field type="WINDOW" name="root" />
784d4401354Smrg		<field type="WINDOW" name="request_window" />
785d4401354Smrg		<field type="CARD16" name="sizeID" />
786d4401354Smrg		<field type="CARD16" name="subpixel_order" enum="SubPixel" />
787d4401354Smrg		<field type="CARD16" name="width" />
788d4401354Smrg		<field type="CARD16" name="height" />
789d4401354Smrg		<field type="CARD16" name="mwidth" />
790d4401354Smrg		<field type="CARD16" name="mheight" />
791d4401354Smrg	</event>
792d4401354Smrg
793d4401354Smrg	<!-- New in version 1.2 -->
794d4401354Smrg
795d4401354Smrg	<!-- subcode -->
796d4401354Smrg	<enum name="Notify" >
797f591e195Smrg		<item name="CrtcChange">      <value>0</value></item>
798f591e195Smrg		<item name="OutputChange">    <value>1</value></item>
799f591e195Smrg		<item name="OutputProperty">  <value>2</value></item>
800f591e195Smrg		<item name="ProviderChange">  <value>3</value></item>
801f591e195Smrg		<item name="ProviderProperty"><value>4</value></item>
802f591e195Smrg		<item name="ResourceChange">  <value>5</value></item>
803a27842ffSmrg		<item name="Lease">           <value>6</value></item>
804d4401354Smrg	</enum>
805d4401354Smrg
806d4401354Smrg	<struct name="CrtcChange">
807d4401354Smrg		<field type="TIMESTAMP" name="timestamp" />
808d4401354Smrg		<field type="WINDOW" name="window" />
809d4401354Smrg		<field type="CRTC" name="crtc" />
810d4401354Smrg		<field type="MODE" name="mode" />
811d4401354Smrg		<field type="CARD16" name="rotation" mask="Rotation" />
812d4401354Smrg		<pad bytes="2" />
813d4401354Smrg		<field type="INT16" name="x" />
814d4401354Smrg		<field type="INT16" name="y" />
815d4401354Smrg		<field type="CARD16" name="width" />
816d4401354Smrg		<field type="CARD16" name="height" />
817d4401354Smrg	</struct>
818d4401354Smrg
819d4401354Smrg	<struct name="OutputChange">
820d4401354Smrg		<field type="TIMESTAMP" name="timestamp" />
821d4401354Smrg		<field type="TIMESTAMP" name="config_timestamp" />
822d4401354Smrg		<field type="WINDOW" name="window" />
823d4401354Smrg		<field type="OUTPUT" name="output" />
824d4401354Smrg		<field type="CRTC" name="crtc" />
825d4401354Smrg		<field type="MODE" name="mode" />
826d4401354Smrg		<field type="CARD16" name="rotation" mask="Rotation" />
827d4401354Smrg		<field type="CARD8" name="connection" enum="Connection" />
828d4401354Smrg		<field type="CARD8" name="subpixel_order" enum="SubPixel" />
829d4401354Smrg	</struct>
830d4401354Smrg
831d4401354Smrg	<struct name="OutputProperty">
832d4401354Smrg		<field type="WINDOW" name="window" />
833d4401354Smrg		<field type="OUTPUT" name="output" />
834d4401354Smrg		<field type="ATOM" name="atom" />
835d4401354Smrg		<field type="TIMESTAMP" name="timestamp" />
836d4401354Smrg		<field type="CARD8" name="status" enum="Property" />
837d4401354Smrg		<pad bytes="11" />
838d4401354Smrg	</struct>
839d4401354Smrg
840f591e195Smrg	<!-- New in version 1.4 -->
841f591e195Smrg
842f591e195Smrg	<struct name="ProviderChange">
843f591e195Smrg		<field type="TIMESTAMP" name="timestamp" />
844f591e195Smrg		<field type="WINDOW" name="window" />
845f591e195Smrg		<field type="PROVIDER" name="provider" />
846f591e195Smrg		<pad bytes="16" />
847f591e195Smrg	</struct>
848f591e195Smrg
849f591e195Smrg	<struct name="ProviderProperty">
850f591e195Smrg		<field type="WINDOW" name="window" />
851f591e195Smrg		<field type="PROVIDER" name="provider" />
852f591e195Smrg		<field type="ATOM" name="atom" />
853f591e195Smrg		<field type="TIMESTAMP" name="timestamp" />
854f591e195Smrg		<field type="CARD8" name="state" />
855f591e195Smrg		<pad bytes="11" />
856f591e195Smrg	</struct>
857f591e195Smrg
858f591e195Smrg	<struct name="ResourceChange">
859f591e195Smrg		<field type="TIMESTAMP" name="timestamp" />
860f591e195Smrg		<field type="WINDOW" name="window" />
861f591e195Smrg		<pad bytes="20" />
862f591e195Smrg	</struct>
863f591e195Smrg
864891601f5Smrg	<!-- New in version 1.5 -->
865891601f5Smrg
866891601f5Smrg	<struct name="MonitorInfo">
867891601f5Smrg		<field type="ATOM" name="name" />
868891601f5Smrg		<field type="BOOL" name="primary" />
869891601f5Smrg		<field type="BOOL" name="automatic" />
870891601f5Smrg		<field type="CARD16" name="nOutput" />
871891601f5Smrg		<field type="INT16" name="x" />
872891601f5Smrg		<field type="INT16" name="y" />
873891601f5Smrg		<field type="CARD16" name="width" /> <!-- pixels -->
874891601f5Smrg		<field type="CARD16" name="height" /> <!-- pixels -->
875891601f5Smrg		<field type="CARD32" name="width_in_millimeters" />
876891601f5Smrg		<field type="CARD32" name="height_in_millimeters" />
877891601f5Smrg		<list type="OUTPUT" name="outputs">
878891601f5Smrg		    <fieldref>nOutput</fieldref>
879891601f5Smrg		</list>
880891601f5Smrg	</struct>
881891601f5Smrg
882891601f5Smrg	<request name="GetMonitors" opcode="42">
883891601f5Smrg		<field type="WINDOW" name="window" />
884891601f5Smrg		<field type="BOOL" name="get_active" />
885891601f5Smrg		<reply>
886891601f5Smrg			<pad bytes="1" />
887891601f5Smrg			<field type="TIMESTAMP" name="timestamp" />
888891601f5Smrg			<field type="CARD32" name="nMonitors" />
889891601f5Smrg			<field type="CARD32" name="nOutputs" />
890891601f5Smrg			<pad bytes="12" />
891891601f5Smrg			<list type="MonitorInfo" name="monitors">
892891601f5Smrg			    <fieldref>nMonitors</fieldref>
893891601f5Smrg			</list>
894891601f5Smrg		</reply>
895891601f5Smrg	</request>
896891601f5Smrg
897891601f5Smrg	<request name="SetMonitor" opcode="43">
898891601f5Smrg		<field type="WINDOW" name="window" />
899891601f5Smrg		<field type="MonitorInfo" name="monitorinfo" />
900891601f5Smrg	</request>
901891601f5Smrg
902891601f5Smrg	<request name="DeleteMonitor" opcode="44">
903891601f5Smrg		<field type="WINDOW" name="window" />
904891601f5Smrg		<field type="ATOM" name="name" />
905891601f5Smrg	</request>
906a27842ffSmrg
907a27842ffSmrg	<!-- new in 1.6 -->
908a27842ffSmrg
909a27842ffSmrg	<request name="CreateLease" opcode="45">
910a27842ffSmrg	  <field type="WINDOW" name="window" />
911a27842ffSmrg	  <field type="LEASE" name="lid" />
912a27842ffSmrg	  <field type="CARD16" name="num_crtcs" />
913a27842ffSmrg	  <field type="CARD16" name="num_outputs" />
914a27842ffSmrg	  <list type="CRTC" name="crtcs">
915a27842ffSmrg	    <fieldref>num_crtcs</fieldref>
916a27842ffSmrg	  </list>
917a27842ffSmrg	  <list type="OUTPUT" name="outputs">
918a27842ffSmrg	    <fieldref>num_outputs</fieldref>
919a27842ffSmrg	  </list>
920a27842ffSmrg	  <reply>
921a27842ffSmrg	    <field type="CARD8" name="nfd" />
922a27842ffSmrg	    <fd name="master_fd" />
923a27842ffSmrg	    <pad bytes="24" />
924a27842ffSmrg	  </reply>
925a27842ffSmrg	</request>
926a27842ffSmrg
927a27842ffSmrg	<request name="FreeLease" opcode="46">
928a27842ffSmrg	  <field type="LEASE" name="lid" />
929a27842ffSmrg	  <field type="BYTE" name="terminate" />
930a27842ffSmrg	</request>
931a27842ffSmrg
932a27842ffSmrg	<struct name="LeaseNotify">
933a27842ffSmrg		<field type="TIMESTAMP" name="timestamp" />
934a27842ffSmrg		<field type="WINDOW" name="window" />
935a27842ffSmrg		<field type="LEASE" name="lease" />
936a27842ffSmrg		<field type="CARD8" name="created" />
937a27842ffSmrg		<pad bytes="15" />
938a27842ffSmrg	</struct>
939a27842ffSmrg
940a27842ffSmrg	<union name="NotifyData">
941a27842ffSmrg		<field type="CrtcChange"       name="cc" />
942a27842ffSmrg		<field type="OutputChange"     name="oc" />
943a27842ffSmrg		<field type="OutputProperty"   name="op" />
944a27842ffSmrg		<field type="ProviderChange"   name="pc" />
945a27842ffSmrg		<field type="ProviderProperty" name="pp" />
946a27842ffSmrg		<field type="ResourceChange"   name="rc" />
947a27842ffSmrg		<field type="LeaseNotify"      name="lc" />
948a27842ffSmrg	</union>
949a27842ffSmrg
950a27842ffSmrg	<event name="Notify" number="1">
951a27842ffSmrg		<field type="CARD8" name="subCode" enum="Notify" />
952a27842ffSmrg		<field type="NotifyData" name="u" />
953a27842ffSmrg	</event>
954d4401354Smrg</xcb>
955