major-version="1" minor-version="2">
<import>xproto</import>
+ <import>render</import>
+
+ <!-- XIDs -->
+ <xidtype name="MODE" />
+ <xidtype name="CRTC" />
+ <xidtype name="OUTPUT" />
<!-- Errors -->
</enum>
<struct name="ScreenSize">
- <field type="INT16" name="width" /> <!-- pixels -->
- <field type="INT16" name="height" />
- <field type="INT16" name="mwidth" /> <!-- millimeters -->
- <field type="INT16" name="mheight" />
+ <field type="CARD16" name="width" /> <!-- pixels -->
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="mwidth" /> <!-- millimeters -->
+ <field type="CARD16" name="mheight" />
</struct>
<struct name="RefreshRates">
<!-- Skip obsolete opcode 1 so old clients fail immediately -->
+ <enum name="SetConfig">
+ <item name="Success"><value>0</value></item>
+ <item name="InvalidConfigTime"><value>1</value></item>
+ <item name="InvalidTime"><value>2</value></item>
+ <item name="Failed"><value>3</value></item>
+ </enum>
+
<!-- This is for the 1.1 version request. I don't believe we need to specify a 1.0 request
as few things used randr 1.0. The only difference is the removal of refresh and padding I think.
BEWARE: the docs lie!
-->
<request name="SetScreenConfig" opcode="2">
- <field type="DRAWABLE" name="drawable" />
+ <field type="WINDOW" name="window" />
<field type="TIMESTAMP" name="timestamp" />
<field type="TIMESTAMP" name="config_timestamp" />
<field type="CARD16" name="sizeID" />
- <field type="INT16" name="rotation" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
<field type="CARD16" name="rate" />
<pad bytes="2" />
<reply>
- <field type="CARD8" name="status" /> <!-- enum SetConfig -->
+ <field type="CARD8" name="status" enum="SetConfig" />
<field type="TIMESTAMP" name="new_timestamp" />
<field type="TIMESTAMP" name="config_timestamp" />
<field type="WINDOW" name="root" />
- <field type="CARD16" name="subpixel_order" />
+ <field type="CARD16" name="subpixel_order" enum="SubPixel" />
<pad bytes="10" />
</reply>
</request>
<!-- opcode 3 is obsolete -->
- <enum name="SetConfig">
- <item name="Success"><value>0</value></item>
- <item name="InvalidConfigTime"><value>1</value></item>
- <item name="InvalidTime"><value>2</value></item>
- <item name="Failed"><value>3</value></item>
+ <enum name="NotifyMask" >
+ <item name="ScreenChange"> <bit>0</bit></item>
+ <!-- new in 1.2 -->
+ <item name="CrtcChange"> <bit>1</bit></item>
+ <item name="OutputChange"> <bit>2</bit></item>
+ <item name="OutputProperty"><bit>3</bit></item>
</enum>
<request name="SelectInput" opcode="4">
<field type="WINDOW" name="window" />
- <field type="CARD16" name="enable" /> <!-- enum SetConfig -->
+ <field type="CARD16" name="enable" mask="NotifyMask" />
<pad bytes="2" />
</request>
<request name="GetScreenInfo" opcode="5">
<field type="WINDOW" name="window" />
<reply>
- <field type="CARD8" name="rotations" />
+ <field type="CARD8" name="rotations" mask="Rotation" />
<field type="WINDOW" name="root" />
<field type="TIMESTAMP" name="timestamp" />
<field type="TIMESTAMP" name="config_timestamp" />
<field type="CARD16" name="nSizes" />
<field type="CARD16" name="sizeID" />
- <field type="INT16" name="rotation" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
<field type="CARD16" name="rate" />
<field type="CARD16" name="nInfo" />
<pad bytes="2" />
<field type="CARD16" name="min_height" />
<field type="CARD16" name="max_width" />
<field type="CARD16" name="max_height" />
+ <pad bytes="16" />
</reply>
</request>
<field type="CARD16" name="vsync_end" />
<field type="CARD16" name="vtotal" />
<field type="CARD16" name="name_len" />
- <field type="CARD32" name="mode_flags" /> <!-- enum ModeFlag -->
+ <field type="CARD32" name="mode_flags" mask="ModeFlag" />
<!-- the mode name itself -->
</struct>
<field type="CARD16" name="num_modes" />
<field type="CARD16" name="names_len" />
<pad bytes="8" />
- <list type="CARD32" name="crtcs">
+ <list type="CRTC" name="crtcs">
<fieldref>num_crtcs</fieldref>
</list>
- <list type="CARD32" name="outputs">
+ <list type="OUTPUT" name="outputs">
<fieldref>num_outputs</fieldref>
</list>
<list type="ModeInfo" name="modes">
</enum>
<request name="GetOutputInfo" opcode="9">
- <field type="CARD32" name="output" />
+ <field type="OUTPUT" name="output" />
<field type="TIMESTAMP" name="config_timestamp" />
<reply>
- <field type="CARD8" name="status" /> <!-- enum SetConfig -->
+ <field type="CARD8" name="status" enum="SetConfig" />
<field type="TIMESTAMP" name="timestamp" />
- <field type="CARD32" name="crtc" />
+ <field type="CRTC" name="crtc" />
<field type="CARD32" name="mm_width" /> <!-- millimeters -->
<field type="CARD32" name="mm_height" />
- <field type="CARD8" name="connection" /> <!-- enum Connection -->
- <field type="CARD8" name="subpixel_order" />
+ <field type="CARD8" name="connection" enum="Connection" />
+ <field type="CARD8" name="subpixel_order" enum="SubPixel" />
<field type="CARD16" name="num_crtcs" />
<field type="CARD16" name="num_modes" />
<field type="CARD16" name="num_preferred" />
<field type="CARD16" name="num_clones" />
<field type="CARD16" name="name_len" />
- <list type="CARD32" name="crtcs">
+ <list type="CRTC" name="crtcs">
<fieldref>num_crtcs</fieldref>
</list>
- <list type="CARD32" name="modes">
+ <list type="MODE" name="modes">
<fieldref>num_modes</fieldref>
</list>
- <list type="CARD32" name="clones">
+ <list type="OUTPUT" name="clones">
<fieldref>num_clones</fieldref>
</list>
<list type="BYTE" name="name">
</request>
<request name="ListOutputProperties" opcode="10">
- <field type="CARD32" name="output" />
+ <field type="OUTPUT" name="output" />
<reply>
<pad bytes="1" />
<field type="CARD16" name="num_atoms" />
</request>
<request name="QueryOutputProperty" opcode="11">
- <field type="CARD32" name="output" />
+ <field type="OUTPUT" name="output" />
<field type="ATOM" name="property" />
<reply>
<pad bytes="1" />
<field type="BOOL" name="range" />
<field type="BOOL" name="immutable" />
<pad bytes="21" />
- <list type="INT32" name="validValues" />
+ <list type="INT32" name="validValues">
+ <fieldref>length</fieldref>
+ </list>
</reply>
</request>
<request name="ConfigureOutputProperty" opcode="12">
- <field type="CARD32" name="output" />
+ <field type="OUTPUT" name="output" />
<field type="ATOM" name="property" />
<field type="BOOL" name="pending" />
<field type="BOOL" name="range" />
<pad bytes="2" />
+ <list type="INT32" name="values" />
</request>
<request name="ChangeOutputProperty" opcode="13">
- <field type="CARD32" name="output" />
+ <field type="OUTPUT" name="output" />
<field type="ATOM" name="property" />
<field type="ATOM" name="type" />
<field type="CARD8" name="format" />
- <field type="CARD8" name="mode" />
+ <field type="CARD8" name="mode" enum="PropMode" />
<pad bytes="2" />
<field type="CARD32" name="num_units" />
+ <list type="void" name="data">
+ <op op="/">
+ <op op="*">
+ <fieldref>num_units</fieldref>
+ <fieldref>format</fieldref>
+ </op>
+ <value>8</value>
+ </op>
+ </list>
</request>
<request name="DeleteOutputProperty" opcode="14">
- <field type="CARD32" name="output" />
+ <field type="OUTPUT" name="output" />
<field type="ATOM" name="property" />
</request>
<!-- NOTE: num_items depends on format (8/16/32) -->
<request name="GetOutputProperty" opcode="15">
- <field type="CARD32" name="output" />
+ <field type="OUTPUT" name="output" />
<field type="ATOM" name="property" />
- <field type="ATOM" name="type" />
+ <field type="ATOM" name="type" altenum="GetPropertyType" />
<field type="CARD32" name="long_offset" />
<field type="CARD32" name="long_length" />
<field type="BOOL" name="delete" />
<field type="BOOL" name="pending" />
+ <pad bytes="2" />
<reply>
<field type="CARD8" name="format" />
- <field type="ATOM" name="type" />
+ <field type="ATOM" name="type" altenum="Atom" />
<field type="CARD32" name="bytes_after" />
<field type="CARD32" name="num_items" />
<pad bytes="12" />
<request name="CreateMode" opcode="16">
<field type="WINDOW" name="window" />
<field type="ModeInfo" name="mode_info" />
+ <list type="char" name="name" />
<reply>
- <field type="CARD8" name="status" /> <!-- enum SetConfig -->
- <field type="CARD32" name="mode" />
+ <pad bytes="1" />
+ <field type="MODE" name="mode" />
+ <pad bytes="20" />
</reply>
</request>
<request name="DestroyMode" opcode="17">
- <field type="CARD32" name="mode" />
+ <field type="MODE" name="mode" />
</request>
<request name="AddOutputMode" opcode="18">
- <field type="CARD32" name="output" />
- <field type="CARD32" name="mode" />
+ <field type="OUTPUT" name="output" />
+ <field type="MODE" name="mode" />
</request>
<request name="DeleteOutputMode" opcode="19">
- <field type="CARD32" name="output" />
- <field type="CARD32" name="mode" />
+ <field type="OUTPUT" name="output" />
+ <field type="MODE" name="mode" />
</request>
<request name="GetCrtcInfo" opcode="20">
- <field type="CARD32" name="crtc" />
+ <field type="CRTC" name="crtc" />
<field type="TIMESTAMP" name="config_timestamp" />
<reply>
- <field type="CARD8" name="status" /> <!-- enum SetConfig -->
+ <field type="CARD8" name="status" enum="SetConfig" />
<field type="TIMESTAMP" name="timestamp" />
- <field type="CARD32" name="crtc" />
<field type="INT16" name="x" />
<field type="INT16" name="y" />
<field type="CARD16" name="width" />
<field type="CARD16" name="height" />
- <field type="CARD32" name="mode" />
- <field type="CARD16" name="rotation" /> <!-- enum Rotation -->
- <field type="CARD16" name="rotations" /> <!-- mask of enum Rotation -->
+ <field type="MODE" name="mode" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <field type="CARD16" name="rotations" mask="Rotation" />
<field type="CARD16" name="num_outputs" />
<field type="CARD16" name="num_possible_outputs" />
- <list type="CARD32" name="outputs">
+ <list type="OUTPUT" name="outputs">
<fieldref>num_outputs</fieldref>
</list>
+ <list type="OUTPUT" name="possible">
+ <fieldref>num_possible_outputs</fieldref>
+ </list>
</reply>
</request>
<request name="SetCrtcConfig" opcode="21">
- <field type="CARD32" name="crtc" />
+ <field type="CRTC" name="crtc" />
<field type="TIMESTAMP" name="timestamp" />
<field type="TIMESTAMP" name="config_timestamp" />
<field type="INT16" name="x" />
<field type="INT16" name="y" />
- <field type="CARD32" name="mode" />
- <field type="CARD16" name="rotation" /> <!-- enum Rotation -->
+ <field type="MODE" name="mode" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <pad bytes="2" />
+ <list type="OUTPUT" name="outputs" />
<reply>
- <field type="CARD8" name="status" /> <!-- enum SetConfig -->
+ <field type="CARD8" name="status" enum="SetConfig" />
<field type="TIMESTAMP" name="timestamp" />
+ <pad bytes="20" />
</reply>
</request>
<request name="GetCrtcGammaSize" opcode="22">
- <field type="CARD32" name="crtc" />
+ <field type="CRTC" name="crtc" />
<reply>
- <field type="CARD8" name="status" /> <!-- enum SetConfig -->
+ <pad bytes="1" />
<field type="CARD16" name="size" />
+ <pad bytes="22" />
</reply>
</request>
<request name="GetCrtcGamma" opcode="23">
- <field type="CARD32" name="crtc" />
+ <field type="CRTC" name="crtc" />
<reply>
- <field type="CARD8" name="status" /> <!-- enum SetConfig -->
+ <pad bytes="1" />
<field type="CARD16" name="size" />
<pad bytes="22" />
<list type="CARD16" name="red">
</request>
<request name="SetCrtcGamma" opcode="24">
- <field type="CARD32" name="crtc" />
+ <field type="CRTC" name="crtc" />
<field type="CARD16" name="size" />
<pad bytes="2"/>
<list type="CARD16" name="red">
<!-- Events -->
- <enum name="NotifyMask" >
- <item name="ScreenChange"> <bit>0</bit></item>
- <!-- new in 1.2 -->
- <item name="CrtcChange"> <bit>1</bit></item>
- <item name="OutputChange"> <bit>2</bit></item>
- <item name="OutputProperty"><bit>3</bit></item>
- </enum>
-
<event name="ScreenChangeNotify" number="0">
- <field type="CARD8" name="rotation" />
+ <field type="CARD8" name="rotation" mask="Rotation" />
<field type="TIMESTAMP" name="timestamp" />
<field type="TIMESTAMP" name="config_timestamp" />
<field type="WINDOW" name="root" />
<field type="WINDOW" name="request_window" />
<field type="CARD16" name="sizeID" />
- <field type="CARD16" name="subpixel_order" />
+ <field type="CARD16" name="subpixel_order" enum="SubPixel" />
<field type="CARD16" name="width" />
<field type="CARD16" name="height" />
<field type="CARD16" name="mwidth" />
<struct name="CrtcChange">
<field type="TIMESTAMP" name="timestamp" />
<field type="WINDOW" name="window" />
- <field type="CARD32" name="crtc" />
- <field type="CARD32" name="mode" />
- <field type="CARD16" name="rotation" /> <!-- enum Rotation -->
+ <field type="CRTC" name="crtc" />
+ <field type="MODE" name="mode" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
<pad bytes="2" />
<field type="INT16" name="x" />
<field type="INT16" name="y" />
<field type="TIMESTAMP" name="timestamp" />
<field type="TIMESTAMP" name="config_timestamp" />
<field type="WINDOW" name="window" />
- <field type="CARD32" name="output" />
- <field type="CARD32" name="crtc" />
- <field type="CARD32" name="mode" />
- <field type="CARD16" name="rotation" /> <!-- enum Rotation -->
- <field type="CARD8" name="connection" /> <!-- enum Connection -->
- <field type="CARD8" name="subpixel_order" />
+ <field type="OUTPUT" name="output" />
+ <field type="CRTC" name="crtc" />
+ <field type="MODE" name="mode" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <field type="CARD8" name="connection" enum="Connection" />
+ <field type="CARD8" name="subpixel_order" enum="SubPixel" />
</struct>
<struct name="OutputProperty">
<field type="WINDOW" name="window" />
- <field type="CARD32" name="output" />
+ <field type="OUTPUT" name="output" />
<field type="ATOM" name="atom" />
<field type="TIMESTAMP" name="timestamp" />
- <field type="CARD8" name="status" /> <!-- core enum Property -->
+ <field type="CARD8" name="status" enum="Property" />
<pad bytes="11" />
</struct>
</union>
<event name="Notify" number="1">
- <field type="CARD8" name="subCode" /> <!-- enum Notify -->
+ <field type="CARD8" name="subCode" enum="Notify" />
<field type="NotifyData" name="u" />
</event>
</xcb>