xcb 1.7.0

Rust safe bindings for XCB
Documentation
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2004 Mikko Torni and Josh Triplett.
All Rights Reserved.  See the file COPYING in this directory
for licensing information.
-->
<xcb header="sync" extension-xname="SYNC" extension-name="Sync" major-version="3" minor-version="1">
    <import>xproto</import>

    <xidtype name="ALARM" />

    <enum name="ALARMSTATE">
        <item name="Active">
            <value>0</value>
        </item>
        <item name="Inactive">
            <value>1</value>
        </item>
        <item name="Destroyed">
            <value>2</value>
        </item>
    </enum>

    <xidtype name="COUNTER" />

    <xidtype name="FENCE" />

    <enum name="TESTTYPE">
        <item name="PositiveTransition">
            <value>0</value>
        </item>
        <item name="NegativeTransition">
            <value>1</value>
        </item>
        <item name="PositiveComparison">
            <value>2</value>
        </item>
        <item name="NegativeComparison">
            <value>3</value>
        </item>
    </enum>

    <enum name="VALUETYPE">
        <item name="Absolute">
            <value>0</value>
        </item>
        <item name="Relative">
            <value>1</value>
        </item>
    </enum>

    <enum name="CA">
        <item name="Counter">
            <bit>0</bit>
        </item>
        <item name="ValueType">
            <bit>1</bit>
        </item>
        <item name="Value">
            <bit>2</bit>
        </item>
        <item name="TestType">
            <bit>3</bit>
        </item>
        <item name="Delta">
            <bit>4</bit>
        </item>
        <item name="Events">
            <bit>5</bit>
        </item>
    </enum>

    <struct name="INT64">
        <field type="INT32" name="hi" />
        <field type="CARD32" name="lo" />
    </struct>

    <struct name="SYSTEMCOUNTER">
        <field type="COUNTER" name="counter" />
        <field type="sync:INT64" name="resolution" />
        <field type="CARD16" name="name_len" />
        <list type="char" name="name">
            <fieldref>name_len</fieldref>
        </list>
        <pad align="4" />
    </struct>

    <struct name="TRIGGER">
        <field type="COUNTER" name="counter" />
        <field type="CARD32" name="wait_type" enum="VALUETYPE" />
        <field type="sync:INT64" name="wait_value" />
        <field type="CARD32" name="test_type" enum="TESTTYPE" />
    </struct>

    <struct name="WAITCONDITION">
        <field type="TRIGGER" name="trigger" />
        <field type="sync:INT64" name="event_threshold" />
    </struct>

    <error name="Counter" number="0">
        <field type="CARD32" name="bad_counter" />
        <field type="CARD16" name="minor_opcode" />
        <field type="CARD8" name="major_opcode" />
    </error>

    <error name="Alarm" number="1">
        <field type="CARD32" name="bad_alarm" />
        <field type="CARD16" name="minor_opcode" />
        <field type="CARD8" name="major_opcode" />
    </error>

    <request name="Initialize" opcode="0">
        <field type="CARD8" name="desired_major_version" />
        <field type="CARD8" name="desired_minor_version" />
        <reply>
            <pad bytes="1" />
            <field type="CARD8" name="major_version" />
            <field type="CARD8" name="minor_version" />
            <pad bytes="22" />
        </reply>
    </request>

    <request name="ListSystemCounters" opcode="1">
        <reply>
            <pad bytes="1" />
            <field type="CARD32" name="counters_len" />
            <pad bytes="20" />
            <list type="SYSTEMCOUNTER" name="counters">
                <fieldref>counters_len</fieldref>
            </list>
        </reply>
    </request>

    <request name="CreateCounter" opcode="2">
        <field type="COUNTER" name="id" />
        <field type="sync:INT64" name="initial_value" />
    </request>

    <request name="DestroyCounter" opcode="6">
        <field type="COUNTER" name="counter" />
    </request>

    <request name="QueryCounter" opcode="5">
        <field type="COUNTER" name="counter" />
        <reply>
            <pad bytes="1" />
            <field type="sync:INT64" name="counter_value" />
        </reply>
    </request>

    <request name="Await" opcode="7">
        <list type="WAITCONDITION" name="wait_list" />
    </request>

    <request name="ChangeCounter" opcode="4">
        <field type="COUNTER" name="counter" />
        <field type="sync:INT64" name="amount" />
    </request>

    <request name="SetCounter" opcode="3">
        <field type="COUNTER" name="counter" />
        <field type="sync:INT64" name="value" />
    </request>

    <request name="CreateAlarm" opcode="8">
        <field type="ALARM" name="id" />
        <field type="CARD32" name="value_mask" mask="CA" />
        <switch name="value_list">
            <fieldref>value_mask</fieldref>
            <bitcase>
                <enumref ref="CA">Counter</enumref>
                <field type="COUNTER" name="counter" />
            </bitcase>
            <bitcase>
                <enumref ref="CA">ValueType</enumref>
                <field type="CARD32" name="valueType" enum="VALUETYPE" />
            </bitcase>
            <bitcase>
                <enumref ref="CA">Value</enumref>
                <field type="sync:INT64" name="value" />
            </bitcase>
            <bitcase>
                <enumref ref="CA">TestType</enumref>
                <field type="CARD32" name="testType" enum="TESTTYPE" />
            </bitcase>
            <bitcase>
                <enumref ref="CA">Delta</enumref>
                <field type="sync:INT64" name="delta" />
            </bitcase>
            <bitcase>
                <enumref ref="CA">Events</enumref>
                <field type="CARD32" name="events" />
            </bitcase>
        </switch>
    </request>

    <request name="ChangeAlarm" opcode="9">
        <field type="ALARM" name="id" />
        <field type="CARD32" name="value_mask" mask="CA" />
        <switch name="value_list">
            <fieldref>value_mask</fieldref>
            <bitcase>
                <enumref ref="CA">Counter</enumref>
                <field type="COUNTER" name="counter" />
            </bitcase>
            <bitcase>
                <enumref ref="CA">ValueType</enumref>
                <field type="CARD32" name="valueType" enum="VALUETYPE" />
            </bitcase>
            <bitcase>
                <enumref ref="CA">Value</enumref>
                <field type="sync:INT64" name="value" />
            </bitcase>
            <bitcase>
                <enumref ref="CA">TestType</enumref>
                <field type="CARD32" name="testType" enum="TESTTYPE" />
            </bitcase>
            <bitcase>
                <enumref ref="CA">Delta</enumref>
                <field type="sync:INT64" name="delta" />
            </bitcase>
            <bitcase>
                <enumref ref="CA">Events</enumref>
                <field type="CARD32" name="events" />
            </bitcase>
        </switch>
    </request>

    <request name="DestroyAlarm" opcode="11">
        <field type="ALARM" name="alarm" />
    </request>

    <request name="QueryAlarm" opcode="10">
        <field type="ALARM" name="alarm" />
        <reply>
            <pad bytes="1" />
            <field type="TRIGGER" name="trigger" />
            <field type="sync:INT64" name="delta" />
            <field type="BOOL" name="events" />
            <field type="CARD8" name="state" enum="ALARMSTATE" />
            <pad bytes="2" />
        </reply>
    </request>

    <request name="SetPriority" opcode="12">
        <field type="CARD32" name="id" />
        <field type="INT32" name="priority" />
    </request>

    <request name="GetPriority" opcode="13">
        <field type="CARD32" name="id" />
        <reply>
            <pad bytes="1" />
            <field type="INT32" name="priority" />
        </reply>
    </request>

    <request name="CreateFence" opcode="14">
        <field type="DRAWABLE" name="drawable" />
        <field type="FENCE" name="fence" />
        <field type="BOOL" name="initially_triggered" />
    </request>

    <request name="TriggerFence" opcode="15">
        <field type="FENCE" name="fence" />
    </request>

    <request name="ResetFence" opcode="16">
        <field type="FENCE" name="fence" />
    </request>

    <request name="DestroyFence" opcode="17">
        <field type="FENCE" name="fence" />
    </request>

    <request name="QueryFence" opcode="18">
        <field type="FENCE" name="fence" />
        <reply>
            <pad bytes="1" />
            <field type="BOOL" name="triggered" />
            <pad bytes="23" />
        </reply>
    </request>

    <request name="AwaitFence" opcode="19">
        <list type="FENCE" name="fence_list" />
    </request>

    <event name="CounterNotify" number="0">
        <field type="CARD8" name="kind" />
        <field type="COUNTER" name="counter" />
        <field type="sync:INT64" name="wait_value" />
        <field type="sync:INT64" name="counter_value" />
        <field type="TIMESTAMP" name="timestamp" />
        <field type="CARD16" name="count" />
        <field type="BOOL" name="destroyed" />
        <pad bytes="1" />
    </event>

    <event name="AlarmNotify" number="1">
        <field type="CARD8" name="kind" />
        <field type="ALARM" name="alarm" />
        <field type="sync:INT64" name="counter_value" />
        <field type="sync:INT64" name="alarm_value" />
        <field type="TIMESTAMP" name="timestamp" />
        <field type="CARD8" name="state" enum="ALARMSTATE" />
        <pad bytes="3" />
    </event>
</xcb>