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