<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:doc="http://www.gtk.org/introspection/doc/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <include name="GstBase" version="1.0"/>
  <package name="spice-client-glib-2.0"/>
  <c:include name="spice-client.h"/>
  <doc:format name="unknown"/>
  <namespace name="SpiceClientGLib"
             version="2.0"
             shared-library="libspice-client-glib-2.0.so.8"
             c:identifier-prefixes="Spice"
             c:symbol-prefixes="spice">
    <function-macro name="AUDIO" c:identifier="SPICE_AUDIO" introspectable="0">
      <source-position filename="src/spice-audio.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="AUDIO_CLASS"
                    c:identifier="SPICE_AUDIO_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-audio.h" line="37"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="AUDIO_GET_CLASS"
                    c:identifier="SPICE_AUDIO_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-audio.h" line="46"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Audio"
           c:symbol-prefix="audio"
           c:type="SpiceAudio"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="SpiceAudio"
           glib:get-type="spice_audio_get_type"
           glib:type-struct="AudioClass">
      <doc xml:space="preserve"
           filename="src/spice-audio.h"
           line="53">The #SpiceAudio struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/spice-audio.h" line="99"/>
      <constructor name="new"
                   c:identifier="spice_audio_new"
                   deprecated="1"
                   deprecated-version="0.8">
        <doc xml:space="preserve"
             filename="src/spice-audio.c"
             line="246">Once instantiated, #SpiceAudio will handle the playback and record
channels to stream to your local audio system.</doc>
        <doc-deprecated xml:space="preserve">Use spice_audio_get() instead</doc-deprecated>
        <source-position filename="src/spice-audio.h" line="107"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/spice-audio.c"
               line="257">a new #SpiceAudio instance or %NULL if no backend or failed.</doc>
          <type name="Audio" c:type="SpiceAudio*"/>
        </return-value>
        <parameters>
          <parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-audio.c"
                 line="248">the #SpiceSession to connect to</doc>
            <type name="Session" c:type="SpiceSession*"/>
          </parameter>
          <parameter name="context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/spice-audio.c"
                 line="249">a #GMainContext to attach to (or %NULL for
default).</doc>
            <type name="GLib.MainContext" c:type="GMainContext*"/>
          </parameter>
          <parameter name="name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/spice-audio.c"
                 line="251">a name for the audio channels (or %NULL for
application name).</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="get" c:identifier="spice_audio_get">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="2745">Gets the #SpiceAudio associated with the passed in #SpiceSession.
A new #SpiceAudio instance will be created the first time this
function is called for a certain #SpiceSession.

Note that this function returns a weak reference, which should not be used
after the #SpiceSession itself has been unref-ed by the caller.</doc>
        <source-position filename="src/spice-audio.h" line="103"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-session.c"
               line="2757">a weak reference to a #SpiceAudio
instance or %NULL if failed.</doc>
          <type name="Audio" c:type="SpiceAudio*"/>
        </return-value>
        <parameters>
          <parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="2747">the #SpiceSession to connect to</doc>
            <type name="Session" c:type="SpiceSession*"/>
          </parameter>
          <parameter name="context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="2748">a #GMainContext to attach to (or %NULL for default).</doc>
            <type name="GLib.MainContext" c:type="GMainContext*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="connect_channel">
        <source-position filename="src/spice-audio.h" line="74"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="audio" transfer-ownership="none">
            <type name="Audio" c:type="SpiceAudio*"/>
          </instance-parameter>
          <parameter name="channel" transfer-ownership="none">
            <type name="Channel" c:type="SpiceChannel*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_playback_volume_info_async"
                      glib:finish-func="get_playback_volume_info_finish">
        <source-position filename="src/spice-audio.h" line="75"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="audio" transfer-ownership="none">
            <type name="Audio" c:type="SpiceAudio*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="main_channel" transfer-ownership="none">
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="3">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_playback_volume_info_finish" throws="1">
        <source-position filename="src/spice-audio.h" line="80"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="audio" transfer-ownership="none">
            <type name="Audio" c:type="SpiceAudio*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="mute" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="nchannels" transfer-ownership="none">
            <type name="guint8" c:type="guint8*"/>
          </parameter>
          <parameter name="volume" transfer-ownership="none">
            <type name="guint16" c:type="guint16**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_record_volume_info_async"
                      glib:finish-func="get_record_volume_info_finish">
        <source-position filename="src/spice-audio.h" line="86"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="audio" transfer-ownership="none">
            <type name="Audio" c:type="SpiceAudio*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="main_channel" transfer-ownership="none">
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="3">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_record_volume_info_finish" throws="1">
        <source-position filename="src/spice-audio.h" line="91"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="audio" transfer-ownership="none">
            <type name="Audio" c:type="SpiceAudio*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="mute" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="nchannels" transfer-ownership="none">
            <type name="guint8" c:type="guint8*"/>
          </parameter>
          <parameter name="volume" transfer-ownership="none">
            <type name="guint16" c:type="guint16**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <property name="main-context"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="GLib.MainContext"/>
      </property>
      <property name="session"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/spice-audio.c"
             line="117">#SpiceSession this #SpiceAudio is associated with</doc>
        <type name="Session"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="AudioPrivate" c:type="SpiceAudioPrivate*"/>
      </field>
    </class>
    <record name="AudioClass"
            c:type="SpiceAudioClass"
            glib:is-gtype-struct-for="Audio">
      <doc xml:space="preserve"
           filename="src/spice-audio.h"
           line="64">Class structure for #SpiceAudio.</doc>
      <source-position filename="src/spice-audio.h" line="99"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/spice-audio.h"
             line="66">Parent class.</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="connect_channel">
        <callback name="connect_channel">
          <source-position filename="src/spice-audio.h" line="74"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="audio" transfer-ownership="none">
              <type name="Audio" c:type="SpiceAudio*"/>
            </parameter>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_playback_volume_info_async">
        <callback name="get_playback_volume_info_async">
          <source-position filename="src/spice-audio.h" line="75"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="audio" transfer-ownership="none">
              <type name="Audio" c:type="SpiceAudio*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="main_channel" transfer-ownership="none">
              <type name="MainChannel" c:type="SpiceMainChannel*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="4">
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="4">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_playback_volume_info_finish">
        <callback name="get_playback_volume_info_finish" throws="1">
          <source-position filename="src/spice-audio.h" line="80"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="audio" transfer-ownership="none">
              <type name="Audio" c:type="SpiceAudio*"/>
            </parameter>
            <parameter name="res" transfer-ownership="none">
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
            <parameter name="mute" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean*"/>
            </parameter>
            <parameter name="nchannels" transfer-ownership="none">
              <type name="guint8" c:type="guint8*"/>
            </parameter>
            <parameter name="volume" transfer-ownership="none">
              <type name="guint16" c:type="guint16**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_record_volume_info_async">
        <callback name="get_record_volume_info_async">
          <source-position filename="src/spice-audio.h" line="86"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="audio" transfer-ownership="none">
              <type name="Audio" c:type="SpiceAudio*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="main_channel" transfer-ownership="none">
              <type name="MainChannel" c:type="SpiceMainChannel*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="4">
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="4">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_record_volume_info_finish">
        <callback name="get_record_volume_info_finish" throws="1">
          <source-position filename="src/spice-audio.h" line="91"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="audio" transfer-ownership="none">
              <type name="Audio" c:type="SpiceAudio*"/>
            </parameter>
            <parameter name="res" transfer-ownership="none">
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
            <parameter name="mute" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean*"/>
            </parameter>
            <parameter name="nchannels" transfer-ownership="none">
              <type name="guint8" c:type="guint8*"/>
            </parameter>
            <parameter name="volume" transfer-ownership="none">
              <type name="guint16" c:type="guint16**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_spice_reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="AudioPrivate"
            c:type="SpiceAudioPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/spice-audio.h" line="51"/>
    </record>
    <function-macro name="CHANNEL"
                    c:identifier="SPICE_CHANNEL"
                    introspectable="0">
      <source-position filename="src/spice-channel.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CHANNEL_CLASS"
                    c:identifier="SPICE_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-channel.h" line="34"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CHANNEL_GET_CLASS"
                    c:identifier="SPICE_CHANNEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-channel.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CURSOR_CHANNEL"
                    c:identifier="SPICE_CURSOR_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-cursor.h" line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CURSOR_CHANNEL_CLASS"
                    c:identifier="SPICE_CURSOR_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-cursor.h" line="30"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CURSOR_CHANNEL_GET_CLASS"
                    c:identifier="SPICE_CURSOR_CHANNEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-cursor.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Channel"
           c:symbol-prefix="channel"
           c:type="SpiceChannel"
           parent="GObject.Object"
           glib:type-name="SpiceChannel"
           glib:get-type="spice_channel_get_type"
           glib:type-struct="ChannelClass">
      <doc xml:space="preserve"
           filename="src/spice-channel.h"
           line="69">The #SpiceChannel struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/spice-channel.h" line="123"/>
      <constructor name="new" c:identifier="spice_channel_new">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="2254">Create a new #SpiceChannel of type @type, and channel ID @id.</doc>
        <source-position filename="src/spice-channel.h" line="129"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/spice-channel.c"
               line="2262">a weak reference to #SpiceChannel, the session owns the reference</doc>
          <type name="Channel" c:type="SpiceChannel*"/>
        </return-value>
        <parameters>
          <parameter name="s" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2256">the @SpiceSession the channel is linked to</doc>
            <type name="Session" c:type="SpiceSession*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2257">the requested SPICECHANNELPRIVATE type</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2258">the channel-id</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="string_to_type"
                c:identifier="spice_channel_string_to_type"
                version="0.21">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="2209">Convert a channel-type property value to a string.</doc>
        <source-position filename="src/spice-channel.h" line="145"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-channel.c"
               line="2215">the channel-type property value for a @str channel</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2211">a string representation of the channel-type property</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="type_to_string"
                c:identifier="spice_channel_type_to_string"
                version="0.20">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="2189">Convert a channel-type property value to a string.</doc>
        <source-position filename="src/spice-channel.h" line="144"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-channel.c"
               line="2195">string representation of @type.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2191">a channel-type property value</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="channel_event">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="86">Signal class handler for the #SpiceChannel::channel_event signal.</doc>
        <source-position filename="src/spice-channel.h" line="97"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="none">
            <type name="ChannelEvent" c:type="SpiceChannelEvent"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="channel_reset">
        <source-position filename="src/spice-channel.h" line="110"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="migrating" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="channel_send_migration_handshake">
        <source-position filename="src/spice-channel.h" line="115"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="channel_up">
        <source-position filename="src/spice-channel.h" line="103"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="handle_msg">
        <source-position filename="src/spice-channel.h" line="102"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="msg" transfer-ownership="none">
            <type name="MsgIn" c:type="SpiceMsgIn*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="iterate_read">
        <source-position filename="src/spice-channel.h" line="105"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="iterate_write">
        <source-position filename="src/spice-channel.h" line="104"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="open_fd">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="87">Signal class handler for the #SpiceChannel::open_fd signal.</doc>
        <source-position filename="src/spice-channel.h" line="98"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="with_tls" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="connect" c:identifier="spice_channel_connect">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="2815">Connect the channel, using #SpiceSession connection informations</doc>
        <source-position filename="src/spice-channel.h" line="130"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-channel.c"
               line="2821">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2817">a #SpiceChannel</doc>
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="destroy"
              c:identifier="spice_channel_destroy"
              deprecated="1"
              deprecated-version="0.27">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="2336">Disconnect and unref the @channel.</doc>
        <doc-deprecated xml:space="preserve">this function has been deprecated because it is
misleading, the object is not actually destroyed. Instead, it is
recommended to call explicitely spice_channel_disconnect() and
g_object_unref().</doc-deprecated>
        <source-position filename="src/spice-channel.h" line="141"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2338">a #SpiceChannel</doc>
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="disconnect" c:identifier="spice_channel_disconnect">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="2930">Close the socket and reset connection specific data. Finally, emit
@reason #SpiceChannel::channel-event on main context if not
#SPICE_CHANNEL_NONE.</doc>
        <source-position filename="src/spice-channel.h" line="132"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2932">a #SpiceChannel</doc>
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="reason" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2933">a channel event emitted on main context (or #SPICE_CHANNEL_NONE)</doc>
            <type name="ChannelEvent" c:type="SpiceChannelEvent"/>
          </parameter>
        </parameters>
      </method>
      <method name="flush_async"
              c:identifier="spice_channel_flush_async"
              version="0.15"
              glib:finish-func="flush_finish">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="3169">Forces an asynchronous write of all user-space buffered data for
the given channel.

When the operation is finished callback will be called. You can
then call spice_channel_flush_finish() to get the result of the
operation.</doc>
        <source-position filename="src/spice-channel.h" line="135"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="3171">a #SpiceChannel</doc>
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="3172">optional GCancellable object, %NULL to ignore</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="3173">callback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="3174">the data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="flush_finish"
              c:identifier="spice_channel_flush_finish"
              version="0.15"
              throws="1">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="3217">Finishes flushing a channel.</doc>
        <source-position filename="src/spice-channel.h" line="136"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-channel.c"
               line="3226">%TRUE if flush operation succeeded, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="3219">a #SpiceChannel</doc>
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="3220">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_error"
              c:identifier="spice_channel_get_error"
              version="0.24">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="2556">Retrieves the #GError currently set on channel, if the #SpiceChannel
is in error state and can provide additional error details.</doc>
        <source-position filename="src/spice-channel.h" line="147"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-channel.c"
               line="2563">the pointer to the error, or %NULL</doc>
          <type name="GLib.Error" c:type="const GError*"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2558">a #SpiceChannel</doc>
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open_fd" c:identifier="spice_channel_open_fd">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="2836">Connect the channel using @fd socket.

If @fd is -1, a valid fd will be requested later via the
SpiceChannel::open-fd signal.</doc>
        <source-position filename="src/spice-channel.h" line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-channel.c"
               line="2847">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2838">a #SpiceChannel</doc>
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="fd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2839">a file descriptor (socket) or -1.
request mechanism</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_capability"
              c:identifier="spice_channel_set_capability"
              deprecated="1"
              deprecated-version="0.13">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="3036">Enable specific channel-kind capability.</doc>
        <doc-deprecated xml:space="preserve">this function has been removed</doc-deprecated>
        <source-position filename="src/spice-channel.h" line="139"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="3038">a #SpiceChannel</doc>
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="cap" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="3039">a capability</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="test_capability"
              c:identifier="spice_channel_test_capability">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="2985">Test availability of remote "channel kind capability".</doc>
        <source-position filename="src/spice-channel.h" line="133"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-channel.c"
               line="2992">%TRUE if @cap (channel kind capability) is available.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2987">a #SpiceChannel</doc>
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="cap" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="2988">a capability</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="test_common_capability"
              c:identifier="spice_channel_test_common_capability">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="3004">Test availability of remote "common channel capability".</doc>
        <source-position filename="src/spice-channel.h" line="134"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-channel.c"
               line="3011">%TRUE if @cap (common channel capability) is available.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="3006">a #SpiceChannel</doc>
            <type name="Channel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="cap" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="3007">a capability</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <property name="channel-id"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="-1">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="channel-type"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="-1">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="socket" version="0.33" transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="329">Get the underlying #GSocket. Note that you should not read or
write any data to it directly since this will likely corrupt
the channel stream.  This property is mainly useful to get some
connections details.</doc>
        <type name="Gio.Socket"/>
      </property>
      <property name="spice-session"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Session"/>
      </property>
      <property name="total-read-bytes"
                transfer-ownership="none"
                default-value="0">
        <type name="gulong" c:type="gulong"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="ChannelPrivate" c:type="SpiceChannelPrivate*"/>
      </field>
      <glib:signal name="channel-event" when="first">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="348">The #SpiceChannel::channel-event signal is emitted when the
state of the connection is changed. In case of errors,
spice_channel_get_error() may provide additional informations
on the source of the error.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="351">a #SpiceChannelEvent</doc>
            <type name="ChannelEvent"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="open-fd" when="first">
        <doc xml:space="preserve"
             filename="src/spice-channel.c"
             line="369">The #SpiceChannel::open-fd signal is emitted when a new
connection is requested. This signal is emitted when the
connection is made with spice_session_open_fd().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="with_tls" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-channel.c"
                 line="372">wether TLS connection is requested</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ChannelClass"
            c:type="SpiceChannelClass"
            glib:is-gtype-struct-for="Channel">
      <doc xml:space="preserve"
           filename="src/spice-channel.h"
           line="83">Class structure for #SpiceChannel.</doc>
      <source-position filename="src/spice-channel.h" line="123"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="85">Parent class.</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="channel_event">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="86">Signal class handler for the #SpiceChannel::channel_event signal.</doc>
        <callback name="channel_event">
          <source-position filename="src/spice-channel.h" line="97"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="ChannelEvent" c:type="SpiceChannelEvent"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="open_fd">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="87">Signal class handler for the #SpiceChannel::open_fd signal.</doc>
        <callback name="open_fd">
          <source-position filename="src/spice-channel.h" line="98"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
            <parameter name="with_tls" transfer-ownership="none">
              <type name="gint" c:type="int"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="handle_msg">
        <callback name="handle_msg">
          <source-position filename="src/spice-channel.h" line="102"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
            <parameter name="msg" transfer-ownership="none">
              <type name="MsgIn" c:type="SpiceMsgIn*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="channel_up">
        <callback name="channel_up">
          <source-position filename="src/spice-channel.h" line="103"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="iterate_write">
        <callback name="iterate_write">
          <source-position filename="src/spice-channel.h" line="104"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="iterate_read">
        <callback name="iterate_read">
          <source-position filename="src/spice-channel.h" line="105"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="deprecated" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="channel_reset">
        <callback name="channel_reset">
          <source-position filename="src/spice-channel.h" line="110"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
            <parameter name="migrating" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="deprecated2" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="channel_send_migration_handshake">
        <callback name="channel_send_migration_handshake">
          <source-position filename="src/spice-channel.h" line="115"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ChannelClassPrivate" c:type="SpiceChannelClassPrivate*"/>
      </field>
      <field name="_spice_reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="ChannelClassPrivate"
            c:type="SpiceChannelClassPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/spice-channel.h" line="81"/>
    </record>
    <enumeration name="ChannelEvent"
                 glib:type-name="SpiceChannelEvent"
                 glib:get-type="spice_channel_event_get_type"
                 c:type="SpiceChannelEvent">
      <doc xml:space="preserve"
           filename="src/spice-channel.h"
           line="42">An event, emitted by #SpiceChannel::channel-event signal.</doc>
      <member name="none"
              value="0"
              c:identifier="SPICE_CHANNEL_NONE"
              glib:nick="none"
              glib:name="SPICE_CHANNEL_NONE">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="44">no event, or ignored event</doc>
      </member>
      <member name="opened"
              value="10"
              c:identifier="SPICE_CHANNEL_OPENED"
              glib:nick="opened"
              glib:name="SPICE_CHANNEL_OPENED">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="45">connection is authentified and ready</doc>
      </member>
      <member name="switching"
              value="11"
              c:identifier="SPICE_CHANNEL_SWITCHING"
              glib:nick="switching"
              glib:name="SPICE_CHANNEL_SWITCHING">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="46">disconnecting from the current host and connecting to the target host.</doc>
      </member>
      <member name="closed"
              value="12"
              c:identifier="SPICE_CHANNEL_CLOSED"
              glib:nick="closed"
              glib:name="SPICE_CHANNEL_CLOSED">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="47">connection is closed normally (sent if channel was ready)</doc>
      </member>
      <member name="error_connect"
              value="20"
              c:identifier="SPICE_CHANNEL_ERROR_CONNECT"
              glib:nick="error-connect"
              glib:name="SPICE_CHANNEL_ERROR_CONNECT">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="48">connection error</doc>
      </member>
      <member name="error_tls"
              value="21"
              c:identifier="SPICE_CHANNEL_ERROR_TLS"
              glib:nick="error-tls"
              glib:name="SPICE_CHANNEL_ERROR_TLS">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="49">SSL error</doc>
      </member>
      <member name="error_link"
              value="22"
              c:identifier="SPICE_CHANNEL_ERROR_LINK"
              glib:nick="error-link"
              glib:name="SPICE_CHANNEL_ERROR_LINK">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="50">error during link process</doc>
      </member>
      <member name="error_auth"
              value="23"
              c:identifier="SPICE_CHANNEL_ERROR_AUTH"
              glib:nick="error-auth"
              glib:name="SPICE_CHANNEL_ERROR_AUTH">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="51">authentication error</doc>
      </member>
      <member name="error_io"
              value="24"
              c:identifier="SPICE_CHANNEL_ERROR_IO"
              glib:nick="error-io"
              glib:name="SPICE_CHANNEL_ERROR_IO">
        <doc xml:space="preserve"
             filename="src/spice-channel.h"
             line="52">IO error</doc>
      </member>
    </enumeration>
    <record name="ChannelPrivate"
            c:type="SpiceChannelPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/spice-types.h" line="34"/>
    </record>
    <enumeration name="ClientError"
                 c:type="SpiceClientError"
                 glib:error-domain="spice-client-error-quark">
      <doc xml:space="preserve"
           filename="src/spice-client.h"
           line="64">Error codes returned by spice-client API.</doc>
      <source-position filename="src/spice-client.h" line="85"/>
      <member name="failed" value="0" c:identifier="SPICE_CLIENT_ERROR_FAILED">
        <doc xml:space="preserve"
             filename="src/spice-client.h"
             line="66">generic error code</doc>
      </member>
      <member name="usb_device_rejected"
              value="1"
              c:identifier="SPICE_CLIENT_ERROR_USB_DEVICE_REJECTED">
        <doc xml:space="preserve"
             filename="src/spice-client.h"
             line="67">device redirection rejected by host</doc>
      </member>
      <member name="usb_device_lost"
              value="2"
              c:identifier="SPICE_CLIENT_ERROR_USB_DEVICE_LOST">
        <doc xml:space="preserve"
             filename="src/spice-client.h"
             line="68">device disconnected (fatal IO error)</doc>
      </member>
      <member name="auth_needs_password"
              value="3"
              c:identifier="SPICE_CLIENT_ERROR_AUTH_NEEDS_PASSWORD">
        <doc xml:space="preserve"
             filename="src/spice-client.h"
             line="69">password is required</doc>
      </member>
      <member name="auth_needs_username"
              value="4"
              c:identifier="SPICE_CLIENT_ERROR_AUTH_NEEDS_USERNAME">
        <doc xml:space="preserve"
             filename="src/spice-client.h"
             line="70">username is required</doc>
      </member>
      <member name="auth_needs_password_and_username"
              value="5"
              c:identifier="SPICE_CLIENT_ERROR_AUTH_NEEDS_PASSWORD_AND_USERNAME">
        <doc xml:space="preserve"
             filename="src/spice-client.h"
             line="71">password and username are required</doc>
      </member>
      <member name="usb_service"
              value="6"
              c:identifier="SPICE_CLIENT_ERROR_USB_SERVICE">
        <doc xml:space="preserve"
             filename="src/spice-client.h"
             line="72">USB service error</doc>
      </member>
    </enumeration>
    <class name="CursorChannel"
           c:symbol-prefix="cursor_channel"
           c:type="SpiceCursorChannel"
           parent="Channel"
           glib:type-name="SpiceCursorChannel"
           glib:get-type="spice_cursor_channel_get_type"
           glib:type-struct="CursorChannelClass">
      <doc xml:space="preserve"
           filename="src/channel-cursor.h"
           line="62">The #SpiceCursorChannel struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/channel-cursor.h" line="97"/>
      <virtual-method name="cursor_hide">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="80">Signal class handler for the #SpiceCursorChannel::cursor-hide signal.</doc>
        <source-position filename="src/channel-cursor.h" line="92"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="CursorChannel" c:type="SpiceCursorChannel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="cursor_move">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="79">Signal class handler for the #SpiceCursorChannel::cursor-move signal.</doc>
        <source-position filename="src/channel-cursor.h" line="91"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="CursorChannel" c:type="SpiceCursorChannel*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="cursor_reset">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="81">Signal class handler for the #SpiceCursorChannel::cursor-reset signal.</doc>
        <source-position filename="src/channel-cursor.h" line="93"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="CursorChannel" c:type="SpiceCursorChannel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="cursor_set">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="78">Signal class handler for the #SpiceCursorChannel::cursor-set signal.</doc>
        <source-position filename="src/channel-cursor.h" line="89"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="CursorChannel" c:type="SpiceCursorChannel*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="hot_x" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="hot_y" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="rgba"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <property name="cursor" version="0.34" transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/channel-cursor.c"
             line="179">The last #SpiceCursorShape received.</doc>
        <type name="CursorShape"/>
      </property>
      <field name="parent">
        <type name="Channel" c:type="SpiceChannel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="CursorChannelPrivate" c:type="SpiceCursorChannelPrivate*"/>
      </field>
      <glib:signal name="cursor-hide" when="first">
        <doc xml:space="preserve"
             filename="src/channel-cursor.c"
             line="243">The #SpiceCursorChannel::cursor-hide signal is emitted to hide
the cursor/pointer on the display area.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="cursor-move" when="first">
        <doc xml:space="preserve"
             filename="src/channel-cursor.c"
             line="223">The #SpiceCursorChannel::cursor-move signal is emitted to update
the cursor position on the display area.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-cursor.c"
                 line="226">x position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-cursor.c"
                 line="227">y position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="cursor-reset" when="first">
        <doc xml:space="preserve"
             filename="src/channel-cursor.c"
             line="260">The #SpiceCursorChannel::cursor-reset signal is emitted to
reset the cursor to its default context.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="cursor-set"
                   when="first"
                   deprecated="1"
                   deprecated-version="0.34">
        <doc xml:space="preserve"
             filename="src/channel-cursor.c"
             line="194">The #SpiceCursorChannel::cursor-set signal is emitted to modify
cursor aspect and position on the display area.</doc>
        <doc-deprecated xml:space="preserve">Use #SpiceCursorChannel:cursor notify instead.</doc-deprecated>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-cursor.c"
                 line="197">width of the shape</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-cursor.c"
                 line="198">height of the shape</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="hot_x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-cursor.c"
                 line="199">horizontal offset of the 'hotspot' of the cursor</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="hot_y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-cursor.c"
                 line="200">vertical offset of the 'hotspot' of the cursor</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="rgba"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/channel-cursor.c"
                 line="201">32bits shape data, or %NULL if default cursor. It might
be freed after the signal is emitted, so make sure to copy it
if you need it later!</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="CursorChannelClass"
            c:type="SpiceCursorChannelClass"
            glib:is-gtype-struct-for="CursorChannel">
      <doc xml:space="preserve"
           filename="src/channel-cursor.h"
           line="75">Class structure for #SpiceCursorChannel.</doc>
      <source-position filename="src/channel-cursor.h" line="97"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="77">Parent class.</doc>
        <type name="ChannelClass" c:type="SpiceChannelClass"/>
      </field>
      <field name="cursor_set">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="78">Signal class handler for the #SpiceCursorChannel::cursor-set signal.</doc>
        <callback name="cursor_set">
          <source-position filename="src/channel-cursor.h" line="89"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="CursorChannel" c:type="SpiceCursorChannel*"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="hot_x" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="hot_y" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="rgba"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="cursor_move">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="79">Signal class handler for the #SpiceCursorChannel::cursor-move signal.</doc>
        <callback name="cursor_move">
          <source-position filename="src/channel-cursor.h" line="91"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="CursorChannel" c:type="SpiceCursorChannel*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="cursor_hide">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="80">Signal class handler for the #SpiceCursorChannel::cursor-hide signal.</doc>
        <callback name="cursor_hide">
          <source-position filename="src/channel-cursor.h" line="92"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="CursorChannel" c:type="SpiceCursorChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="cursor_reset">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="81">Signal class handler for the #SpiceCursorChannel::cursor-reset signal.</doc>
        <callback name="cursor_reset">
          <source-position filename="src/channel-cursor.h" line="93"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="CursorChannel" c:type="SpiceCursorChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="CursorChannelPrivate"
            c:type="SpiceCursorChannelPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/channel-cursor.h" line="37"/>
    </record>
    <record name="CursorShape"
            c:type="SpiceCursorShape"
            glib:type-name="SpiceCursorShape"
            glib:get-type="spice_cursor_shape_get_type"
            c:symbol-prefix="cursor_shape">
      <doc xml:space="preserve"
           filename="src/channel-cursor.h"
           line="40">The #SpiceCursorShape structure defines the remote cursor's shape.</doc>
      <source-position filename="src/channel-cursor.h" line="60"/>
      <field name="type" introspectable="0" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="42">a #SpiceCursorType of @data</doc>
        <type c:type="SpiceCursorType"/>
      </field>
      <field name="width" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="43">a width of the remote cursor</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="height" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="44">a height of the remote cursor</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="hot_spot_x" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="45">a 'x' coordinate of the remote cursor</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="hot_spot_y" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="46">a 'y' coordinate of the remote cursor</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="data" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-cursor.h"
             line="47">image data of the remote cursor</doc>
        <type name="gpointer" c:type="gpointer"/>
      </field>
    </record>
    <function-macro name="DEBUG" c:identifier="SPICE_DEBUG" introspectable="0">
      <source-position filename="src/spice-util.h" line="34"/>
      <parameters>
        <parameter name="fmt">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISPLAY_CHANNEL"
                    c:identifier="SPICE_DISPLAY_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-display.h" line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISPLAY_CHANNEL_CLASS"
                    c:identifier="SPICE_DISPLAY_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-display.h" line="30"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISPLAY_CHANNEL_GET_CLASS"
                    c:identifier="SPICE_DISPLAY_CHANNEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-display.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="DisplayChannel"
           c:symbol-prefix="display_channel"
           c:type="SpiceDisplayChannel"
           parent="Channel"
           glib:type-name="SpiceDisplayChannel"
           glib:get-type="spice_display_channel_get_type"
           glib:type-struct="DisplayChannelClass">
      <doc xml:space="preserve"
           filename="src/channel-display.h"
           line="107">The #SpiceDisplayChannel struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/channel-display.h" line="144"/>
      <method name="display_change_preferred_compression"
              c:identifier="spice_display_change_preferred_compression"
              version="0.31"
              deprecated="1"
              deprecated-version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="566">Tells the spice server to change the preferred image compression
for the @channel.</doc>
        <doc-deprecated xml:space="preserve">use spice_display_channel_change_preferred_compression() instead.</doc-deprecated>
        <source-position filename="src/channel-display.h" line="163"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="568">a #SpiceDisplayChannel</doc>
            <type name="DisplayChannel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="compression" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="569">a #SpiceImageCompression</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="display_change_preferred_video_codec_type"
              c:identifier="spice_display_change_preferred_video_codec_type"
              version="0.34"
              deprecated="1"
              deprecated-version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="637">Tells the spice server to change the preferred video codec type for
streaming in @channel. Application can set only one preferred video codec per
display channel.</doc>
        <doc-deprecated xml:space="preserve">use spice_display_channel_change_preferred_video_codec_type() instead.</doc-deprecated>
        <source-position filename="src/channel-display.h" line="165"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="639">a #SpiceDisplayChannel</doc>
            <type name="DisplayChannel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="codec_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="640">a #SpiceVideoCodecType</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="display_channel_change_preferred_compression"
              c:identifier="spice_display_channel_change_preferred_compression"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="582">Tells the spice server to change the preferred image compression
for the @channel.</doc>
        <source-position filename="src/channel-display.h" line="150"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="584">a #SpiceDisplayChannel</doc>
            <type name="DisplayChannel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="compression" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="585">a #SpiceImageCompression</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="display_channel_change_preferred_video_codec_type"
              c:identifier="spice_display_channel_change_preferred_video_codec_type"
              version="0.35"
              deprecated="1"
              deprecated-version="0.38">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="654">Tells the spice server to change the preferred video codec type for
streaming in @channel. Application can set only one preferred video codec per
display channel.</doc>
        <doc-deprecated xml:space="preserve">use spice_display_channel_change_preferred_video_codec_types() instead.</doc-deprecated>
        <source-position filename="src/channel-display.h" line="151"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="656">a #SpiceDisplayChannel</doc>
            <type name="DisplayChannel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="codec_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="657">a #SpiceVideoCodecType</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="display_channel_change_preferred_video_codec_types"
              c:identifier="spice_display_channel_change_preferred_video_codec_types"
              version="0.38"
              throws="1">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="685">Tells the spice server the ordered preferred video codec types to
use for streaming in @channel.</doc>
        <source-position filename="src/channel-display.h" line="152"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-display.c"
               line="695">%TRUE if the preferred codec list was successfully changed, and %FALSE
otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="687">a #SpiceDisplayChannel</doc>
            <type name="DisplayChannel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="codecs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="688">an array of @ncodecs #SpiceVideoCodecType types</doc>
            <array length="1" zero-terminated="0" c:type="const gint*">
              <type name="gint" c:type="gint"/>
            </array>
          </parameter>
          <parameter name="ncodecs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="689">the number of codec types in the @codecs array</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="display_channel_get_primary"
              c:identifier="spice_display_channel_get_primary"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="527">Retrieve primary display surface @surface_id.</doc>
        <source-position filename="src/channel-display.h" line="147"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-display.c"
               line="535">%TRUE if the primary surface was found and its details
collected in @primary.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="529">a #SpiceDisplayChannel</doc>
            <type name="DisplayChannel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="surface_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="530">a surface id</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="primary" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="531">a #SpiceDisplayPrimary</doc>
            <type name="DisplayPrimary" c:type="SpiceDisplayPrimary*"/>
          </parameter>
        </parameters>
      </method>
      <method name="display_get_primary"
              c:identifier="spice_display_get_primary"
              deprecated="1"
              deprecated-version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="508">Retrieve primary display surface @surface_id.</doc>
        <doc-deprecated xml:space="preserve">use spice_display_channel_get_primary() instead.</doc-deprecated>
        <source-position filename="src/channel-display.h" line="169"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-display.c"
               line="516">%TRUE if the primary surface was found and its details
collected in @primary.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="510">a #SpiceDisplayChannel</doc>
            <type name="DisplayChannel" c:type="SpiceChannel*"/>
          </instance-parameter>
          <parameter name="surface_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="511">a surface id</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="primary" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="512">a #SpiceDisplayPrimary</doc>
            <type name="DisplayPrimary" c:type="SpiceDisplayPrimary*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_gl_scanout"
              c:identifier="spice_display_channel_get_gl_scanout"
              glib:get-property="gl-scanout"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="759">Retrieves the GL scanout if available</doc>
        <source-position filename="src/channel-display.h" line="158"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-display.c"
               line="765">the current GL scanout, or %NULL if none or not valid</doc>
          <type name="GlScanout" c:type="const SpiceGlScanout*"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="761">a #SpiceDisplayChannel</doc>
            <type name="DisplayChannel" c:type="SpiceDisplayChannel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="gl_draw_done"
              c:identifier="spice_display_channel_gl_draw_done"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="2129">After a SpiceDisplayChannel::gl-draw is emitted, the client should
draw the current display with the current GL scanout, and must
release the GL resource with a call to spice_display_gl_draw_done()
(failing to do so for each gl-draw may result in a frozen display).</doc>
        <source-position filename="src/channel-display.h" line="159"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="2131">a #SpiceDisplayChannel</doc>
            <type name="DisplayChannel" c:type="SpiceDisplayChannel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="gl-scanout"
                version="0.31"
                transfer-ownership="none"
                getter="get_gl_scanout">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="324">The last #SpiceGlScanout received.</doc>
        <type name="GlScanout"/>
      </property>
      <property name="height" transfer-ownership="none" default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="monitors" version="0.13" transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="290">Current monitors configuration.</doc>
        <array name="GLib.Array">
          <type name="DisplayMonitorConfig"/>
        </array>
      </property>
      <property name="monitors-max"
                version="0.13"
                transfer-ownership="none"
                default-value="1">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="306">The maximum number of monitors the server or guest supports.
May change during client lifetime, for instance guest may
reboot or dynamically adjust this.</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="width" transfer-ownership="none" default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent">
        <type name="Channel" c:type="SpiceChannel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="DisplayChannelPrivate"
              c:type="SpiceDisplayChannelPrivate*"/>
      </field>
      <glib:signal name="display-invalidate" when="first">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="386">The #SpiceDisplayChannel::display-invalidate signal is emitted
when the rectangular region x/y/w/h of the primary buffer is
updated.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="389">x position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="390">y position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="391">width</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="392">height</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="display-mark" when="first">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="410">The #SpiceDisplayChannel::display-mark signal is emitted when
the %RED_DISPLAY_MARK command is received, and the display
should be exposed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="mark" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="413">%TRUE when the display mark has been received</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="display-primary-create" when="first">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="340">The #SpiceDisplayChannel::display-primary-create signal
provides main display buffer data.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="343">%SPICE_SURFACE_FMT_32_xRGB or %SPICE_SURFACE_FMT_16_555;</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="344">width resolution</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="345">height resolution</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="stride" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="346">the buffer stride ("width" padding)</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="shmid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="347">identifier of the shared memory segment associated with
the @imgdata, or -1 if not shm</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="imgdata"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="349">pointer to surface buffer</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="display-primary-destroy" when="first">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="367">The #SpiceDisplayChannel::display-primary-destroy signal is
emitted when the primary surface is freed and should not be
accessed anymore.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="gl-draw" version="0.31">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="431">The #SpiceDisplayChannel::gl-draw signal is emitted when the
rectangular region x/y/w/h of the GL scanout is updated and
must be drawn. When the draw is finished, you must call
spice_display_gl_draw_done() in order to release the GL
resources.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="434">x position</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="435">y position</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="436">width</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="437">height</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="gst-video-overlay" version="0.36">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="480">The #SpiceDisplayChannel::gst-video-overlay signal is emitted when
pipeline is ready and can be passed to widget to register GStreamer
overlay interface and other GStreamer callbacks. If the pipeline
pointer is NULL, the drawing area of the native renderer is set
visible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-display.c"
               line="491">%TRUE if the overlay is being set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="pipeline" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="483">pointer to GStreamer's pipeline</doc>
            <type name="Gst.Pipeline"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="streaming-mode"
                   version="0.35"
                   deprecated="1"
                   deprecated-version="0.36">
        <doc-deprecated xml:space="preserve">use #SpiceDisplayChannel::gst-video-overlay
instead</doc-deprecated>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/channel-display.c"
               line="461">handle for the display window if possible

The #SpiceDisplayChannel::streaming-mode signal is emitted when
spice server is working in streaming mode.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <parameter name="streaming_mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="459">%TRUE when it's streaming mode</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="DisplayChannelClass"
            c:type="SpiceDisplayChannelClass"
            glib:is-gtype-struct-for="DisplayChannel">
      <doc xml:space="preserve"
           filename="src/channel-display.h"
           line="120">Class structure for #SpiceDisplayChannel.</doc>
      <source-position filename="src/channel-display.h" line="144"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="122">Parent class.</doc>
        <type name="ChannelClass" c:type="SpiceChannelClass"/>
      </field>
      <field name="display_primary_create">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="123">Signal class handler for the #SpiceDisplayChannel::display-primary-create signal.</doc>
        <callback name="display_primary_create">
          <source-position filename="src/channel-display.h" line="134"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
            <parameter name="format" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="stride" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="shmid" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="display_primary_destroy">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="124">Signal class handler for the #SpiceDisplayChannel::display-primary-destroy signal.</doc>
        <callback name="display_primary_destroy">
          <source-position filename="src/channel-display.h" line="137"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="display_invalidate">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="125">Signal class handler for the #SpiceDisplayChannel::display-invalidate signal.</doc>
        <callback name="display_invalidate">
          <source-position filename="src/channel-display.h" line="138"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="w" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="h" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="display_mark">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="126">Signal class handler for the #SpiceDisplayChannel::display-mark signal.</doc>
        <callback name="display_mark">
          <source-position filename="src/channel-display.h" line="140"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
            <parameter name="mark" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="DisplayChannelPrivate"
            c:type="SpiceDisplayChannelPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/channel-display.h" line="37"/>
    </record>
    <record name="DisplayMonitorConfig" c:type="SpiceDisplayMonitorConfig">
      <doc xml:space="preserve"
           filename="src/channel-display.h"
           line="62">Holds a monitor configuration.</doc>
      <source-position filename="src/channel-display.h" line="81"/>
      <field name="id" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="64">monitor id</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="surface_id" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="65">monitor surface id</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="x" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="66">x position of the monitor</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="y" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="67">y position of the monitor</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="width" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="68">width of the monitor</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="height" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="69">height of the monitor</doc>
        <type name="guint" c:type="guint"/>
      </field>
    </record>
    <record name="DisplayPrimary" c:type="SpiceDisplayPrimary">
      <doc xml:space="preserve"
           filename="src/channel-display.h"
           line="83">Holds the information necessary to use the primary surface.</doc>
      <source-position filename="src/channel-display.h" line="105"/>
      <field name="format" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="85">primary buffer format</doc>
        <type name="gpointer" c:type="SpiceSurfaceFmt"/>
      </field>
      <field name="width" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="86">width of the primary</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="height" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="87">height of the primary</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="stride" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="88">stride of the primary</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="shmid" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="89">identifier of the shared memory segment associated with
the @data, or -1 if not shm</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="data" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="91">pointer to primary buffer</doc>
        <type name="guint8" c:type="guint8*"/>
      </field>
      <field name="marked" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="92">whether the display is marked ready</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </record>
    <function-macro name="FILE_TRANSFER_TASK"
                    c:identifier="SPICE_FILE_TRANSFER_TASK"
                    introspectable="0">
      <source-position filename="src/spice-file-transfer-task.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILE_TRANSFER_TASK_CLASS"
                    c:identifier="SPICE_FILE_TRANSFER_TASK_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-file-transfer-task.h" line="34"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILE_TRANSFER_TASK_GET_CLASS"
                    c:identifier="SPICE_FILE_TRANSFER_TASK_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-file-transfer-task.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="FileTransferTask"
           c:symbol-prefix="file_transfer_task"
           c:type="SpiceFileTransferTask"
           parent="GObject.Object"
           glib:type-name="SpiceFileTransferTask"
           glib:get-type="spice_file_transfer_task_get_type"
           glib:type-struct="FileTransferTaskClass">
      <source-position filename="src/spice-file-transfer-task.h" line="40"/>
      <method name="cancel" c:identifier="spice_file_transfer_task_cancel">
        <source-position filename="src/spice-file-transfer-task.h" line="45"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FileTransferTask" c:type="SpiceFileTransferTask*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_filename"
              c:identifier="spice_file_transfer_task_get_filename">
        <source-position filename="src/spice-file-transfer-task.h" line="44"/>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FileTransferTask" c:type="SpiceFileTransferTask*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_progress"
              c:identifier="spice_file_transfer_task_get_progress"
              glib:get-property="progress">
        <source-position filename="src/spice-file-transfer-task.h" line="48"/>
        <return-value transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FileTransferTask" c:type="SpiceFileTransferTask*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_total_bytes"
              c:identifier="spice_file_transfer_task_get_total_bytes"
              glib:get-property="total-bytes">
        <source-position filename="src/spice-file-transfer-task.h" line="46"/>
        <return-value transfer-ownership="none">
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FileTransferTask" c:type="SpiceFileTransferTask*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_transferred_bytes"
              c:identifier="spice_file_transfer_task_get_transferred_bytes"
              glib:get-property="transferred-bytes">
        <source-position filename="src/spice-file-transfer-task.h" line="47"/>
        <return-value transfer-ownership="none">
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FileTransferTask" c:type="SpiceFileTransferTask*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="cancellable"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Gio.Cancellable"/>
      </property>
      <property name="channel"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="MainChannel"/>
      </property>
      <property name="file"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Gio.File"/>
      </property>
      <property name="id"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="progress"
                transfer-ownership="none"
                getter="get_progress"
                default-value="0.000000">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="total-bytes"
                transfer-ownership="none"
                getter="get_total_bytes"
                default-value="0">
        <type name="guint64" c:type="guint64"/>
      </property>
      <property name="transferred-bytes"
                transfer-ownership="none"
                getter="get_transferred_bytes"
                default-value="0">
        <type name="guint64" c:type="guint64"/>
      </property>
      <glib:signal name="finished" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="GLib.Error"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="FileTransferTaskClass"
            c:type="SpiceFileTransferTaskClass"
            disguised="1"
            opaque="1"
            glib:is-gtype-struct-for="FileTransferTask">
      <source-position filename="src/spice-file-transfer-task.h" line="40"/>
    </record>
    <function-macro name="GTK_CHECK_VERSION"
                    c:identifier="SPICE_GTK_CHECK_VERSION"
                    version="0.24"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="src/spice-version.h"
           line="58">Compile-time version checking. Evaluates to %TRUE if the version
of Spice-Gtk is greater than the required one.</doc>
      <source-position filename="src/spice-version.h" line="68"/>
      <parameters>
        <parameter name="major">
          <doc xml:space="preserve"
               filename="src/spice-version.h"
               line="60">required major version</doc>
        </parameter>
        <parameter name="minor">
          <doc xml:space="preserve"
               filename="src/spice-version.h"
               line="61">required minor version</doc>
        </parameter>
        <parameter name="micro">
          <doc xml:space="preserve"
               filename="src/spice-version.h"
               line="62">required micro version</doc>
        </parameter>
      </parameters>
    </function-macro>
    <constant name="GTK_MAJOR_VERSION"
              value="0"
              c:type="SPICE_GTK_MAJOR_VERSION"
              version="0.24">
      <doc xml:space="preserve"
           filename="src/spice-version.h"
           line="34">Spice-Gtk major version component (e.g. 1 if version is 1.2.3)</doc>
      <source-position filename="src/spice-version.h" line="40"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="GTK_MICRO_VERSION"
              value="0"
              c:type="SPICE_GTK_MICRO_VERSION"
              version="0.24">
      <doc xml:space="preserve"
           filename="src/spice-version.h"
           line="50">Spice-Gtk micro version component (e.g. 3 if version is 1.2.3)</doc>
      <source-position filename="src/spice-version.h" line="56"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="GTK_MINOR_VERSION"
              value="42"
              c:type="SPICE_GTK_MINOR_VERSION"
              version="0.24">
      <doc xml:space="preserve"
           filename="src/spice-version.h"
           line="42">Spice-Gtk minor version component (e.g. 2 if version is 1.2.3)</doc>
      <source-position filename="src/spice-version.h" line="48"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <record name="GlScanout"
            c:type="SpiceGlScanout"
            glib:type-name="SpiceGlScanout"
            glib:get-type="spice_gl_scanout_get_type"
            c:symbol-prefix="gl_scanout">
      <doc xml:space="preserve"
           filename="src/channel-display.h"
           line="41">Holds the information necessary for using the GL display scanout.</doc>
      <source-position filename="src/channel-display.h" line="60"/>
      <field name="fd" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="43">a drm DMABUF file that can be imported with eglCreateImageKHR</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="width" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="44">width of the scanout</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="height" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="45">height of the scanout</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="stride" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="46">stride of the scanout</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="format" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="47">the drm fourcc format</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="y0top" writable="1">
        <doc xml:space="preserve"
             filename="src/channel-display.h"
             line="48">orientation of the scanout</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <method name="free" c:identifier="spice_gl_scanout_free" version="0.31">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="129">Frees the @scanout.</doc>
        <source-position filename="src/channel-display.h" line="156"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="scanout" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-display.c"
                 line="131">a #SpiceGlScanout</doc>
            <type name="GlScanout" c:type="SpiceGlScanout*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <function-macro name="INPUTS_CHANNEL"
                    c:identifier="SPICE_INPUTS_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-inputs.h" line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="INPUTS_CHANNEL_CLASS"
                    c:identifier="SPICE_INPUTS_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-inputs.h" line="30"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="INPUTS_CHANNEL_GET_CLASS"
                    c:identifier="SPICE_INPUTS_CHANNEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-inputs.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_AUDIO"
                    c:identifier="SPICE_IS_AUDIO"
                    introspectable="0">
      <source-position filename="src/spice-audio.h" line="40"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_AUDIO_CLASS"
                    c:identifier="SPICE_IS_AUDIO_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-audio.h" line="43"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CHANNEL"
                    c:identifier="SPICE_IS_CHANNEL"
                    introspectable="0">
      <source-position filename="src/spice-channel.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CHANNEL_CLASS"
                    c:identifier="SPICE_IS_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-channel.h" line="36"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CURSOR_CHANNEL"
                    c:identifier="SPICE_IS_CURSOR_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-cursor.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CURSOR_CHANNEL_CLASS"
                    c:identifier="SPICE_IS_CURSOR_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-cursor.h" line="32"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DISPLAY_CHANNEL"
                    c:identifier="SPICE_IS_DISPLAY_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-display.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DISPLAY_CHANNEL_CLASS"
                    c:identifier="SPICE_IS_DISPLAY_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-display.h" line="32"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILE_TRANSFER_TASK"
                    c:identifier="SPICE_IS_FILE_TRANSFER_TASK"
                    introspectable="0">
      <source-position filename="src/spice-file-transfer-task.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILE_TRANSFER_TASK_CLASS"
                    c:identifier="SPICE_IS_FILE_TRANSFER_TASK_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-file-transfer-task.h" line="36"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_INPUTS_CHANNEL"
                    c:identifier="SPICE_IS_INPUTS_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-inputs.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_INPUTS_CHANNEL_CLASS"
                    c:identifier="SPICE_IS_INPUTS_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-inputs.h" line="32"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_MAIN_CHANNEL"
                    c:identifier="SPICE_IS_MAIN_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-main.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_MAIN_CHANNEL_CLASS"
                    c:identifier="SPICE_IS_MAIN_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-main.h" line="32"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PLAYBACK_CHANNEL"
                    c:identifier="SPICE_IS_PLAYBACK_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-playback.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PLAYBACK_CHANNEL_CLASS"
                    c:identifier="SPICE_IS_PLAYBACK_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-playback.h" line="32"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PORT_CHANNEL"
                    c:identifier="SPICE_IS_PORT_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-port.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PORT_CHANNEL_CLASS"
                    c:identifier="SPICE_IS_PORT_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-port.h" line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_QMP_PORT"
                    c:identifier="SPICE_IS_QMP_PORT"
                    introspectable="0">
      <source-position filename="src/qmp-port.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_QMP_PORT_CLASS"
                    c:identifier="SPICE_IS_QMP_PORT_CLASS"
                    introspectable="0">
      <source-position filename="src/qmp-port.h" line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_RECORD_CHANNEL"
                    c:identifier="SPICE_IS_RECORD_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-record.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_RECORD_CHANNEL_CLASS"
                    c:identifier="SPICE_IS_RECORD_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-record.h" line="32"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SESSION"
                    c:identifier="SPICE_IS_SESSION"
                    introspectable="0">
      <source-position filename="src/spice-session.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SESSION_CLASS"
                    c:identifier="SPICE_IS_SESSION_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-session.h" line="36"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SMARTCARD_CHANNEL"
                    c:identifier="SPICE_IS_SMARTCARD_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-smartcard.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SMARTCARD_CHANNEL_CLASS"
                    c:identifier="SPICE_IS_SMARTCARD_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-smartcard.h" line="32"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SMARTCARD_MANAGER"
                    c:identifier="SPICE_IS_SMARTCARD_MANAGER"
                    introspectable="0">
      <source-position filename="src/smartcard-manager.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SMARTCARD_MANAGER_CLASS"
                    c:identifier="SPICE_IS_SMARTCARD_MANAGER_CLASS"
                    introspectable="0">
      <source-position filename="src/smartcard-manager.h" line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_URI"
                    c:identifier="SPICE_IS_URI"
                    introspectable="0">
      <source-position filename="src/spice-uri.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_URI_CLASS"
                    c:identifier="SPICE_IS_URI_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-uri.h" line="32"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_USBREDIR_CHANNEL"
                    c:identifier="SPICE_IS_USBREDIR_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-usbredir.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_USBREDIR_CHANNEL_CLASS"
                    c:identifier="SPICE_IS_USBREDIR_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-usbredir.h" line="35"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_USB_DEVICE_MANAGER"
                    c:identifier="SPICE_IS_USB_DEVICE_MANAGER"
                    introspectable="0">
      <source-position filename="src/usb-device-manager.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_USB_DEVICE_MANAGER_CLASS"
                    c:identifier="SPICE_IS_USB_DEVICE_MANAGER_CLASS"
                    introspectable="0">
      <source-position filename="src/usb-device-manager.h" line="36"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_WEBDAV_CHANNEL"
                    c:identifier="SPICE_IS_WEBDAV_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-webdav.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_WEBDAV_CHANNEL_CLASS"
                    c:identifier="SPICE_IS_WEBDAV_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-webdav.h" line="34"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <class name="InputsChannel"
           c:symbol-prefix="inputs_channel"
           c:type="SpiceInputsChannel"
           parent="Channel"
           glib:type-name="SpiceInputsChannel"
           glib:get-type="spice_inputs_channel_get_type"
           glib:type-struct="InputsChannelClass">
      <doc xml:space="preserve"
           filename="src/channel-inputs.h"
           line="53">The #SpiceInputsChannel struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/channel-inputs.h" line="81"/>
      <method name="button_press"
              c:identifier="spice_inputs_channel_button_press"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-inputs.c"
             line="394">Press a mouse button.</doc>
        <source-position filename="src/channel-inputs.h" line="88"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="396">a #SpiceInputsChannel</doc>
            <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
          </instance-parameter>
          <parameter name="button" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="397">a SPICE_MOUSE_BUTTON</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="button_state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="398">SPICE_MOUSE_BUTTON_MASK flags</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="button_release"
              c:identifier="spice_inputs_channel_button_release"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-inputs.c"
             line="465">Release a button.</doc>
        <source-position filename="src/channel-inputs.h" line="89"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="467">a #SpiceInputsChannel</doc>
            <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
          </instance-parameter>
          <parameter name="button" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="468">a SPICE_MOUSE_BUTTON</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="button_state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="469">SPICE_MOUSE_BUTTON_MASK flags</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="key_press"
              c:identifier="spice_inputs_channel_key_press"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-inputs.c"
             line="535">Press a key.</doc>
        <source-position filename="src/channel-inputs.h" line="91"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="537">a #SpiceInputsChannel</doc>
            <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
          </instance-parameter>
          <parameter name="scancode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="538">a PC XT (set 1) key scancode.  For scancodes with an \%0xe0
           prefix, drop the prefix and OR the scancode with \%0x100.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="key_press_and_release"
              c:identifier="spice_inputs_channel_key_press_and_release"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-inputs.c"
             line="623">Press and release a key event atomically (in the same message).</doc>
        <source-position filename="src/channel-inputs.h" line="94"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="625">a #SpiceInputsChannel</doc>
            <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
          </instance-parameter>
          <parameter name="scancode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="626">a PC XT (set 1) key scancode.  For scancodes with an \%0xe0
           prefix, drop the prefix and OR the scancode with \%0x100.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="key_release"
              c:identifier="spice_inputs_channel_key_release"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-inputs.c"
             line="578">Release a key.</doc>
        <source-position filename="src/channel-inputs.h" line="92"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="580">a #SpiceInputsChannel</doc>
            <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
          </instance-parameter>
          <parameter name="scancode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="581">a PC XT (set 1) key scancode.  For scancodes with an \%0xe0
           prefix, drop the prefix and OR the scancode with \%0x100.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="motion"
              c:identifier="spice_inputs_channel_motion"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-inputs.c"
             line="291">Change mouse position (used in SPICE_MOUSE_MODE_SERVER).</doc>
        <source-position filename="src/channel-inputs.h" line="85"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="293">a #SpiceInputsChannel</doc>
            <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
          </instance-parameter>
          <parameter name="dx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="294">delta X mouse coordinates</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="dy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="295">delta Y mouse coordinates</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="button_state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="296">SPICE_MOUSE_BUTTON_MASK flags</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="position"
              c:identifier="spice_inputs_channel_position"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-inputs.c"
             line="343">Change mouse position (used in SPICE_MOUSE_MODE_CLIENT).</doc>
        <source-position filename="src/channel-inputs.h" line="86"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="345">a #SpiceInputsChannel</doc>
            <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="346">X mouse coordinates</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="347">Y mouse coordinates</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="348">display channel id</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="button_state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="349">SPICE_MOUSE_BUTTON_MASK flags</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_key_locks"
              c:identifier="spice_inputs_channel_set_key_locks"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-inputs.c"
             line="710">Set the keyboard locks on the guest (Caps, Num, Scroll..)</doc>
        <source-position filename="src/channel-inputs.h" line="93"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="712">a #SpiceInputsChannel</doc>
            <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
          </instance-parameter>
          <parameter name="locks" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-inputs.c"
                 line="713">#SpiceInputsLock modifiers flags</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <property name="key-modifiers"
                transfer-ownership="none"
                default-value="0">
        <type name="gint" c:type="gint"/>
      </property>
      <field name="parent">
        <type name="Channel" c:type="SpiceChannel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="InputsChannelPrivate" c:type="SpiceInputsChannelPrivate*"/>
      </field>
      <glib:signal name="inputs-modifiers" when="first">
        <doc xml:space="preserve"
             filename="src/channel-inputs.c"
             line="123">The #SpiceInputsChannel::inputs-modifiers signal is emitted when
the guest keyboard locks are changed. You can read the current
state from #SpiceInputsChannel:key-modifiers property.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="InputsChannelClass"
            c:type="SpiceInputsChannelClass"
            glib:is-gtype-struct-for="InputsChannel">
      <doc xml:space="preserve"
           filename="src/channel-inputs.h"
           line="66">Class structure for #SpiceInputsChannel.</doc>
      <source-position filename="src/channel-inputs.h" line="81"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/channel-inputs.h"
             line="68">Parent class.</doc>
        <type name="ChannelClass" c:type="SpiceChannelClass"/>
      </field>
      <field name="inputs_modifiers">
        <doc xml:space="preserve"
             filename="src/channel-inputs.h"
             line="69">Signal class handler for the #SpiceInputsChannel::inputs-modifiers signal.</doc>
        <callback name="inputs_modifiers">
          <source-position filename="src/channel-inputs.h" line="77"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="InputsChannelPrivate"
            c:type="SpiceInputsChannelPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/channel-inputs.h" line="37"/>
    </record>
    <bitfield name="InputsLock"
              glib:type-name="SpiceInputsLock"
              glib:get-type="spice_inputs_lock_get_type"
              c:type="SpiceInputsLock">
      <doc xml:space="preserve"
           filename="src/channel-inputs.h"
           line="39">Constants used to synchronize modifiers between a client and a guest.</doc>
      <member name="scroll_lock"
              value="1"
              c:identifier="SPICE_INPUTS_SCROLL_LOCK"
              glib:nick="scroll-lock"
              glib:name="SPICE_INPUTS_SCROLL_LOCK">
        <doc xml:space="preserve"
             filename="src/channel-inputs.h"
             line="41">Scroll Lock</doc>
      </member>
      <member name="num_lock"
              value="2"
              c:identifier="SPICE_INPUTS_NUM_LOCK"
              glib:nick="num-lock"
              glib:name="SPICE_INPUTS_NUM_LOCK">
        <doc xml:space="preserve"
             filename="src/channel-inputs.h"
             line="42">Num Lock</doc>
      </member>
      <member name="caps_lock"
              value="4"
              c:identifier="SPICE_INPUTS_CAPS_LOCK"
              glib:nick="caps-lock"
              glib:name="SPICE_INPUTS_CAPS_LOCK">
        <doc xml:space="preserve"
             filename="src/channel-inputs.h"
             line="43">Caps Lock</doc>
      </member>
    </bitfield>
    <function-macro name="MAIN_CHANNEL"
                    c:identifier="SPICE_MAIN_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-main.h" line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="MAIN_CHANNEL_CLASS"
                    c:identifier="SPICE_MAIN_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-main.h" line="30"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="MAIN_CHANNEL_GET_CLASS"
                    c:identifier="SPICE_MAIN_CHANNEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-main.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="MainChannel"
           c:symbol-prefix="main_channel"
           c:type="SpiceMainChannel"
           parent="Channel"
           glib:type-name="SpiceMainChannel"
           glib:get-type="spice_main_channel_get_type"
           glib:type-struct="MainChannelClass">
      <doc xml:space="preserve"
           filename="src/channel-main.h"
           line="39">The #SpiceMainChannel struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/channel-main.h" line="69"/>
      <method name="agent_test_capability"
              c:identifier="spice_main_channel_agent_test_capability"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="2718">Test capability of a remote agent.</doc>
        <source-position filename="src/channel-main.h" line="90"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2725">%TRUE if @cap (channel kind capability) is available.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2720">a #SpiceMainChannel</doc>
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </instance-parameter>
          <parameter name="cap" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2721">an agent capability identifier</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="clipboard_selection_grab"
              c:identifier="spice_main_channel_clipboard_selection_grab"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="2914">Grab the guest clipboard, with #VD_AGENT_CLIPBOARD @types.</doc>
        <source-position filename="src/channel-main.h" line="82"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2916">a #SpiceMainChannel</doc>
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </instance-parameter>
          <parameter name="selection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2917">one of the clipboard #VD_AGENT_CLIPBOARD_SELECTION_*</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2918">an array of #VD_AGENT_CLIPBOARD types available in the clipboard</doc>
            <array length="2" zero-terminated="0" c:type="guint32*">
              <type name="guint32" c:type="guint32"/>
            </array>
          </parameter>
          <parameter name="ntypes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2919">the number of @types</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="clipboard_selection_notify"
              c:identifier="spice_main_channel_clipboard_selection_notify"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="3026">Send the clipboard data to the guest.</doc>
        <source-position filename="src/channel-main.h" line="85"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3028">a #SpiceMainChannel</doc>
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </instance-parameter>
          <parameter name="selection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3029">one of the clipboard #VD_AGENT_CLIPBOARD_SELECTION_*</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3030">a #VD_AGENT_CLIPBOARD type</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3031">clipboard data</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3032">data length in bytes</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="clipboard_selection_release"
              c:identifier="spice_main_channel_clipboard_selection_release"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="2965">Release the clipboard (for example, when the client loses the
clipboard grab): Inform the guest no clipboard data is available.</doc>
        <source-position filename="src/channel-main.h" line="84"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2967">a #SpiceMainChannel</doc>
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </instance-parameter>
          <parameter name="selection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2968">one of the clipboard #VD_AGENT_CLIPBOARD_SELECTION_*</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="clipboard_selection_request"
              c:identifier="spice_main_channel_clipboard_selection_request"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="3081">Request clipboard data of @type from the guest. The reply is sent
through the #SpiceMainChannel::main-clipboard-selection signal.</doc>
        <source-position filename="src/channel-main.h" line="87"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3083">a #SpiceMainChannel</doc>
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </instance-parameter>
          <parameter name="selection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3084">one of the clipboard #VD_AGENT_CLIPBOARD_SELECTION_*</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3085">a #VD_AGENT_CLIPBOARD type</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="file_copy_async"
              c:identifier="spice_main_channel_file_copy_async"
              version="0.35"
              glib:finish-func="file_copy_finish">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="3424">Copies the file @sources to guest

If @cancellable is not %NULL, then the operation can be cancelled by
triggering the cancellable object from another thread. If the operation
was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.

If @progress_callback is not %NULL, then the operation can be monitored by
setting this to a #GFileProgressCallback function. @progress_callback_data
will be passed to this function. It is guaranteed that this callback will
be called after all data has been transferred with the total number of bytes
copied during the operation. Note that before release 0.31, progress_callback
was broken since it only provided status for a single file transfer, but did
not provide a way to determine which file it referred to. In release 0.31,
this behavior was changed so that progress_callback provides the status of
all ongoing file transfers. If you need to monitor the status of individual
files, please connect to the #SpiceMainChannel::new-file-transfer signal.

When the operation is finished, callback will be called. You can then call
spice_main_file_copy_finish() to get the result of the operation. Note that
before release 0.33 the callback was called for each file in multiple file
transfer. This behavior was changed for the same reason as the
progress_callback (above). If you need to monitor the ending of individual
files, you can connect to "finished" signal from each SpiceFileTransferTask.</doc>
        <source-position filename="src/channel-main.h" line="91"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3426">a #SpiceMainChannel</doc>
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </instance-parameter>
          <parameter name="sources" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3427">a %NULL-terminated array of #GFile objects to be transferred</doc>
            <array c:type="GFile**">
              <type name="Gio.File" c:type="GFile*"/>
            </array>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3428">set of #GFileCopyFlags</doc>
            <type name="Gio.FileCopyFlags" c:type="GFileCopyFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3429">optional #GCancellable object, %NULL to ignore</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="progress_callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="call"
                     closure="4">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3430">function to callback with
    progress information, or %NULL if progress information is not needed</doc>
            <type name="Gio.FileProgressCallback"
                  c:type="GFileProgressCallback"/>
          </parameter>
          <parameter name="progress_callback_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3432">user data to pass to @progress_callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="6">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3433">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3434">the data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="file_copy_finish"
              c:identifier="spice_main_channel_file_copy_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="3544">Finishes copying the file started with
spice_main_file_copy_async().</doc>
        <source-position filename="src/channel-main.h" line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3553">a %TRUE on success, %FALSE on error.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3546">a #SpiceMainChannel</doc>
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3547">a #GAsyncResult.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_mouse_mode"
              c:identifier="spice_main_channel_request_mouse_mode"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="1648">Request a mouse mode to the server. The server may not be able to
change the mouse mode, but spice-gtk will try to request it
when possible.</doc>
        <source-position filename="src/channel-main.h" line="104"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="1650">a %SpiceMainChannel</doc>
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="1651">a SPICE_MOUSE_MODE</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="send_monitor_config"
              c:identifier="spice_main_channel_send_monitor_config"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="1105">Send monitors configuration previously set with
spice_main_set_display() and spice_main_set_display_enabled()</doc>
        <source-position filename="src/channel-main.h" line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="1112">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="1107">a #SpiceMainChannel</doc>
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="update_display"
              c:identifier="spice_main_channel_update_display"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="2778">Update the display @id resolution.

If @update is %TRUE, the remote configuration will be updated too
after 1 second without further changes. You can send when you want
without delay the new configuration to the remote with
spice_main_send_monitor_config()</doc>
        <source-position filename="src/channel-main.h" line="76"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2780">a #SpiceMainChannel</doc>
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2781">display ID</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2782">x position</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2783">y position</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2784">display width</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2785">display height</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="update" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2786">if %TRUE, update guest resolution after 1sec.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_display_enabled"
              c:identifier="spice_main_channel_update_display_enabled"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="3127">When sending monitor configuration to agent guest, if @enabled is %FALSE,
don't set display @id, which the agent translates to disabling the display
id. If @enabled is %TRUE, the monitor will be included in the next monitor
update. Note: this will take effect next time the monitor configuration is
sent.

If @update is %FALSE, no server update will be triggered by this call, but
the value will be saved and used in the next configuration update.</doc>
        <source-position filename="src/channel-main.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3129">a #SpiceMainChannel</doc>
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3130">display ID (if -1: set all displays)</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="enabled" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3131">wether display @id is enabled</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="update" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="3132">if %TRUE, update guest display state after 1sec.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_display_mm"
              c:identifier="spice_main_channel_update_display_mm"
              version="0.39">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="2823">Update the display @id physical size.

If @update is %TRUE, the remote configuration will be updated too
after 1 second without further changes. You can send when you want
without delay the new configuration to the remote with
spice_main_send_monitor_config()</doc>
        <source-position filename="src/channel-main.h" line="73"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2825">a #SpiceMainChannel</doc>
            <type name="MainChannel" c:type="SpiceMainChannel*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2826">display ID</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="width_mm" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2827">physical display width in millimeters</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height_mm" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2828">physical display height in millimeters</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="update" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="2829">if %TRUE, update guest resolution after 1sec.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="agent-caps-0"
                transfer-ownership="none"
                default-value="0">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="agent-connected"
                transfer-ownership="none"
                default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="color-depth"
                deprecated="1"
                deprecated-version="0.37"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="0">
        <doc-deprecated xml:space="preserve">Deprecated due lack of support in drivers, only Windows 7 and older.
This option is currently ignored.</doc-deprecated>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="disable-animation"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="disable-display-align"
                version="0.13"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="576">Disable automatic horizontal display position alignment.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="disable-display-position"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="TRUE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="disable-font-smooth"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="disable-wallpaper"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="max-clipboard"
                version="0.22"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="104857600">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="593">Maximum size of clipboard operations in bytes (default 100MB,
-1 for unlimited size);</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="mouse-mode" transfer-ownership="none" default-value="0">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="475">Spice protocol specifies two mouse modes, client mode and
server mode. In client mode (%SPICE_MOUSE_MODE_CLIENT), the
affective mouse is the client side mouse: the client sends
mouse position within the display and the server sends mouse
shape messages. In server mode (%SPICE_MOUSE_MODE_SERVER), the
client sends relative mouse movements and the server sends
position and shape commands.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <field name="parent">
        <type name="Channel" c:type="SpiceChannel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="MainChannelPrivate" c:type="SpiceMainChannelPrivate*"/>
      </field>
      <glib:signal name="main-agent-update" when="first">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="629">Notify when the %SpiceMainChannel:agent-connected or
%SpiceMainChannel:agent-caps-0 property change.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="main-clipboard"
                   when="last"
                   deprecated="1"
                   deprecated-version="0.6">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="645">Provides guest clipboard data requested by spice_main_clipboard_request().</doc>
        <doc-deprecated xml:space="preserve">use SpiceMainChannel::main-clipboard-selection instead.</doc-deprecated>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="648">the VD_AGENT_CLIPBOARD data type</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="649">clipboard data</doc>
            <array length="2" zero-terminated="0" c:type="gpointer">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="650">size of @data in bytes</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="main-clipboard-grab"
                   when="last"
                   deprecated="1"
                   deprecated-version="0.6">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="690">Inform when clipboard data is available from the guest, and for
which @types.</doc>
        <doc-deprecated xml:space="preserve">use SpiceMainChannel::main-clipboard-selection-grab instead.</doc-deprecated>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="693">the VD_AGENT_CLIPBOARD data types</doc>
            <array length="1" zero-terminated="0" c:type="gpointer">
              <type name="guint32"/>
            </array>
          </parameter>
          <parameter name="ntypes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="694">the number of @types</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="main-clipboard-release"
                   when="last"
                   deprecated="1"
                   deprecated-version="0.6">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="780">Inform when the clipboard is released from the guest, when no
clipboard data is available from the guest.</doc>
        <doc-deprecated xml:space="preserve">use SpiceMainChannel::main-clipboard-selection-release instead.</doc-deprecated>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="main-clipboard-request"
                   when="last"
                   deprecated="1"
                   deprecated-version="0.6">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="735">Request clipboard data from the client.</doc>
        <doc-deprecated xml:space="preserve">use SpiceMainChannel::main-clipboard-selection-request instead.</doc-deprecated>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="742">%TRUE if the request is successful</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="738">the VD_AGENT_CLIPBOARD request type</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="main-clipboard-selection" when="last" version="0.6">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="667">Informs that clipboard selection data are available.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="selection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="670">a VD_AGENT_CLIPBOARD_SELECTION clipboard</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="671">the VD_AGENT_CLIPBOARD data type</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="672">clipboard data</doc>
            <array length="3" zero-terminated="0" c:type="gpointer">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="673">size of @data in bytes</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="main-clipboard-selection-grab"
                   when="last"
                   version="0.6">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="712">Inform when clipboard data is available from the guest, and for
which @types.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="selection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="715">a VD_AGENT_CLIPBOARD_SELECTION clipboard</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="716">the VD_AGENT_CLIPBOARD data types</doc>
            <array length="2" zero-terminated="0" c:type="gpointer">
              <type name="guint32"/>
            </array>
          </parameter>
          <parameter name="ntypes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="717">the number of @types</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="main-clipboard-selection-release"
                   when="last"
                   version="0.6">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="799">Inform when the clipboard is released from the guest, when no
clipboard data is available from the guest.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="selection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="802">a VD_AGENT_CLIPBOARD_SELECTION clipboard</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="main-clipboard-selection-request"
                   when="last"
                   version="0.6">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="757">Request clipboard data from the client.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="765">%TRUE if the request is successful</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="selection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="760">a VD_AGENT_CLIPBOARD_SELECTION clipboard</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="761">the VD_AGENT_CLIPBOARD request type</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="main-mouse-update" when="first">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="612">Notify when the mouse mode has changed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="migration-started" when="last">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="820">Inform when migration is starting. Application wishing to make
connections themself can set the #SpiceSession:client-sockets
to @TRUE, then follow #SpiceSession::channel-new creation, and
use spice_channel_open_fd() once the socket is created.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="823">a migration #SpiceSession</doc>
            <type name="GObject.Object"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="new-file-transfer" when="last" version="0.31">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="842">This signal is emitted when a new file transfer task has been initiated
on this channel. Client applications may take a reference on the @task
object and use it to monitor the status of the file transfer task.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="task" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-main.c"
                 line="845">a #SpiceFileTransferTask</doc>
            <type name="GObject.Object"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="MainChannelClass"
            c:type="SpiceMainChannelClass"
            glib:is-gtype-struct-for="MainChannel">
      <doc xml:space="preserve"
           filename="src/channel-main.h"
           line="52">Class structure for #SpiceMainChannel.</doc>
      <source-position filename="src/channel-main.h" line="69"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/channel-main.h"
             line="54">Parent class.</doc>
        <type name="ChannelClass" c:type="SpiceChannelClass"/>
      </field>
      <field name="mouse_update">
        <doc xml:space="preserve"
             filename="src/channel-main.h"
             line="55">Signal class handler for the #SpiceMainChannel::main-mouse-update signal.</doc>
        <callback name="mouse_update">
          <source-position filename="src/channel-main.h" line="64"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="agent_update">
        <doc xml:space="preserve"
             filename="src/channel-main.h"
             line="56">Signal class handler for the #SpiceMainChannel::main-agent-update signal.</doc>
        <callback name="agent_update">
          <source-position filename="src/channel-main.h" line="65"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="MainChannelPrivate"
            c:type="SpiceMainChannelPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/channel-main.h" line="37"/>
    </record>
    <record name="MsgIn" c:type="SpiceMsgIn" disguised="1" opaque="1">
      <source-position filename="src/spice-channel.h" line="39"/>
    </record>
    <record name="MsgOut" c:type="SpiceMsgOut" disguised="1" opaque="1">
      <source-position filename="src/spice-channel.h" line="40"/>
    </record>
    <function-macro name="PLAYBACK_CHANNEL"
                    c:identifier="SPICE_PLAYBACK_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-playback.h" line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PLAYBACK_CHANNEL_CLASS"
                    c:identifier="SPICE_PLAYBACK_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-playback.h" line="30"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PLAYBACK_CHANNEL_GET_CLASS"
                    c:identifier="SPICE_PLAYBACK_CHANNEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-playback.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PORT_CHANNEL"
                    c:identifier="SPICE_PORT_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-port.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PORT_CHANNEL_CLASS"
                    c:identifier="SPICE_PORT_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-port.h" line="31"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PORT_CHANNEL_GET_CLASS"
                    c:identifier="SPICE_PORT_CHANNEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-port.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="PlaybackChannel"
           c:symbol-prefix="playback_channel"
           c:type="SpicePlaybackChannel"
           parent="Channel"
           glib:type-name="SpicePlaybackChannel"
           glib:get-type="spice_playback_channel_get_type"
           glib:type-struct="PlaybackChannelClass">
      <doc xml:space="preserve"
           filename="src/channel-playback.h"
           line="39">The #SpicePlaybackChannel struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/channel-playback.h" line="72"/>
      <virtual-method name="playback_data">
        <doc xml:space="preserve"
             filename="src/channel-playback.h"
             line="56">Signal class handler for the #SpicePlaybackChannel::playback-data signal.</doc>
        <source-position filename="src/channel-playback.h" line="67"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="PlaybackChannel" c:type="SpicePlaybackChannel*"/>
          </instance-parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer*"/>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="playback_start">
        <doc xml:space="preserve"
             filename="src/channel-playback.h"
             line="55">Signal class handler for the #SpicePlaybackChannel::playback-start signal.</doc>
        <source-position filename="src/channel-playback.h" line="65"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="PlaybackChannel" c:type="SpicePlaybackChannel*"/>
          </instance-parameter>
          <parameter name="format" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="channels" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="freq" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="playback_stop">
        <doc xml:space="preserve"
             filename="src/channel-playback.h"
             line="57">Signal class handler for the #SpicePlaybackChannel::playback-stop signal.</doc>
        <source-position filename="src/channel-playback.h" line="68"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="PlaybackChannel" c:type="SpicePlaybackChannel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="set_delay" c:identifier="spice_playback_channel_set_delay">
        <doc xml:space="preserve"
             filename="src/channel-playback.c"
             line="443">Adjust the multimedia time according to the delay.</doc>
        <source-position filename="src/channel-playback.h" line="75"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-playback.c"
                 line="445">a #SpicePlaybackChannel</doc>
            <type name="PlaybackChannel" c:type="SpicePlaybackChannel*"/>
          </instance-parameter>
          <parameter name="delay_ms" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-playback.c"
                 line="446">the delay in ms</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <property name="min-latency"
                writable="1"
                transfer-ownership="none"
                default-value="200">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="mute"
                writable="1"
                transfer-ownership="none"
                default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="nchannels"
                writable="1"
                transfer-ownership="none"
                default-value="2">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="volume" writable="1" transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <field name="parent">
        <type name="Channel" c:type="SpiceChannel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="PlaybackChannelPrivate"
              c:type="SpicePlaybackChannelPrivate*"/>
      </field>
      <glib:signal name="playback-data" when="first">
        <doc xml:space="preserve"
             filename="src/channel-playback.c"
             line="240">Provide audio data to be played.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/channel-playback.c"
                 line="243">pointer to audio data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="data_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-playback.c"
                 line="244">size in byte of @data</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="playback-get-delay" when="first">
        <doc xml:space="preserve"
             filename="src/channel-playback.c"
             line="275">Notify when the current playback delay is requested</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="playback-start" when="first">
        <doc xml:space="preserve"
             filename="src/channel-playback.c"
             line="218">Notify when the playback should start, and provide audio format
characteristics.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-playback.c"
                 line="221">a #SPICE_AUDIO_FMT</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="channels" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-playback.c"
                 line="222">number of channels</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="rate" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-playback.c"
                 line="223">audio rate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="playback-stop" when="first">
        <doc xml:space="preserve"
             filename="src/channel-playback.c"
             line="259">Notify when the playback should stop.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="PlaybackChannelClass"
            c:type="SpicePlaybackChannelClass"
            glib:is-gtype-struct-for="PlaybackChannel">
      <doc xml:space="preserve"
           filename="src/channel-playback.h"
           line="52">Class structure for #SpicePlaybackChannel.</doc>
      <source-position filename="src/channel-playback.h" line="72"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/channel-playback.h"
             line="54">Parent class.</doc>
        <type name="ChannelClass" c:type="SpiceChannelClass"/>
      </field>
      <field name="playback_start">
        <doc xml:space="preserve"
             filename="src/channel-playback.h"
             line="55">Signal class handler for the #SpicePlaybackChannel::playback-start signal.</doc>
        <callback name="playback_start">
          <source-position filename="src/channel-playback.h" line="65"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="PlaybackChannel" c:type="SpicePlaybackChannel*"/>
            </parameter>
            <parameter name="format" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="channels" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="freq" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="playback_data">
        <doc xml:space="preserve"
             filename="src/channel-playback.h"
             line="56">Signal class handler for the #SpicePlaybackChannel::playback-data signal.</doc>
        <callback name="playback_data">
          <source-position filename="src/channel-playback.h" line="67"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="PlaybackChannel" c:type="SpicePlaybackChannel*"/>
            </parameter>
            <parameter name="data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="gpointer*"/>
            </parameter>
            <parameter name="size" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="playback_stop">
        <doc xml:space="preserve"
             filename="src/channel-playback.h"
             line="57">Signal class handler for the #SpicePlaybackChannel::playback-stop signal.</doc>
        <callback name="playback_stop">
          <source-position filename="src/channel-playback.h" line="68"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="PlaybackChannel" c:type="SpicePlaybackChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="PlaybackChannelPrivate"
            c:type="SpicePlaybackChannelPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/channel-playback.h" line="37"/>
    </record>
    <class name="PortChannel"
           c:symbol-prefix="port_channel"
           c:type="SpicePortChannel"
           parent="Channel"
           glib:type-name="SpicePortChannel"
           glib:get-type="spice_port_channel_get_type"
           glib:type-struct="PortChannelClass">
      <doc xml:space="preserve"
           filename="src/channel-port.h"
           line="40">The #SpicePortChannel struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/channel-port.h" line="64"/>
      <method name="event"
              c:identifier="spice_port_channel_event"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-port.c"
             line="384">Send an event to the port.

Note: The values SPICE_PORT_EVENT_CLOSED and
SPICE_PORT_EVENT_OPENED are managed by the channel connection
state.</doc>
        <source-position filename="src/channel-port.h" line="75"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="386">a #SpicePortChannel</doc>
            <type name="PortChannel" c:type="SpicePortChannel*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="387">a SPICE_PORT_EVENT value</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_async"
              c:identifier="spice_port_channel_write_async"
              version="0.35"
              glib:finish-func="write_finish">
        <doc xml:space="preserve"
             filename="src/channel-port.c"
             line="285">Request an asynchronous write of count bytes from @buffer into the
@port. When the operation is finished @callback will be called. You
can then call spice_port_write_finish() to get the result of
the operation.</doc>
        <source-position filename="src/channel-port.h" line="68"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="287">A #SpicePortChannel</doc>
            <type name="PortChannel" c:type="SpicePortChannel*"/>
          </instance-parameter>
          <parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="288">the buffer
containing the data to write</doc>
            <array length="1" zero-terminated="0" c:type="void*">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="290">the number of bytes to write</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="291">optional GCancellable object, NULL to ignore</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="292">callback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="293">the data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_finish"
              c:identifier="spice_port_channel_write_finish"
              version="0.35"
              throws="1">
        <doc xml:space="preserve"
             filename="src/channel-port.c"
             line="345">Finishes a port write operation.</doc>
        <source-position filename="src/channel-port.h" line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-port.c"
               line="354">a #gssize containing the number of bytes written to the stream.</doc>
          <type name="gssize" c:type="gssize"/>
        </return-value>
        <parameters>
          <instance-parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="347">a #SpicePortChannel</doc>
            <type name="PortChannel" c:type="SpicePortChannel*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="348">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <property name="port-name"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="port-opened"
                transfer-ownership="none"
                default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent">
        <type name="Channel" c:type="SpiceChannel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="PortChannelPrivate" c:type="SpicePortChannelPrivate*"/>
      </field>
      <glib:signal name="port-data" when="last" version="0.15">
        <doc xml:space="preserve"
             filename="src/channel-port.c"
             line="148">The #SpicePortChannel::port-data signal is emitted when new
port data is received.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="151">the data received</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="152">number of bytes read</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="port-event" when="last" version="0.15">
        <doc xml:space="preserve"
             filename="src/channel-port.c"
             line="170">The #SpicePortChannel::port-event signal is emitted when new
port event is received.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-port.c"
                 line="173">the event received</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="PortChannelClass"
            c:type="SpicePortChannelClass"
            glib:is-gtype-struct-for="PortChannel">
      <doc xml:space="preserve"
           filename="src/channel-port.h"
           line="53">Class structure for #SpicePortChannel.</doc>
      <source-position filename="src/channel-port.h" line="64"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/channel-port.h"
             line="55">Parent class.</doc>
        <type name="ChannelClass" c:type="SpiceChannelClass"/>
      </field>
    </record>
    <record name="PortChannelPrivate"
            c:type="SpicePortChannelPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/channel-port.h" line="38"/>
    </record>
    <function-macro name="QMP_PORT"
                    c:identifier="SPICE_QMP_PORT"
                    introspectable="0">
      <source-position filename="src/qmp-port.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="QMP_PORT_CLASS"
                    c:identifier="SPICE_QMP_PORT_CLASS"
                    introspectable="0">
      <source-position filename="src/qmp-port.h" line="31"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="QMP_PORT_GET_CLASS"
                    c:identifier="SPICE_QMP_PORT_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/qmp-port.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="QmpPort"
           c:symbol-prefix="qmp_port"
           c:type="SpiceQmpPort"
           version="0.36"
           parent="GObject.Object"
           glib:type-name="SpiceQmpPort"
           glib:get-type="spice_qmp_port_get_type"
           glib:type-struct="QmpPortClass">
      <doc xml:space="preserve"
           filename="src/qmp-port.h"
           line="36">Opaque data structure.</doc>
      <source-position filename="src/qmp-port.h" line="43"/>
      <function name="get" c:identifier="spice_qmp_port_get" version="0.36">
        <doc xml:space="preserve"
             filename="src/qmp-port.c"
             line="460">Associate a QMP port helper to the given port channel.  If there is
already a helper associated with the channel, it is simply returned.</doc>
        <source-position filename="src/qmp-port.h" line="93"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/qmp-port.c"
               line="467">a weak reference to the associated SpiceQmpPort</doc>
          <type name="QmpPort" c:type="SpiceQmpPort*"/>
        </return-value>
        <parameters>
          <parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="462">the QMP port channel</doc>
            <type name="PortChannel" c:type="SpicePortChannel*"/>
          </parameter>
        </parameters>
      </function>
      <method name="query_status_async"
              c:identifier="spice_qmp_port_query_status_async"
              version="0.36"
              glib:finish-func="query_status_finish">
        <doc xml:space="preserve"
             filename="src/qmp-port.c"
             line="543">Query the run status of all VCPUs.</doc>
        <source-position filename="src/qmp-port.h" line="110"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="545">A #SpiceQmpPort</doc>
            <type name="QmpPort" c:type="SpiceQmpPort*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="546">A #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="547">The async callback.</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="548">The async callback user data.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_status_finish"
              c:identifier="spice_qmp_port_query_status_finish"
              version="0.36"
              throws="1">
        <doc xml:space="preserve"
             filename="src/qmp-port.c"
             line="571">Finish the asynchronous status query.</doc>
        <source-position filename="src/qmp-port.h" line="115"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/qmp-port.c"
               line="579">The #SpiceQmpStatus result or %NULL, in which case @error
will be set.</doc>
          <type name="QmpStatus" c:type="SpiceQmpStatus*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="573">A #SpiceQmpPort</doc>
            <type name="QmpPort" c:type="SpiceQmpPort*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="574">The async #GAsyncResult result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="vm_action_async"
              c:identifier="spice_qmp_port_vm_action_async"
              version="0.36"
              glib:finish-func="vm_action_finish">
        <doc xml:space="preserve"
             filename="src/qmp-port.c"
             line="401">Request the VM to perform an action.</doc>
        <source-position filename="src/qmp-port.h" line="95"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="403">a qmp port helper</doc>
            <type name="QmpPort" c:type="SpiceQmpPort*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="404">a VM action</doc>
            <type name="QmpPortVmAction" c:type="SpiceQmpPortVmAction"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="405">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="406">callback to call when the action is complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="407">the data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="vm_action_finish"
              c:identifier="spice_qmp_port_vm_action_finish"
              version="0.36"
              throws="1">
        <doc xml:space="preserve"
             filename="src/qmp-port.c"
             line="381">Finishes asynchronous VM action and returns the result.</doc>
        <source-position filename="src/qmp-port.h" line="101"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="383">a qmp port helper</doc>
            <type name="QmpPort" c:type="SpiceQmpPort*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="384">The async #GAsyncResult result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <property name="channel"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="PortChannel"/>
      </property>
      <property name="ready" transfer-ownership="none" default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <glib:signal name="event" when="first" version="0.36">
        <doc xml:space="preserve"
             filename="src/qmp-port.c"
             line="291">Event emitted whenever a QMP event is received.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="294">the QMP event name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="node"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="295">the event data json-node, or NULL</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="QmpPortClass"
            c:type="SpiceQmpPortClass"
            disguised="1"
            opaque="1"
            glib:is-gtype-struct-for="QmpPort">
      <source-position filename="src/qmp-port.h" line="43"/>
    </record>
    <enumeration name="QmpPortVmAction"
                 version="0.36"
                 c:type="SpiceQmpPortVmAction">
      <doc xml:space="preserve"
           filename="src/qmp-port.h"
           line="45">An action to perform on the VM.</doc>
      <source-position filename="src/qmp-port.h" line="66"/>
      <member name="quit"
              value="0"
              c:identifier="SPICE_QMP_PORT_VM_ACTION_QUIT">
        <doc xml:space="preserve"
             filename="src/qmp-port.h"
             line="47">This command will cause the VM process to exit gracefully.</doc>
      </member>
      <member name="reset"
              value="1"
              c:identifier="SPICE_QMP_PORT_VM_ACTION_RESET">
        <doc xml:space="preserve"
             filename="src/qmp-port.h"
             line="48">Performs a hard reset of the VM.</doc>
      </member>
      <member name="power_down"
              value="2"
              c:identifier="SPICE_QMP_PORT_VM_ACTION_POWER_DOWN">
        <doc xml:space="preserve"
             filename="src/qmp-port.h"
             line="49">Performs a power down operation.</doc>
      </member>
      <member name="pause"
              value="3"
              c:identifier="SPICE_QMP_PORT_VM_ACTION_PAUSE">
        <doc xml:space="preserve"
             filename="src/qmp-port.h"
             line="50">Stop all VCPU execution.</doc>
      </member>
      <member name="continue"
              value="4"
              c:identifier="SPICE_QMP_PORT_VM_ACTION_CONTINUE">
        <doc xml:space="preserve"
             filename="src/qmp-port.h"
             line="51">Resume all VCPU execution.</doc>
      </member>
      <member name="last"
              value="5"
              c:identifier="SPICE_QMP_PORT_VM_ACTION_LAST">
        <doc xml:space="preserve"
             filename="src/qmp-port.h"
             line="52">the last enum value.</doc>
      </member>
    </enumeration>
    <record name="QmpStatus"
            c:type="SpiceQmpStatus"
            version="0.36"
            glib:type-name="SpiceQmpStatus"
            glib:get-type="spice_qmp_status_get_type"
            c:symbol-prefix="qmp_status">
      <doc xml:space="preserve"
           filename="src/qmp-port.h"
           line="68">Information about VCPU run state.</doc>
      <source-position filename="src/qmp-port.h" line="89"/>
      <field name="ref" readable="0" private="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="version" writable="1">
        <doc xml:space="preserve"
             filename="src/qmp-port.h"
             line="70">the structure version</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="running" writable="1">
        <doc xml:space="preserve"
             filename="src/qmp-port.h"
             line="71">true if all VCPUs are runnable, false if not runnable</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="singlestep" writable="1">
        <doc xml:space="preserve"
             filename="src/qmp-port.h"
             line="72">true if VCPUs are in single-step mode</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="status" writable="1">
        <doc xml:space="preserve"
             filename="src/qmp-port.h"
             line="73">the virtual machine run state</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="ref" c:identifier="spice_qmp_status_ref" version="0.36">
        <doc xml:space="preserve"
             filename="src/qmp-port.c"
             line="491">References a @status.</doc>
        <source-position filename="src/qmp-port.h" line="107"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/qmp-port.c"
               line="497">The same @status</doc>
          <type name="QmpStatus" c:type="SpiceQmpStatus*"/>
        </return-value>
        <parameters>
          <instance-parameter name="status" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="493">a #SpiceQmpStatus</doc>
            <type name="QmpStatus" c:type="SpiceQmpStatus*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref"
              c:identifier="spice_qmp_status_unref"
              version="0.36">
        <doc xml:space="preserve"
             filename="src/qmp-port.c"
             line="511">Removes a reference from the given @status.</doc>
        <source-position filename="src/qmp-port.h" line="108"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="status" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/qmp-port.c"
                 line="513">a #SpiceQmpStatus</doc>
            <type name="QmpStatus" c:type="SpiceQmpStatus*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <function-macro name="RECORD_CHANNEL"
                    c:identifier="SPICE_RECORD_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-record.h" line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="RECORD_CHANNEL_CLASS"
                    c:identifier="SPICE_RECORD_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-record.h" line="30"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="RECORD_CHANNEL_GET_CLASS"
                    c:identifier="SPICE_RECORD_CHANNEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-record.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="RecordChannel"
           c:symbol-prefix="record_channel"
           c:type="SpiceRecordChannel"
           parent="Channel"
           glib:type-name="SpiceRecordChannel"
           glib:get-type="spice_record_channel_get_type"
           glib:type-struct="RecordChannelClass">
      <doc xml:space="preserve"
           filename="src/channel-record.h"
           line="39">The #SpiceRecordChannel struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/channel-record.h" line="72"/>
      <virtual-method name="record_data">
        <doc xml:space="preserve"
             filename="src/channel-record.h"
             line="57">Unused (deprecated).</doc>
        <source-position filename="src/channel-record.h" line="67"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="RecordChannel" c:type="SpiceRecordChannel*"/>
          </instance-parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer*"/>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="record_start">
        <doc xml:space="preserve"
             filename="src/channel-record.h"
             line="55">Signal class handler for the #SpiceRecordChannel::record-start signal.</doc>
        <source-position filename="src/channel-record.h" line="65"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="RecordChannel" c:type="SpiceRecordChannel*"/>
          </instance-parameter>
          <parameter name="format" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="channels" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="freq" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="record_stop">
        <doc xml:space="preserve"
             filename="src/channel-record.h"
             line="56">Signal class handler for the #SpiceRecordChannel::record-stop signal.</doc>
        <source-position filename="src/channel-record.h" line="68"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <type name="RecordChannel" c:type="SpiceRecordChannel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="send_data"
              c:identifier="spice_record_channel_send_data"
              version="0.35">
        <doc xml:space="preserve"
             filename="src/channel-record.c"
             line="311">Send recorded PCM data to the guest.</doc>
        <source-position filename="src/channel-record.h" line="75"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-record.c"
                 line="313">a #SpiceRecordChannel</doc>
            <type name="RecordChannel" c:type="SpiceRecordChannel*"/>
          </instance-parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/channel-record.c"
                 line="314">PCM data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="bytes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-record.c"
                 line="315">size of @data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="time" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-record.c"
                 line="316">stream timestamp</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <property name="mute"
                writable="1"
                transfer-ownership="none"
                default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="nchannels"
                writable="1"
                transfer-ownership="none"
                default-value="2">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="volume" writable="1" transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <field name="parent">
        <type name="Channel" c:type="SpiceChannel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="RecordChannelPrivate" c:type="SpiceRecordChannelPrivate*"/>
      </field>
      <glib:signal name="record-start" when="first">
        <doc xml:space="preserve"
             filename="src/channel-record.c"
             line="205">Notify when the recording should start, and provide audio format
characteristics.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-record.c"
                 line="208">a #SPICE_AUDIO_FMT</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="channels" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-record.c"
                 line="209">number of channels</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="rate" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/channel-record.c"
                 line="210">audio rate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="record-stop" when="first">
        <doc xml:space="preserve"
             filename="src/channel-record.c"
             line="226">Notify when the recording should stop.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="RecordChannelClass"
            c:type="SpiceRecordChannelClass"
            glib:is-gtype-struct-for="RecordChannel">
      <doc xml:space="preserve"
           filename="src/channel-record.h"
           line="52">Class structure for #SpiceRecordChannel.</doc>
      <source-position filename="src/channel-record.h" line="72"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/channel-record.h"
             line="54">Parent class.</doc>
        <type name="ChannelClass" c:type="SpiceChannelClass"/>
      </field>
      <field name="record_start">
        <doc xml:space="preserve"
             filename="src/channel-record.h"
             line="55">Signal class handler for the #SpiceRecordChannel::record-start signal.</doc>
        <callback name="record_start">
          <source-position filename="src/channel-record.h" line="65"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="RecordChannel" c:type="SpiceRecordChannel*"/>
            </parameter>
            <parameter name="format" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="channels" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="freq" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="record_data">
        <doc xml:space="preserve"
             filename="src/channel-record.h"
             line="57">Unused (deprecated).</doc>
        <callback name="record_data">
          <source-position filename="src/channel-record.h" line="67"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="RecordChannel" c:type="SpiceRecordChannel*"/>
            </parameter>
            <parameter name="data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="gpointer*"/>
            </parameter>
            <parameter name="size" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="record_stop">
        <doc xml:space="preserve"
             filename="src/channel-record.h"
             line="56">Signal class handler for the #SpiceRecordChannel::record-stop signal.</doc>
        <callback name="record_stop">
          <source-position filename="src/channel-record.h" line="68"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="channel" transfer-ownership="none">
              <type name="RecordChannel" c:type="SpiceRecordChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="RecordChannelPrivate"
            c:type="SpiceRecordChannelPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/channel-record.h" line="37"/>
    </record>
    <function-macro name="SESSION"
                    c:identifier="SPICE_SESSION"
                    introspectable="0">
      <source-position filename="src/spice-session.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SESSION_CLASS"
                    c:identifier="SPICE_SESSION_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-session.h" line="34"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SESSION_GET_CLASS"
                    c:identifier="SPICE_SESSION_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-session.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SMARTCARD_CHANNEL"
                    c:identifier="SPICE_SMARTCARD_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-smartcard.h" line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SMARTCARD_CHANNEL_CLASS"
                    c:identifier="SPICE_SMARTCARD_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-smartcard.h" line="30"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SMARTCARD_CHANNEL_GET_CLASS"
                    c:identifier="SPICE_SMARTCARD_CHANNEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-smartcard.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SMARTCARD_MANAGER"
                    c:identifier="SPICE_SMARTCARD_MANAGER"
                    introspectable="0">
      <source-position filename="src/smartcard-manager.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SMARTCARD_MANAGER_CLASS"
                    c:identifier="SPICE_SMARTCARD_MANAGER_CLASS"
                    introspectable="0">
      <source-position filename="src/smartcard-manager.h" line="31"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SMARTCARD_MANAGER_GET_CLASS"
                    c:identifier="SPICE_SMARTCARD_MANAGER_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/smartcard-manager.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Session"
           c:symbol-prefix="session"
           c:type="SpiceSession"
           parent="GObject.Object"
           glib:type-name="SpiceSession"
           glib:get-type="spice_session_get_type"
           glib:type-struct="SessionClass">
      <doc xml:space="preserve"
           filename="src/spice-session.h"
           line="71">The #SpiceSession struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/spice-session.h" line="105"/>
      <constructor name="new" c:identifier="spice_session_new">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1565">Creates a new Spice session.</doc>
        <source-position filename="src/spice-session.h" line="109"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/spice-session.c"
               line="1570">a new #SpiceSession</doc>
          <type name="Session" c:type="SpiceSession*"/>
        </return-value>
      </constructor>
      <virtual-method name="channel_destroy">
        <doc xml:space="preserve"
             filename="src/spice-session.h"
             line="87">Signal class handler for the #SpiceSession::channel_destroy signal.</doc>
        <source-position filename="src/spice-session.h" line="97"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <type name="Session" c:type="SpiceSession*"/>
          </instance-parameter>
          <parameter name="channel" transfer-ownership="none">
            <type name="Channel" c:type="SpiceChannel*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="channel_new">
        <doc xml:space="preserve"
             filename="src/spice-session.h"
             line="86">Signal class handler for the #SpiceSession::channel_new signal.</doc>
        <source-position filename="src/spice-session.h" line="96"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <type name="Session" c:type="SpiceSession*"/>
          </instance-parameter>
          <parameter name="channel" transfer-ownership="none">
            <type name="Channel" c:type="SpiceChannel*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="connect" c:identifier="spice_session_connect">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1648">Open the session using the #SpiceSession:host and
#SpiceSession:port.</doc>
        <source-position filename="src/spice-session.h" line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-session.c"
               line="1655">%FALSE if the session state is invalid for connection
request. %TRUE if the connection is initiated. To know whether the
connection is established, you must watch for channels creation
(#SpiceSession::channel-new) and the channels state
(#SpiceChannel::channel-event).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="1650">a #SpiceSession</doc>
            <type name="Session" c:type="SpiceSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="disconnect" c:identifier="spice_session_disconnect">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="2013">Disconnect the @session, and destroy all channels.</doc>
        <source-position filename="src/spice-session.h" line="112"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="2015">a #SpiceSession</doc>
            <type name="Session" c:type="SpiceSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_channels" c:identifier="spice_session_get_channels">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="2035">Get the list of current channels associated with this @session.</doc>
        <source-position filename="src/spice-session.h" line="113"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="src/spice-session.c"
               line="2041">a #GList
         of unowned #SpiceChannel channels.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Channel"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="2037">a #SpiceSession</doc>
            <type name="Session" c:type="SpiceSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_proxy_uri"
              c:identifier="spice_session_get_proxy_uri"
              version="0.24">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="2724">Gets the @session proxy uri.</doc>
        <source-position filename="src/spice-session.h" line="116"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-session.c"
               line="2730">the session proxy #SpiceURI or %NULL.</doc>
          <type name="URI" c:type="SpiceURI*"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="2726">a #SpiceSession</doc>
            <type name="Session" c:type="SpiceSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_read_only"
              c:identifier="spice_session_get_read_only"
              glib:get-property="read-only">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1986">Checks whether the @session is read-only.</doc>
        <source-position filename="src/spice-session.h" line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-session.c"
               line="1992">whether the @session is in read-only mode.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="1988">a #SpiceSession</doc>
            <type name="Session" c:type="SpiceSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_channel_type"
              c:identifier="spice_session_has_channel_type">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="2052">See if there is a @type channel in the channels associated with this
@session.</doc>
        <source-position filename="src/spice-session.h" line="114"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-session.c"
               line="2060">TRUE if a @type channel is available otherwise FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="2054">a #SpiceSession</doc>
            <type name="Session" c:type="SpiceSession*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="2055">a #SpiceChannel:channel-type</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_for_migration"
              c:identifier="spice_session_is_for_migration"
              version="0.27">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="2890">During seamless migration, channels may be created to establish a
connection with the target, but they are temporary and should only
handle migration steps. In order to avoid other interactions with
the client, channels should check this value.</doc>
        <source-position filename="src/spice-session.h" line="117"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-session.c"
               line="2899">%TRUE if the session is a copy created during migration</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="2892">a Spice session</doc>
            <type name="Session" c:type="SpiceSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open_fd" c:identifier="spice_session_open_fd">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1681">Open the session using the provided @fd socket file
descriptor. This is useful if you create the fd yourself, for
example to setup a SSH tunnel.

Note however that additional sockets will be needed by all the channels
created for @session so users of this API should hook into
SpiceChannel::open-fd signal for each channel they are interested in, and
create and pass a new socket to the channel using #spice_channel_open_fd, in
the signal callback.

If @fd is -1, a valid fd will be requested later via the
SpiceChannel::open-fd signal. Typically, you would want to just pass -1 as
@fd this call since you will have to hook to SpiceChannel::open-fd signal
anyway.</doc>
        <source-position filename="src/spice-session.h" line="111"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-session.c"
               line="1701">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="1683">a #SpiceSession</doc>
            <type name="Session" c:type="SpiceSession*"/>
          </instance-parameter>
          <parameter name="fd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="1684">a file descriptor (socket) or -1</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <property name="ca"
                version="0.15"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1255">CA certificates in PEM format. The text data can contain
several CA certificates identified by:

 -----BEGIN CERTIFICATE-----
 ... (CA certificate in base64 encoding) ...
 -----END CERTIFICATE-----</doc>
        <array name="GLib.ByteArray">
          <type name="guint8" c:type="guint8"/>
        </array>
      </property>
      <property name="ca-file"
                writable="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="974">File holding the CA certificates for the host the client is
connecting to</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="cache-size"
                version="0.9"
                writable="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1379">Images cache size. If 0, don't set.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="cert-subject"
                writable="1"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="ciphers"
                writable="1"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="client-sockets"
                writable="1"
                transfer-ownership="none"
                default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="color-depth"
                version="0.7"
                deprecated="1"
                deprecated-version="0.37"
                writable="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1127">Display color depth to set on new display channels. If 0, don't set.</doc>
        <doc-deprecated xml:space="preserve">Deprecated due lack of support in drivers, only Windows 7 and older.
This option is currently ignored.</doc-deprecated>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="disable-effects"
                version="0.7"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1108">A string array of effects to disable. The settings will
be applied on new display channels. The following effets can be
disabled "wallpaper", "font-smooth", "animation", and "all",
which will disable all the effects. If NULL, don't apply changes.</doc>
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="enable-audio"
                version="0.8"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="TRUE">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1164">If set to TRUE, the audio channels will be enabled for
playback and recording.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="enable-smartcard"
                version="0.7"
                writable="1"
                transfer-ownership="none"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1147">If set to TRUE, the smartcard channel will be enabled and smartcard
events will be forwarded to the guest</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="enable-usbredir"
                version="0.8"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="TRUE">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1220">If set to TRUE, the usbredir channel will be enabled and USB devices
can be redirected to the guest</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="gl-scanout"
                version="0.36"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="TRUE">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1532">Whether to enable gl-scanout (Unix only).  Set to TRUE by
default on EGL-enabled host, unless SPICE_DISABLE_GL_SCANOUT
environment variable is set.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="glz-window-size"
                version="0.9"
                writable="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1395">Glz window size. If 0, don't set.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="host"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="localhost">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="881">URL of the SPICE host to connect to</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="inhibit-keyboard-grab"
                writable="1"
                transfer-ownership="none"
                default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="migration-state"
                transfer-ownership="none"
                default-value="SPICE_SESSION_MIGRATION_NONE">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1091">#SpiceSessionMigration bit field indicating if a migration is in
progress</doc>
        <type name="SessionMigration"/>
      </property>
      <property name="name"
                version="0.11"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1411">Spice server name.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="password"
                writable="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="959">TLS password to use</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="port"
                writable="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="914">Port to connect to for unencrypted sessions</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="preferred-compression"
                version="0.29"
                introspectable="0"
                writable="1"
                transfer-ownership="none"
                default-value="SPICE_IMAGE_COMPRESSION_INVALID">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1514">The image compression algorithm the client prefers to use. It is
reported to the server.</doc>
        <type/>
      </property>
      <property name="protocol"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="2">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1003">Version of the SPICE protocol to use</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="proxy"
                version="0.17"
                writable="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1442">URI to the proxy server to use when doing network connection.
of the form &lt;![CDATA[ [protocol://]&lt;host&gt;[:port] ]]&gt;</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="pubkey" writable="1" transfer-ownership="none">
        <array name="GLib.ByteArray">
          <type name="guint8" c:type="guint8"/>
        </array>
      </property>
      <property name="read-only"
                version="0.8"
                writable="1"
                construct="1"
                transfer-ownership="none"
                getter="get_read_only"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1363">Whether this connection is read-only mode.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="secure-channels"
                version="0.20"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1276">A string array of channel types to be secured.</doc>
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="share-dir-ro"
                version="0.28"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1476">Whether to share the directory read-only.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="shared-dir"
                version="0.24"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1459">Location of the shared directory</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="smartcard-certificates"
                version="0.7"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1181">This property is used when one wants to simulate a smartcard with no
hardware smartcard reader. If it's set to a NULL-terminated string
array containing the names of 3 valid certificates, these will be
used to simulate a smartcard in the guest
See also spice_smartcard_manager_insert_card()</doc>
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="smartcard-db"
                version="0.7"
                writable="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1202">Path to the NSS certificate database containing the certificates to
use to simulate a software smartcard</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="tls-port"
                writable="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="929">Port to connect to for TLS sessions</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="unix-path"
                version="0.28"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="897">Path of the Unix socket to connect to</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="uri"
                writable="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1019">URI of the SPICE host to connect to. The URI is of the form
spice://hostname?port=XXX or spice://hostname?tls_port=XXX</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="username"
                writable="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="944">Username to use</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="uuid" version="0.11" transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1427">Spice server uuid.</doc>
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="verify"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="SPICE_SESSION_VERIFY_HOSTNAME">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1074">#SpiceSessionVerify bit field indicating which parts of the peer
certificate should be checked</doc>
        <type name="SessionVerify"/>
      </property>
      <property name="webdav-server"
                version="0.39"
                introspectable="0"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1493">Phodav server that is internally used by #SpiceSession to make
#SpiceSession:shared-dir available to the host.</doc>
        <type/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="SessionPrivate" c:type="SpiceSessionPrivate*"/>
      </field>
      <glib:signal name="channel-destroy" when="first">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1311">The #SpiceSession::channel-destroy signal is emitted each time a #SpiceChannel is destroyed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="1314">the destroyed #SpiceChannel</doc>
            <type name="Channel"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="channel-new" when="first">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1293">The #SpiceSession::channel-new signal is emitted each time a #SpiceChannel is created.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="channel" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="1296">the new #SpiceChannel</doc>
            <type name="Channel"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="disconnected" when="first" version="0.35">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1329">The #SpiceSession::disconnected signal is emitted when all channels have been destroyed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="mm-time-reset" when="first">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="1346">The #SpiceSession::mm-time-reset is emitted when we identify discontinuity in mm-time

Since 0.20</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="SessionClass"
            c:type="SpiceSessionClass"
            glib:is-gtype-struct-for="Session">
      <doc xml:space="preserve"
           filename="src/spice-session.h"
           line="83">Class structure for #SpiceSession.</doc>
      <source-position filename="src/spice-session.h" line="105"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/spice-session.h"
             line="85">Parent class.</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="channel_new">
        <doc xml:space="preserve"
             filename="src/spice-session.h"
             line="86">Signal class handler for the #SpiceSession::channel_new signal.</doc>
        <callback name="channel_new">
          <source-position filename="src/spice-session.h" line="96"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="session" transfer-ownership="none">
              <type name="Session" c:type="SpiceSession*"/>
            </parameter>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="channel_destroy">
        <doc xml:space="preserve"
             filename="src/spice-session.h"
             line="87">Signal class handler for the #SpiceSession::channel_destroy signal.</doc>
        <callback name="channel_destroy">
          <source-position filename="src/spice-session.h" line="97"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="session" transfer-ownership="none">
              <type name="Session" c:type="SpiceSession*"/>
            </parameter>
            <parameter name="channel" transfer-ownership="none">
              <type name="Channel" c:type="SpiceChannel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_spice_reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="10">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="SessionMigration"
                 glib:type-name="SpiceSessionMigration"
                 glib:get-type="spice_session_migration_get_type"
                 c:type="SpiceSessionMigration">
      <doc xml:space="preserve"
           filename="src/spice-session.h"
           line="55">Session migration state.</doc>
      <member name="none"
              value="0"
              c:identifier="SPICE_SESSION_MIGRATION_NONE"
              glib:nick="none"
              glib:name="SPICE_SESSION_MIGRATION_NONE">
        <doc xml:space="preserve"
             filename="src/spice-session.h"
             line="57">no migration going on</doc>
      </member>
      <member name="switching"
              value="1"
              c:identifier="SPICE_SESSION_MIGRATION_SWITCHING"
              glib:nick="switching"
              glib:name="SPICE_SESSION_MIGRATION_SWITCHING">
        <doc xml:space="preserve"
             filename="src/spice-session.h"
             line="58">the session is switching host (destroy and reconnect)</doc>
      </member>
      <member name="migrating"
              value="2"
              c:identifier="SPICE_SESSION_MIGRATION_MIGRATING"
              glib:nick="migrating"
              glib:name="SPICE_SESSION_MIGRATION_MIGRATING">
        <doc xml:space="preserve"
             filename="src/spice-session.h"
             line="59">the session is migrating seamlessly (reconnect)</doc>
      </member>
      <member name="connecting"
              value="3"
              c:identifier="SPICE_SESSION_MIGRATION_CONNECTING"
              glib:nick="connecting"
              glib:name="SPICE_SESSION_MIGRATION_CONNECTING">
        <doc xml:space="preserve"
             filename="src/spice-session.h"
             line="60">the migration is connecting to destination (Since: 0.27)</doc>
      </member>
    </enumeration>
    <record name="SessionPrivate"
            c:type="SpiceSessionPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/spice-types.h" line="29"/>
    </record>
    <bitfield name="SessionVerify"
              glib:type-name="SpiceSessionVerify"
              glib:get-type="spice_session_verify_get_type"
              c:type="SpiceSessionVerify">
      <doc xml:space="preserve"
           filename="src/spice-session.h"
           line="41">Peer certificate verification parameters flags.</doc>
      <member name="pubkey"
              value="1"
              c:identifier="SPICE_SESSION_VERIFY_PUBKEY"
              glib:nick="pubkey"
              glib:name="SPICE_SESSION_VERIFY_PUBKEY">
        <doc xml:space="preserve"
             filename="src/spice-session.h"
             line="43">verify certificate public key matching</doc>
      </member>
      <member name="hostname"
              value="2"
              c:identifier="SPICE_SESSION_VERIFY_HOSTNAME"
              glib:nick="hostname"
              glib:name="SPICE_SESSION_VERIFY_HOSTNAME">
        <doc xml:space="preserve"
             filename="src/spice-session.h"
             line="44">verify certificate hostname matching</doc>
      </member>
      <member name="subject"
              value="4"
              c:identifier="SPICE_SESSION_VERIFY_SUBJECT"
              glib:nick="subject"
              glib:name="SPICE_SESSION_VERIFY_SUBJECT">
        <doc xml:space="preserve"
             filename="src/spice-session.h"
             line="45">verify certificate subject matching</doc>
      </member>
    </bitfield>
    <class name="SmartcardChannel"
           c:symbol-prefix="smartcard_channel"
           c:type="SpiceSmartcardChannel"
           parent="Channel"
           glib:type-name="SpiceSmartcardChannel"
           glib:get-type="spice_smartcard_channel_get_type"
           glib:type-struct="SmartcardChannelClass">
      <doc xml:space="preserve"
           filename="src/channel-smartcard.h"
           line="39">The #SpiceSmartcardChannel struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/channel-smartcard.h" line="65"/>
      <field name="parent">
        <type name="Channel" c:type="SpiceChannel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="SmartcardChannelPrivate"
              c:type="SpiceSmartcardChannelPrivate*"/>
      </field>
    </class>
    <record name="SmartcardChannelClass"
            c:type="SpiceSmartcardChannelClass"
            glib:is-gtype-struct-for="SmartcardChannel">
      <doc xml:space="preserve"
           filename="src/channel-smartcard.h"
           line="52">Class structure for #SpiceSmartcardChannel.</doc>
      <source-position filename="src/channel-smartcard.h" line="65"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/channel-smartcard.h"
             line="54">Parent class.</doc>
        <type name="ChannelClass" c:type="SpiceChannelClass"/>
      </field>
    </record>
    <record name="SmartcardChannelPrivate"
            c:type="SpiceSmartcardChannelPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/channel-smartcard.h" line="37"/>
    </record>
    <class name="SmartcardManager"
           c:symbol-prefix="smartcard_manager"
           c:type="SpiceSmartcardManager"
           parent="GObject.Object"
           glib:type-name="SpiceSmartcardManager"
           glib:get-type="spice_smartcard_manager_get_type"
           glib:type-struct="SmartcardManagerClass">
      <doc xml:space="preserve"
           filename="src/smartcard-manager.h"
           line="49">The #SpiceSmartcardManager struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/smartcard-manager.h" line="89"/>
      <function name="get" c:identifier="spice_smartcard_manager_get">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.c"
             line="223">#SpiceSmartcardManager is a singleton, use this function to get a pointer
to it. A new SpiceSmartcardManager instance will be created the first
time this function is called</doc>
        <source-position filename="src/smartcard-manager.h" line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/smartcard-manager.c"
               line="230">a weak reference to the #SpiceSmartcardManager</doc>
          <type name="SmartcardManager" c:type="SpiceSmartcardManager*"/>
        </return-value>
      </function>
      <virtual-method name="card_inserted">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.h"
             line="68">Signal class handler for the #SpiceSmartcardManager::card_inserted signal.</doc>
        <source-position filename="src/smartcard-manager.h" line="80"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <type name="SmartcardManager" c:type="SpiceSmartcardManager*"/>
          </instance-parameter>
          <parameter name="reader" transfer-ownership="none">
            <type name="SmartcardReader" c:type="SpiceSmartcardReader*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="card_removed">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.h"
             line="69">Signal class handler for the #SpiceSmartcardManager::card_removed signal.</doc>
        <source-position filename="src/smartcard-manager.h" line="81"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <type name="SmartcardManager" c:type="SpiceSmartcardManager*"/>
          </instance-parameter>
          <parameter name="reader" transfer-ownership="none">
            <type name="SmartcardReader" c:type="SpiceSmartcardReader*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="reader_added">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.h"
             line="66">Signal class handler for the #SpiceSmartcardManager::reader_added signal.</doc>
        <source-position filename="src/smartcard-manager.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <type name="SmartcardManager" c:type="SpiceSmartcardManager*"/>
          </instance-parameter>
          <parameter name="reader" transfer-ownership="none">
            <type name="SmartcardReader" c:type="SpiceSmartcardReader*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="reader_removed">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.h"
             line="67">Signal class handler for the #SpiceSmartcardManager::reader_removed signal.</doc>
        <source-position filename="src/smartcard-manager.h" line="79"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <type name="SmartcardManager" c:type="SpiceSmartcardManager*"/>
          </instance-parameter>
          <parameter name="reader" transfer-ownership="none">
            <type name="SmartcardReader" c:type="SpiceSmartcardReader*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_readers"
              c:identifier="spice_smartcard_manager_get_readers"
              version="0.20">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.c"
             line="588">Gets the list of smartcard readers that are currently available, they
can be either software (emulated) readers, or hardware ones.</doc>
        <source-position filename="src/smartcard-manager.h" line="100"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/smartcard-manager.c"
               line="595">a newly
allocated list of SpiceSmartcardReader instances, or NULL if none were
found. When no longer needed, the list must be freed after unreferencing
its elements with g_boxed_free()</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="SmartcardReader"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/smartcard-manager.c"
                 line="590">a #SpiceSmartcardManager</doc>
            <type name="SmartcardManager" c:type="SpiceSmartcardManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="insert_card"
              c:identifier="spice_smartcard_manager_insert_card"
              version="0.20">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.c"
             line="628">Simulates the insertion of a smartcard in the guest. Valid certificates
must have been set in #SpiceSession:smartcard-certificates for software
smartcard support to work. At the moment, only one software smartcard
reader is supported, that's why there is no parameter to indicate which
reader to insert the card in.</doc>
        <source-position filename="src/smartcard-manager.h" line="95"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/smartcard-manager.c"
               line="638">TRUE if smartcard insertion was successfully simulated, FALSE
if this failed, or if software smartcard support isn't enabled.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/smartcard-manager.c"
                 line="630">a #SpiceSmartcardManager</doc>
            <type name="SmartcardManager" c:type="SpiceSmartcardManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_card"
              c:identifier="spice_smartcard_manager_remove_card"
              version="0.20">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.c"
             line="654">Simulates the removal of a smartcard in the guest. At the moment, only
one software smartcard reader is supported, that's why there is no
parameter to indicate which reader to insert the card in.</doc>
        <source-position filename="src/smartcard-manager.h" line="96"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/smartcard-manager.c"
               line="662">TRUE if smartcard removal was successfully simulated, FALSE
if this failed, or if software smartcard support isn't enabled.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/smartcard-manager.c"
                 line="656">a #SpiceSmartcardManager</doc>
            <type name="SmartcardManager" c:type="SpiceSmartcardManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="SmartcardManagerPrivate"
              c:type="SpiceSmartcardManagerPrivate*"/>
      </field>
      <glib:signal name="card-inserted" when="first">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.c"
             line="169">The #SpiceSmartcardManager::card-inserted signal is emitted whenever
a smartcard is inserted in a reader</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="vreader" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/smartcard-manager.c"
                 line="172">#VReader boxed object corresponding to the reader a new
card was inserted in</doc>
            <type name="VReader"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="card-removed" when="first">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.c"
             line="189">The #SpiceSmartcardManager::card-removed signal is emitted whenever
a smartcard was removed from a reader.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="vreader" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/smartcard-manager.c"
                 line="192">#VReader boxed object corresponding to the reader a card
was removed from</doc>
            <type name="VReader"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="reader-added" when="first">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.c"
             line="131">The #SpiceSmartcardManager::reader-added signal is emitted whenever
a new smartcard reader (software or hardware) has been plugged in.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="vreader" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/smartcard-manager.c"
                 line="134">#VReader boxed object corresponding to the added reader</doc>
            <type name="VReader"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="reader-removed" when="first">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.c"
             line="150">The #SpiceSmartcardManager::reader-removed signal is emitted whenever
a smartcard reader (software or hardware) has been removed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="vreader" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/smartcard-manager.c"
                 line="153">#VReader boxed object corresponding to the removed reader</doc>
            <type name="VReader"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="SmartcardManagerClass"
            c:type="SpiceSmartcardManagerClass"
            glib:is-gtype-struct-for="SmartcardManager">
      <doc xml:space="preserve"
           filename="src/smartcard-manager.h"
           line="63">Class structure for #SpiceSmartcardManager.</doc>
      <source-position filename="src/smartcard-manager.h" line="89"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.h"
             line="65">Parent class.</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="reader_added">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.h"
             line="66">Signal class handler for the #SpiceSmartcardManager::reader_added signal.</doc>
        <callback name="reader_added">
          <source-position filename="src/smartcard-manager.h" line="78"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="manager" transfer-ownership="none">
              <type name="SmartcardManager" c:type="SpiceSmartcardManager*"/>
            </parameter>
            <parameter name="reader" transfer-ownership="none">
              <type name="SmartcardReader" c:type="SpiceSmartcardReader*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reader_removed">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.h"
             line="67">Signal class handler for the #SpiceSmartcardManager::reader_removed signal.</doc>
        <callback name="reader_removed">
          <source-position filename="src/smartcard-manager.h" line="79"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="manager" transfer-ownership="none">
              <type name="SmartcardManager" c:type="SpiceSmartcardManager*"/>
            </parameter>
            <parameter name="reader" transfer-ownership="none">
              <type name="SmartcardReader" c:type="SpiceSmartcardReader*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="card_inserted">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.h"
             line="68">Signal class handler for the #SpiceSmartcardManager::card_inserted signal.</doc>
        <callback name="card_inserted">
          <source-position filename="src/smartcard-manager.h" line="80"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="manager" transfer-ownership="none">
              <type name="SmartcardManager" c:type="SpiceSmartcardManager*"/>
            </parameter>
            <parameter name="reader" transfer-ownership="none">
              <type name="SmartcardReader" c:type="SpiceSmartcardReader*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="card_removed">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.h"
             line="69">Signal class handler for the #SpiceSmartcardManager::card_removed signal.</doc>
        <callback name="card_removed">
          <source-position filename="src/smartcard-manager.h" line="81"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="manager" transfer-ownership="none">
              <type name="SmartcardManager" c:type="SpiceSmartcardManager*"/>
            </parameter>
            <parameter name="reader" transfer-ownership="none">
              <type name="SmartcardReader" c:type="SpiceSmartcardReader*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_spice_reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="10">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="SmartcardManagerPrivate"
            c:type="SpiceSmartcardManagerPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/smartcard-manager.h" line="40"/>
    </record>
    <record name="SmartcardReader"
            c:type="SpiceSmartcardReader"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="src/smartcard-manager.h"
           line="42">The #SpiceSmartcardReader struct is opaque and cannot be accessed directly.</doc>
      <source-position filename="src/smartcard-manager.h" line="47"/>
      <method name="insert_card"
              c:identifier="spice_smartcard_reader_insert_card">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.c"
             line="544">Simulates insertion of a smartcard in the software smartcard reader
@reader. If @reader is not a software smartcard reader, FALSE will be
returned.</doc>
        <source-position filename="src/smartcard-manager.h" line="98"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/smartcard-manager.c"
               line="552">TRUE if insertion of a card was successfully simulated, FALSE
otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="reader" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/smartcard-manager.c"
                 line="546">a #SpiceSmartcardReader</doc>
            <type name="SmartcardReader" c:type="SpiceSmartcardReader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_software"
              c:identifier="spice_smartcard_reader_is_software">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.c"
             line="529">Tests if @reader is a software (emulated) smartcard reader.</doc>
        <source-position filename="src/smartcard-manager.h" line="97"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/smartcard-manager.c"
               line="535">TRUE if @reader is a software (emulated) smartcard reader,
FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="reader" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/smartcard-manager.c"
                 line="531">a #SpiceSmartcardReader</doc>
            <type name="SmartcardReader" c:type="SpiceSmartcardReader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_card"
              c:identifier="spice_smartcard_reader_remove_card">
        <doc xml:space="preserve"
             filename="src/smartcard-manager.c"
             line="566">Simulates removal of a smartcard from the software smartcard reader
@reader. If @reader is not a software smartcard reader, FALSE will be
returned.</doc>
        <source-position filename="src/smartcard-manager.h" line="99"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/smartcard-manager.c"
               line="574">TRUE if removal of a card was successfully simulated, FALSE
otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="reader" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/smartcard-manager.c"
                 line="568">a #SpiceSmartcardReader</doc>
            <type name="SmartcardReader" c:type="SpiceSmartcardReader*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="URI"
           c:symbol-prefix="uri"
           c:type="SpiceURI"
           parent="GObject.Object"
           glib:type-name="SpiceURI"
           glib:get-type="spice_uri_get_type"
           glib:type-struct="URIClass">
      <doc xml:space="preserve"
           filename="src/spice-uri.h"
           line="35">The #SpiceURI struct is opaque and cannot be accessed directly.</doc>
      <source-position filename="src/spice-uri.h" line="48"/>
      <method name="get_hostname"
              c:identifier="spice_uri_get_hostname"
              glib:get-property="hostname">
        <source-position filename="src/spice-uri.h" line="55"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri" transfer-ownership="none">
            <type name="URI" c:type="SpiceURI*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_password"
              c:identifier="spice_uri_get_password"
              glib:get-property="password">
        <source-position filename="src/spice-uri.h" line="62"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri" transfer-ownership="none">
            <type name="URI" c:type="SpiceURI*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_port"
              c:identifier="spice_uri_get_port"
              glib:get-property="port">
        <source-position filename="src/spice-uri.h" line="57"/>
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri" transfer-ownership="none">
            <type name="URI" c:type="SpiceURI*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_scheme"
              c:identifier="spice_uri_get_scheme"
              glib:get-property="scheme">
        <source-position filename="src/spice-uri.h" line="53"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri" transfer-ownership="none">
            <type name="URI" c:type="SpiceURI*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_user"
              c:identifier="spice_uri_get_user"
              glib:get-property="user">
        <source-position filename="src/spice-uri.h" line="60"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri" transfer-ownership="none">
            <type name="URI" c:type="SpiceURI*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_hostname"
              c:identifier="spice_uri_set_hostname"
              glib:set-property="hostname">
        <source-position filename="src/spice-uri.h" line="56"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri" transfer-ownership="none">
            <type name="URI" c:type="SpiceURI*"/>
          </instance-parameter>
          <parameter name="hostname" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_password"
              c:identifier="spice_uri_set_password"
              glib:set-property="password">
        <source-position filename="src/spice-uri.h" line="63"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri" transfer-ownership="none">
            <type name="URI" c:type="SpiceURI*"/>
          </instance-parameter>
          <parameter name="password" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_port"
              c:identifier="spice_uri_set_port"
              glib:set-property="port">
        <source-position filename="src/spice-uri.h" line="58"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri" transfer-ownership="none">
            <type name="URI" c:type="SpiceURI*"/>
          </instance-parameter>
          <parameter name="port" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_scheme"
              c:identifier="spice_uri_set_scheme"
              glib:set-property="scheme">
        <source-position filename="src/spice-uri.h" line="54"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri" transfer-ownership="none">
            <type name="URI" c:type="SpiceURI*"/>
          </instance-parameter>
          <parameter name="scheme" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_user"
              c:identifier="spice_uri_set_user"
              glib:set-property="user">
        <source-position filename="src/spice-uri.h" line="61"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri" transfer-ownership="none">
            <type name="URI" c:type="SpiceURI*"/>
          </instance-parameter>
          <parameter name="user" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string" c:identifier="spice_uri_to_string">
        <source-position filename="src/spice-uri.h" line="59"/>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri" transfer-ownership="none">
            <type name="URI" c:type="SpiceURI*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="hostname"
                writable="1"
                transfer-ownership="none"
                setter="set_hostname"
                getter="get_hostname"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="password"
                writable="1"
                transfer-ownership="none"
                setter="set_password"
                getter="get_password"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="port"
                writable="1"
                transfer-ownership="none"
                setter="set_port"
                getter="get_port"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="scheme"
                writable="1"
                transfer-ownership="none"
                setter="set_scheme"
                getter="get_scheme"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="user"
                writable="1"
                transfer-ownership="none"
                setter="set_user"
                getter="get_user"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
    </class>
    <record name="URIClass"
            c:type="SpiceURIClass"
            disguised="1"
            opaque="1"
            glib:is-gtype-struct-for="URI">
      <doc xml:space="preserve"
           filename="src/spice-uri.h"
           line="42">The #SpiceURIClass struct is opaque and cannot be accessed directly.
It is class structure for #SpiceURI.</doc>
      <source-position filename="src/spice-uri.h" line="48"/>
    </record>
    <record name="URIPrivate"
            c:type="SpiceURIPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/spice-uri.h" line="49"/>
    </record>
    <function-macro name="URI_CLASS"
                    c:identifier="SPICE_URI_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-uri.h" line="30"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="URI_GET_CLASS"
                    c:identifier="SPICE_URI_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/spice-uri.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USBREDIR_CHANNEL"
                    c:identifier="SPICE_USBREDIR_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-usbredir.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USBREDIR_CHANNEL_CLASS"
                    c:identifier="SPICE_USBREDIR_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-usbredir.h" line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USBREDIR_CHANNEL_GET_CLASS"
                    c:identifier="SPICE_USBREDIR_CHANNEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-usbredir.h" line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USB_DEVICE_MANAGER"
                    c:identifier="SPICE_USB_DEVICE_MANAGER"
                    introspectable="0">
      <source-position filename="src/usb-device-manager.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USB_DEVICE_MANAGER_CLASS"
                    c:identifier="SPICE_USB_DEVICE_MANAGER_CLASS"
                    introspectable="0">
      <source-position filename="src/usb-device-manager.h" line="34"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USB_DEVICE_MANAGER_GET_CLASS"
                    c:identifier="SPICE_USB_DEVICE_MANAGER_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/usb-device-manager.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <record name="UsbDevice"
            c:type="SpiceUsbDevice"
            opaque="1"
            glib:type-name="SpiceUsbDevice"
            glib:get-type="spice_usb_device_get_type"
            c:symbol-prefix="usb_device">
      <doc xml:space="preserve"
           filename="src/usb-device-manager.h"
           line="45">The #SpiceUsbDevice struct is opaque and cannot be accessed directly.</doc>
      <source-position filename="src/usb-device-manager.h" line="50"/>
      <method name="get_description"
              c:identifier="spice_usb_device_get_description">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="1433">Get a string describing the device which is suitable as a description of
the device for the end user. The returned string should be freed with
g_free() when no longer needed.

The @format positional parameters are the following:
1. \%s manufacturer
2. \%s product
3. \%s descriptor (a [vendor_id:product_id] string)
4. \%d bus
5. \%d address

(the default format string is "\%s \%s \%s at \%d-\%d")</doc>
        <source-position filename="src/usb-device-manager.h" line="102"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/usb-device-manager.c"
               line="1452">a newly-allocated string holding the description, or %NULL if failed</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1435">#SpiceUsbDevice to get the description of</doc>
            <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
          </instance-parameter>
          <parameter name="format"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1436">an optional printf() format string with
positional parameters</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_libusb_device"
              c:identifier="spice_usb_device_get_libusb_device"
              version="0.27">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="621">Finds the %libusb_device associated with the @device.</doc>
        <source-position filename="src/usb-device-manager.h" line="103"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/usb-device-manager.c"
               line="627">the %libusb_device associated to %SpiceUsbDevice.</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="623">#SpiceUsbDevice to get the descriptor information of</doc>
            <type name="UsbDevice" c:type="const SpiceUsbDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="UsbDeviceManager"
           c:symbol-prefix="usb_device_manager"
           c:type="SpiceUsbDeviceManager"
           parent="GObject.Object"
           glib:type-name="SpiceUsbDeviceManager"
           glib:get-type="spice_usb_device_manager_get_type"
           glib:type-struct="UsbDeviceManagerClass">
      <doc xml:space="preserve"
           filename="src/usb-device-manager.h"
           line="52">The #SpiceUsbDeviceManager struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/usb-device-manager.h" line="97"/>
      <implements name="Gio.Initable"/>
      <function name="get"
                c:identifier="spice_usb_device_manager_get"
                throws="1">
        <doc xml:space="preserve"
             filename="src/spice-session.c"
             line="2778">Gets the #SpiceUsbDeviceManager associated with the passed in #SpiceSession.
A new #SpiceUsbDeviceManager instance will be created the first time this
function is called for a certain #SpiceSession.

Note that this function returns a weak reference, which should not be used
after the #SpiceSession itself has been unref-ed by the caller.</doc>
        <source-position filename="src/usb-device-manager.h" line="105"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-session.c"
               line="2790">a weak reference to the #SpiceUsbDeviceManager associated with the passed in #SpiceSession</doc>
          <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
        </return-value>
        <parameters>
          <parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/spice-session.c"
                 line="2780">#SpiceSession for which to get the #SpiceUsbDeviceManager</doc>
            <type name="Session" c:type="SpiceSession*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="auto_connect_failed">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.h"
             line="71">Signal class handler for the #SpiceUsbDeviceManager::auto-connect-failed signal.</doc>
        <source-position filename="src/usb-device-manager.h" line="85"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <type name="GLib.Error" c:type="GError*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="device_added">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.h"
             line="69">Signal class handler for the #SpiceUsbDeviceManager::device-added signal.</doc>
        <source-position filename="src/usb-device-manager.h" line="81"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="device_error">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.h"
             line="72">Signal class handler for the #SpiceUsbDeviceManager::device_error signal.</doc>
        <source-position filename="src/usb-device-manager.h" line="88"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <type name="GLib.Error" c:type="GError*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="device_removed">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.h"
             line="70">Signal class handler for the #SpiceUsbDeviceManager::device-removed signal.</doc>
        <source-position filename="src/usb-device-manager.h" line="83"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="allocate_device_for_file_descriptor"
              c:identifier="spice_usb_device_manager_allocate_device_for_file_descriptor"
              version="0.40"
              throws="1">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="1524">Allocates a SpiceUsbDevice instance for the specified file descriptor.</doc>
        <source-position filename="src/usb-device-manager.h" line="156"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/usb-device-manager.c"
               line="1532">an allocated SpiceUsbDevice instance or %NULL in case of failure.</doc>
          <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1526">the #SpiceUsbDeviceManager manager.</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="file_descriptor" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1527">an open file descriptor for the USB device.</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="can_redirect_device"
              c:identifier="spice_usb_device_manager_can_redirect_device"
              throws="1">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="1348">Checks whether it is possible to redirect the @device.</doc>
        <source-position filename="src/usb-device-manager.h" line="141"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/usb-device-manager.c"
               line="1356">%TRUE if @device can be redirected</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1350">the #SpiceUsbDeviceManager manager</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1351">a #SpiceUsbDevice to disconnect</doc>
            <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="connect_device_async"
              c:identifier="spice_usb_device_manager_connect_device_async"
              glib:finish-func="connect_device_finish">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="1143">Asynchronously connects the @device. When completed, @callback will be called.
Then it is possible to call spice_usb_device_manager_connect_device_finish()
to get the result of the operation.</doc>
        <source-position filename="src/usb-device-manager.h" line="114"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1145">a #SpiceUsbDeviceManager.</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1146">a #SpiceUsbDevice to redirect</doc>
            <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1147">optional #GCancellable object, %NULL to ignore</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1148">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1149">the data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="connect_device_finish"
              c:identifier="spice_usb_device_manager_connect_device_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="1177">Finishes an async operation. See spice_usb_device_manager_connect_device_async().</doc>
        <source-position filename="src/usb-device-manager.h" line="126"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/usb-device-manager.c"
               line="1185">%TRUE if connection is successful</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1179">a #SpiceUsbDeviceManager.</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1180">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_shared_cd_device"
              c:identifier="spice_usb_device_manager_create_shared_cd_device"
              throws="1">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="1465">Creates a new shared CD device based on a disk image file
or a physical CD device.</doc>
        <source-position filename="src/usb-device-manager.h" line="148"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/usb-device-manager.c"
               line="1474">%TRUE if device created successfully</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1467">a #SpiceUsbDeviceManager</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1468">image or device path</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="disconnect_device"
              c:identifier="spice_usb_device_manager_disconnect_device">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="1265">Disconnects the @device.</doc>
        <source-position filename="src/usb-device-manager.h" line="136"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1267">the #SpiceUsbDeviceManager manager</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1268">a #SpiceUsbDevice to disconnect</doc>
            <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="disconnect_device_async"
              c:identifier="spice_usb_device_manager_disconnect_device_async"
              version="0.32"
              glib:finish-func="disconnect_device_finish">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="1305">Asynchronously disconnects the @device. When completed, @callback will be called.
Then it is possible to call spice_usb_device_manager_disconnect_device_finish()
to get the result of the operation.</doc>
        <source-position filename="src/usb-device-manager.h" line="120"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1307">the #SpiceUsbDeviceManager manager.</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1308">a connected #SpiceUsbDevice to disconnect.</doc>
            <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1309">optional #GCancellable object, %NULL to ignore.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1310">a #GAsyncReadyCallback to call when the request is satisfied.</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1311">the data to pass to @callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="disconnect_device_finish"
              c:identifier="spice_usb_device_manager_disconnect_device_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="1199">Finishes an async operation. See spice_usb_device_manager_disconnect_device_async().</doc>
        <source-position filename="src/usb-device-manager.h" line="130"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/usb-device-manager.c"
               line="1207">%TRUE if disconnection is successful</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1201">a #SpiceUsbDeviceManager.</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1202">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_devices"
              c:identifier="spice_usb_device_manager_get_devices">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="1048">Finds devices associated with the @manager</doc>
        <source-position filename="src/usb-device-manager.h" line="108"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/usb-device-manager.c"
               line="1054">a %GPtrArray array of %SpiceUsbDevice</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="UsbDevice"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1050">the #SpiceUsbDeviceManager manager</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_devices_with_filter"
              c:identifier="spice_usb_device_manager_get_devices_with_filter"
              version="0.20">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="988">Finds devices associated with the @manager complying with the @filter</doc>
        <source-position filename="src/usb-device-manager.h" line="109"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/usb-device-manager.c"
               line="997">a
%GPtrArray array of %SpiceUsbDevice</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="UsbDevice"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="990">the #SpiceUsbDeviceManager manager</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="filter"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="991">filter string for selecting which devices to return,
     see #SpiceUsbDeviceManager:auto-connect-filter for the filter
     string format</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_device_connected"
              c:identifier="spice_usb_device_manager_is_device_connected">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="1061">Finds if the @device is connected.</doc>
        <source-position filename="src/usb-device-manager.h" line="112"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/usb-device-manager.c"
               line="1068">%TRUE if @device has an associated USB redirection channel</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1063">the #SpiceUsbDeviceManager manager</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1064">a #SpiceUsbDevice</doc>
            <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_device_shared_cd"
              c:identifier="spice_usb_device_manager_is_device_shared_cd">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="1497">Checks whether a device is shared CD.</doc>
        <source-position filename="src/usb-device-manager.h" line="152"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/usb-device-manager.c"
               line="1504">%TRUE if the device is shared CD</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1499">a #SpiceUsbDeviceManager</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="1500">a #SpiceUsbDevice to query</doc>
            <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_redirecting"
              c:identifier="spice_usb_device_manager_is_redirecting"
              version="0.32">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="178">Checks whether a device is being redirected</doc>
        <source-position filename="src/usb-device-manager.h" line="145"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/usb-device-manager.c"
               line="184">%TRUE if device redirection negotiation flow is in progress</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="180">the #SpiceUsbDeviceManager manager</doc>
            <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="auto-connect"
                writable="1"
                transfer-ownership="none"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="464">Set this to TRUE to automatically redirect newly plugged in device.

Note when #SpiceGtkSession's auto-usbredir property is TRUE, this
property is controlled by #SpiceGtkSession.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="auto-connect-filter"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="0x03,-1,-1,-1,0|-1,-1,-1,-1,1">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="478">Set a string specifying a filter to use to determine which USB devices
to autoconnect when plugged in, a filter consists of one or more rules.
Where each rule has the form of:

@class,@vendor,@product,@version,@allow

Use -1 for @class/@vendor/@product/@version to accept any value.

And the rules themselves are concatenated like this:

@rule1|@rule2|@rule3

The default setting filters out HID (class 0x03) USB devices from auto
connect and auto connects anything else. Note the explicit allow rule at
the end, this is necessary since by default all devices without a
matching filter rule will not auto-connect.

Filter strings in this format can be easily created with the RHEV-M
USB filter editor tool.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="free-channels"
                version="0.31"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="523">Get the number of available channels for redirecting USB devices.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="redirect-on-connect"
                writable="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="508">Set a string specifying a filter selecting USB devices to automatically
redirect after a Spice connection has been established.

See #SpiceUsbDeviceManager:auto-connect-filter for the filter string
format.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="session"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="449">#SpiceSession this #SpiceUsbDeviceManager is associated with</doc>
        <type name="Session"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="UsbDeviceManagerPrivate"
              c:type="SpiceUsbDeviceManagerPrivate*"/>
      </field>
      <glib:signal name="auto-connect-failed" when="first">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="576">The #SpiceUsbDeviceManager::auto-connect-failed signal is emitted
whenever the auto-connect property is true, and a newly plugged in
device could not be auto-connected.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="579">#SpiceUsbDevice boxed object corresponding to the device which failed to auto connect</doc>
            <type name="UsbDevice"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="580">#GError describing the reason why the autoconnect failed</doc>
            <type name="GLib.Error"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="device-added" when="first">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="538">The #SpiceUsbDeviceManager::device-added signal is emitted whenever
a new USB device has been plugged in.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="541">#SpiceUsbDevice boxed object corresponding to the added device</doc>
            <type name="UsbDevice"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="device-error" when="first">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="598">The #SpiceUsbDeviceManager::device-error signal is emitted whenever an
error happens which causes a device to no longer be available to the
guest.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="601">#SpiceUsbDevice boxed object corresponding to the device which has an error</doc>
            <type name="UsbDevice"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="602">#GError describing the error</doc>
            <type name="GLib.Error"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="device-removed" when="first">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.c"
             line="557">The #SpiceUsbDeviceManager::device-removed signal is emitted whenever
an USB device has been removed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/usb-device-manager.c"
                 line="560">#SpiceUsbDevice boxed object corresponding to the removed device</doc>
            <type name="UsbDevice"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="UsbDeviceManagerClass"
            c:type="SpiceUsbDeviceManagerClass"
            glib:is-gtype-struct-for="UsbDeviceManager">
      <doc xml:space="preserve"
           filename="src/usb-device-manager.h"
           line="66">Class structure for #SpiceUsbDeviceManager.</doc>
      <source-position filename="src/usb-device-manager.h" line="97"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.h"
             line="68">Parent class.</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="device_added">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.h"
             line="69">Signal class handler for the #SpiceUsbDeviceManager::device-added signal.</doc>
        <callback name="device_added">
          <source-position filename="src/usb-device-manager.h" line="81"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="manager" transfer-ownership="none">
              <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
            </parameter>
            <parameter name="device" transfer-ownership="none">
              <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="device_removed">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.h"
             line="70">Signal class handler for the #SpiceUsbDeviceManager::device-removed signal.</doc>
        <callback name="device_removed">
          <source-position filename="src/usb-device-manager.h" line="83"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="manager" transfer-ownership="none">
              <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
            </parameter>
            <parameter name="device" transfer-ownership="none">
              <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="auto_connect_failed">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.h"
             line="71">Signal class handler for the #SpiceUsbDeviceManager::auto-connect-failed signal.</doc>
        <callback name="auto_connect_failed">
          <source-position filename="src/usb-device-manager.h" line="85"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="manager" transfer-ownership="none">
              <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
            </parameter>
            <parameter name="device" transfer-ownership="none">
              <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
            </parameter>
            <parameter name="error" transfer-ownership="none">
              <type name="GLib.Error" c:type="GError*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="device_error">
        <doc xml:space="preserve"
             filename="src/usb-device-manager.h"
             line="72">Signal class handler for the #SpiceUsbDeviceManager::device_error signal.</doc>
        <callback name="device_error">
          <source-position filename="src/usb-device-manager.h" line="88"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="manager" transfer-ownership="none">
              <type name="UsbDeviceManager" c:type="SpiceUsbDeviceManager*"/>
            </parameter>
            <parameter name="device" transfer-ownership="none">
              <type name="UsbDevice" c:type="SpiceUsbDevice*"/>
            </parameter>
            <parameter name="error" transfer-ownership="none">
              <type name="GLib.Error" c:type="GError*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_spice_reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="10">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="UsbDeviceManagerPrivate"
            c:type="SpiceUsbDeviceManagerPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/usb-device-manager.h" line="43"/>
    </record>
    <class name="UsbredirChannel"
           c:symbol-prefix="usbredir_channel"
           c:type="SpiceUsbredirChannel"
           parent="Channel"
           glib:type-name="SpiceUsbredirChannel"
           glib:get-type="spice_usbredir_channel_get_type"
           glib:type-struct="UsbredirChannelClass">
      <doc xml:space="preserve"
           filename="src/channel-usbredir.h"
           line="42">The #SpiceUsbredirChannel struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/channel-usbredir.h" line="68"/>
      <field name="parent">
        <type name="Channel" c:type="SpiceChannel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="UsbredirChannelPrivate"
              c:type="SpiceUsbredirChannelPrivate*"/>
      </field>
    </class>
    <record name="UsbredirChannelClass"
            c:type="SpiceUsbredirChannelClass"
            glib:is-gtype-struct-for="UsbredirChannel">
      <doc xml:space="preserve"
           filename="src/channel-usbredir.h"
           line="55">Class structure for #SpiceUsbredirChannel.</doc>
      <source-position filename="src/channel-usbredir.h" line="68"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/channel-usbredir.h"
             line="57">Parent class.</doc>
        <type name="ChannelClass" c:type="SpiceChannelClass"/>
      </field>
    </record>
    <record name="UsbredirChannelPrivate"
            c:type="SpiceUsbredirChannelPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/channel-usbredir.h" line="40"/>
    </record>
    <glib:boxed glib:name="VReader"
                c:symbol-prefix="smartcard_reader"
                glib:type-name="VReader"
                glib:get-type="spice_smartcard_reader_get_type">
    </glib:boxed>
    <function-macro name="WEBDAV_CHANNEL"
                    c:identifier="SPICE_WEBDAV_CHANNEL"
                    introspectable="0">
      <source-position filename="src/channel-webdav.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="WEBDAV_CHANNEL_CLASS"
                    c:identifier="SPICE_WEBDAV_CHANNEL_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-webdav.h" line="32"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="WEBDAV_CHANNEL_GET_CLASS"
                    c:identifier="SPICE_WEBDAV_CHANNEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/channel-webdav.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="WEBDAV_CLIPBOARD_FOLDER_PATH"
              value="/.spice-clipboard"
              c:type="SPICE_WEBDAV_CLIPBOARD_FOLDER_PATH">
      <source-position filename="src/spice-session.h" line="39"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="WebdavChannel"
           c:symbol-prefix="webdav_channel"
           c:type="SpiceWebdavChannel"
           parent="PortChannel"
           glib:type-name="SpiceWebdavChannel"
           glib:get-type="spice_webdav_channel_get_type"
           glib:type-struct="WebdavChannelClass">
      <doc xml:space="preserve"
           filename="src/channel-webdav.h"
           line="41">The #SpiceWebdavChannel struct is opaque and should not be accessed directly.</doc>
      <source-position filename="src/channel-webdav.h" line="65"/>
      <field name="parent">
        <type name="PortChannel" c:type="SpicePortChannel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="WebdavChannelPrivate" c:type="SpiceWebdavChannelPrivate*"/>
      </field>
    </class>
    <record name="WebdavChannelClass"
            c:type="SpiceWebdavChannelClass"
            glib:is-gtype-struct-for="WebdavChannel">
      <doc xml:space="preserve"
           filename="src/channel-webdav.h"
           line="54">Class structure for #SpiceWebdavChannel.</doc>
      <source-position filename="src/channel-webdav.h" line="65"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="src/channel-webdav.h"
             line="56">Parent class.</doc>
        <type name="PortChannelClass" c:type="SpicePortChannelClass"/>
      </field>
    </record>
    <record name="WebdavChannelPrivate"
            c:type="SpiceWebdavChannelPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="src/channel-webdav.h" line="39"/>
    </record>
    <docsection name="channel-cursor">
      <doc xml:space="preserve"
           filename="src/channel-cursor.c"
           line="26">The Spice protocol defines a set of messages for controlling cursor
shape and position on the remote display area. The cursor changes
that should be reflected on the display are notified by
signals. See for example #SpiceCursorChannel::cursor-set and
#SpiceCursorChannel::cursor-move signals and the #SpiceCursorChannel:cursor
property.</doc>
    </docsection>
    <docsection name="channel-display">
      <doc xml:space="preserve"
           filename="src/channel-display.c"
           line="33">A class that handles the rendering of the remote display and inform
of its updates.

The creation of the main graphic buffer is signaled with
#SpiceDisplayChannel::display-primary-create.

The update of regions is notified by
#SpiceDisplayChannel::display-invalidate signals.</doc>
    </docsection>
    <docsection name="channel-inputs">
      <doc xml:space="preserve"
           filename="src/channel-inputs.c"
           line="23">Spice supports sending keyboard key events and keyboard leds
synchronization. The key events are sent using
spice_inputs_key_press() and spice_inputs_key_release() using
a modified variant of PC XT scancodes.

Guest keyboard leds state can be manipulated with
spice_inputs_set_key_locks(). When key lock change, a notification
is emitted with #SpiceInputsChannel::inputs-modifiers signal.</doc>
    </docsection>
    <docsection name="channel-main">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="34">The main channel is the Spice session control channel. It handles
communication initialization (channels list), migrations, mouse
modes, multimedia time, and agent communication.</doc>
    </docsection>
    <docsection name="channel-playback">
      <doc xml:space="preserve"
           filename="src/channel-playback.c"
           line="29">#SpicePlaybackChannel class handles an audio playback stream. The
audio data is received via #SpicePlaybackChannel::playback-data
signal, and is controlled by the guest with
#SpicePlaybackChannel::playback-stop and
#SpicePlaybackChannel::playback-start signal events.

Note: You may be interested to let the #SpiceAudio class play and
record audio channels for your application.</doc>
    </docsection>
    <docsection name="channel-port">
      <doc xml:space="preserve"
           filename="src/channel-port.c"
           line="24">A Spice port channel carry arbitrary data between the Spice client
and the Spice server. It may be used to provide additional
services on top of a Spice connection. For example, a channel can
be associated with the qemu monitor for the client to interact
with it, just like any qemu chardev. Or it may be used with
various protocols, such as the Spice Controller.

A port kind is identified simply by a fqdn, such as
org.qemu.monitor, org.spice.spicy.test or org.ovirt.controller...

Once connected and initialized, the client may read the name of the
port via SpicePortChannel:port-name.

When the other end of the port is ready,
SpicePortChannel:port-opened is set to %TRUE and you can start
receiving data via the signal SpicePortChannel::port-data, or
sending data via spice_port_write_async().</doc>
    </docsection>
    <docsection name="channel-record">
      <doc xml:space="preserve"
           filename="src/channel-record.c"
           line="28">#SpiceRecordChannel class handles an audio recording stream. The
audio stream should start when #SpiceRecordChannel::record-start is
emitted and should be stopped when #SpiceRecordChannel::record-stop
is received.

The audio is sent to the guest by calling spice_record_send_data()
with the recorded PCM data.

Note: You may be interested to let the #SpiceAudio class play and
record audio channels for your application.</doc>
    </docsection>
    <docsection name="channel-smartcard">
      <doc xml:space="preserve"
           filename="src/channel-smartcard.c"
           line="27">The Spice protocol defines a set of messages to forward smartcard
information from the Spice client to the VM. This channel handles
these messages. While it's mainly focus on smartcard readers and
smartcards, it's also possible to use it with a software smartcard
(ie a set of 3 certificates from the client machine).
This class doesn't provide useful methods, see #SpiceSession properties
for a way to enable/disable this channel, and #SpiceSmartcardManager
if you want to detect smartcard reader hotplug/unplug, and smartcard
insertion/removal.</doc>
    </docsection>
    <docsection name="channel-usbredir">
      <doc xml:space="preserve"
           filename="src/channel-usbredir.c"
           line="41">The Spice protocol defines a set of messages to redirect USB devices
from the Spice client to the VM. This channel handles these messages.</doc>
    </docsection>
    <docsection name="channel-webdav">
      <doc xml:space="preserve"
           filename="src/channel-webdav.c"
           line="27">The "webdav" channel exports a directory to the guest for file
manipulation (read/write/copy etc). The underlying protocol is
implemented using WebDAV (RFC 4918).

By default, the shared directory is the one associated with GLib
%G_USER_DIRECTORY_PUBLIC_SHARE. You can specify a different
directory with #SpiceSession #SpiceSession:shared-dir property.</doc>
    </docsection>
    <function name="client_error_quark"
              c:identifier="spice_client_error_quark">
      <doc xml:space="preserve"
           filename="src/spice-client.c"
           line="23">Gets a #GQuark representing the string "spice-client-error-quark"</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/spice-client.c"
             line="28">the #GQuark representing the string.</doc>
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="display_get_gl_scanout"
              c:identifier="spice_display_get_gl_scanout"
              version="0.31"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-display.c"
           line="742">Retrieves the GL scanout if available</doc>
      <doc-deprecated xml:space="preserve">use spice_display_channel_get_gl_scanout() instead.</doc-deprecated>
      <source-position filename="src/channel-display.h" line="167"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/channel-display.c"
             line="748">the current GL scanout, or %NULL if none or not valid</doc>
        <type name="GlScanout" c:type="const SpiceGlScanout*"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-display.c"
               line="744">a #SpiceDisplayChannel</doc>
          <type name="DisplayChannel" c:type="SpiceDisplayChannel*"/>
        </parameter>
      </parameters>
    </function>
    <function name="display_gl_draw_done"
              c:identifier="spice_display_gl_draw_done"
              version="0.31"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-display.c"
           line="2112">After a SpiceDisplayChannel::gl-draw is emitted, the client should
draw the current display with the current GL scanout, and must
release the GL resource with a call to spice_display_gl_draw_done()
(failing to do so for each gl-draw may result in a frozen display).</doc>
      <doc-deprecated xml:space="preserve">use spice_display_channel_gl_draw_done() instead.</doc-deprecated>
      <source-position filename="src/channel-display.h" line="172"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-display.c"
               line="2114">a #SpiceDisplayChannel</doc>
          <type name="DisplayChannel" c:type="SpiceDisplayChannel*"/>
        </parameter>
      </parameters>
    </function>
    <function name="g_signal_connect_object"
              c:identifier="spice_g_signal_connect_object"
              introspectable="0">
      <doc xml:space="preserve"
           filename="src/spice-util.c"
           line="214">Similar to g_signal_connect_object() but will delete connection
when any of the objects is destroyed.</doc>
      <source-position filename="src/spice-util.h" line="27"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/spice-util.c"
             line="225">the handler id.</doc>
        <type name="gulong" c:type="gulong"/>
      </return-value>
      <parameters>
        <parameter name="instance"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/spice-util.c"
               line="216">the instance to connect to.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="detailed_signal" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-util.c"
               line="217">a string of the form "signal-name::detail".</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="c_handler" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-util.c"
               line="218">the #GCallback to connect.</doc>
          <type name="GObject.Callback" c:type="GCallback"/>
        </parameter>
        <parameter name="gobject"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/spice-util.c"
               line="219">the object to pass as data to @c_handler.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="connect_flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-util.c"
               line="220">a combination of #GConnectFlags.</doc>
          <type name="GObject.ConnectFlags" c:type="GConnectFlags"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_option_group" c:identifier="spice_get_option_group">
      <doc xml:space="preserve"
           filename="src/spice-option.c"
           line="146">Gets commandline options.

Bindings for other languages are available since 0.32</doc>
      <source-position filename="src/spice-option.h" line="29"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="src/spice-option.c"
             line="153">a #GOptionGroup for the commandline
arguments specific to Spice.  You have to call
spice_set_session_option() after to set the options on a
#SpiceSession.</doc>
        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
      </return-value>
    </function>
    <function name="inputs_button_press"
              c:identifier="spice_inputs_button_press"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-inputs.c"
           line="378">Press a mouse button.</doc>
      <doc-deprecated xml:space="preserve">use spice_inputs_channel_button_press() instead.</doc-deprecated>
      <source-position filename="src/channel-inputs.h" line="103"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="380">a #SpiceInputsChannel</doc>
          <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
        </parameter>
        <parameter name="button" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="381">a SPICE_MOUSE_BUTTON</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="button_state" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="382">SPICE_MOUSE_BUTTON_MASK flags</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="inputs_button_release"
              c:identifier="spice_inputs_button_release"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-inputs.c"
           line="449">Release a button.</doc>
      <doc-deprecated xml:space="preserve">use spice_inputs_channel_button_release() instead.</doc-deprecated>
      <source-position filename="src/channel-inputs.h" line="105"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="451">a #SpiceInputsChannel</doc>
          <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
        </parameter>
        <parameter name="button" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="452">a SPICE_MOUSE_BUTTON</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="button_state" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="453">SPICE_MOUSE_BUTTON_MASK flags</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="inputs_key_press"
              c:identifier="spice_inputs_key_press"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-inputs.c"
           line="520">Press a key.</doc>
      <doc-deprecated xml:space="preserve">use spice_inputs_channel_key_press() instead.</doc-deprecated>
      <source-position filename="src/channel-inputs.h" line="107"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="522">a #SpiceInputsChannel</doc>
          <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
        </parameter>
        <parameter name="scancode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="523">a PC XT (set 1) key scancode.  For scancodes with an \%0xe0
           prefix, drop the prefix and OR the scancode with \%0x100.</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="inputs_key_press_and_release"
              c:identifier="spice_inputs_key_press_and_release"
              version="0.13"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-inputs.c"
           line="606">Press and release a key event atomically (in the same message).</doc>
      <source-position filename="src/channel-inputs.h" line="113"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="608">a #SpiceInputsChannel</doc>
          <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
        </parameter>
        <parameter name="scancode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="609">a PC XT (set 1) key scancode.  For scancodes with an \%0xe0
           prefix, drop the prefix and OR the scancode with \%0x100.</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="inputs_key_release"
              c:identifier="spice_inputs_key_release"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-inputs.c"
           line="563">Release a key.</doc>
      <doc-deprecated xml:space="preserve">use spice_inputs_channel_key_release() instead.</doc-deprecated>
      <source-position filename="src/channel-inputs.h" line="109"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="565">a #SpiceInputsChannel</doc>
          <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
        </parameter>
        <parameter name="scancode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="566">a PC XT (set 1) key scancode.  For scancodes with an \%0xe0
           prefix, drop the prefix and OR the scancode with \%0x100.</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="inputs_motion"
              c:identifier="spice_inputs_motion"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-inputs.c"
           line="274">Change mouse position (used in SPICE_MOUSE_MODE_SERVER).</doc>
      <doc-deprecated xml:space="preserve">use spice_inputs_channel_motion() instead.</doc-deprecated>
      <source-position filename="src/channel-inputs.h" line="98"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="276">a #SpiceInputsChannel</doc>
          <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
        </parameter>
        <parameter name="dx" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="277">delta X mouse coordinates</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="dy" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="278">delta Y mouse coordinates</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="button_state" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="279">SPICE_MOUSE_BUTTON_MASK flags</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="inputs_position"
              c:identifier="spice_inputs_position"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-inputs.c"
           line="325">Change mouse position (used in SPICE_MOUSE_MODE_CLIENT).</doc>
      <doc-deprecated xml:space="preserve">use spice_inputs_channel_position() instead.</doc-deprecated>
      <source-position filename="src/channel-inputs.h" line="100"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="327">a #SpiceInputsChannel</doc>
          <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
        </parameter>
        <parameter name="x" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="328">X mouse coordinates</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="y" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="329">Y mouse coordinates</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="display" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="330">display channel id</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="button_state" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="331">SPICE_MOUSE_BUTTON_MASK flags</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="inputs_set_key_locks"
              c:identifier="spice_inputs_set_key_locks"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-inputs.c"
           line="696">Set the keyboard locks on the guest (Caps, Num, Scroll..)</doc>
      <doc-deprecated xml:space="preserve">use spice_inputs_channel_set_key_locks() instead.</doc-deprecated>
      <source-position filename="src/channel-inputs.h" line="111"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="698">a #SpiceInputsChannel</doc>
          <type name="InputsChannel" c:type="SpiceInputsChannel*"/>
        </parameter>
        <parameter name="locks" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-inputs.c"
               line="699">#SpiceInputsLock modifiers flags</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_agent_test_capability"
              c:identifier="spice_main_agent_test_capability"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="2702">Test capability of a remote agent.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_agent_test_capability() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="140"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="2709">%TRUE if @cap (channel kind capability) is available.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2704">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="cap" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2705">an agent capability identifier</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_clipboard_grab"
              c:identifier="spice_main_clipboard_grab"
              deprecated="1"
              deprecated-version="0.6">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="2880">Grab the guest clipboard, with #VD_AGENT_CLIPBOARD @types.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_clipboard_selection_grab() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="108"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2882">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="types" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2883">an array of #VD_AGENT_CLIPBOARD types available in the clipboard</doc>
          <array length="2" zero-terminated="0" c:type="guint32*">
            <type name="guint32" c:type="guint32"/>
          </array>
        </parameter>
        <parameter name="ntypes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2884">the number of @types</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_clipboard_notify"
              c:identifier="spice_main_clipboard_notify"
              deprecated="1"
              deprecated-version="0.6">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="2989">Send the clipboard data to the guest.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_clipboard_selection_notify() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="112"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2991">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2992">a #VD_AGENT_CLIPBOARD type</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2993">clipboard data</doc>
          <array length="3" zero-terminated="0" c:type="const guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2994">data length in bytes</doc>
          <type name="gsize" c:type="size_t"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_clipboard_release"
              c:identifier="spice_main_clipboard_release"
              deprecated="1"
              deprecated-version="0.6">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="2935">Release the clipboard (for example, when the client loses the
clipboard grab): Inform the guest no clipboard data is available.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_clipboard_selection_release() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="110"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2937">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_clipboard_request"
              c:identifier="spice_main_clipboard_request"
              deprecated="1"
              deprecated-version="0.6">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="3048">Request clipboard data of @type from the guest. The reply is sent
through the #SpiceMainChannel::main-clipboard signal.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_clipboard_selection_request() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="114"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3050">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3051">a #VD_AGENT_CLIPBOARD type</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_clipboard_selection_grab"
              c:identifier="spice_main_clipboard_selection_grab"
              version="0.6"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="2896">Grab the guest clipboard, with #VD_AGENT_CLIPBOARD @types.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_clipboard_selection_grab() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="129"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2898">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="selection" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2899">one of the clipboard #VD_AGENT_CLIPBOARD_SELECTION_*</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="types" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2900">an array of #VD_AGENT_CLIPBOARD types available in the clipboard</doc>
          <array length="3" zero-terminated="0" c:type="guint32*">
            <type name="guint32" c:type="guint32"/>
          </array>
        </parameter>
        <parameter name="ntypes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2901">the number of @types</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_clipboard_selection_notify"
              c:identifier="spice_main_clipboard_selection_notify"
              version="0.6"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="3007">Send the clipboard data to the guest.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_clipboard_selection_notify() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="134"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3009">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="selection" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3010">one of the clipboard #VD_AGENT_CLIPBOARD_SELECTION_*</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3011">a #VD_AGENT_CLIPBOARD type</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3012">clipboard data</doc>
          <array length="4" zero-terminated="0" c:type="const guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3013">data length in bytes</doc>
          <type name="gsize" c:type="size_t"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_clipboard_selection_release"
              c:identifier="spice_main_clipboard_selection_release"
              version="0.6"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="2949">Release the clipboard (for example, when the client loses the
clipboard grab): Inform the guest no clipboard data is available.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_clipboard_selection_release() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="132"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2951">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="selection" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2952">one of the clipboard #VD_AGENT_CLIPBOARD_SELECTION_*</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_clipboard_selection_request"
              c:identifier="spice_main_clipboard_selection_request"
              version="0.6"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="3064">Request clipboard data of @type from the guest. The reply is sent
through the #SpiceMainChannel::main-clipboard-selection signal.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_clipboard_selection_request() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="137"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3066">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="selection" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3067">one of the clipboard #VD_AGENT_CLIPBOARD_SELECTION_*</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3068">a #VD_AGENT_CLIPBOARD type</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_file_copy_async"
              c:identifier="spice_main_file_copy_async"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="3395">See: spice_main_channel_file_copy_async()</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_file_copy_async() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="142"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3397">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="sources" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3398">a %NULL-terminated array of #GFile objects to be transferred</doc>
          <array c:type="GFile**">
            <type name="Gio.File" c:type="GFile*"/>
          </array>
        </parameter>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3399">set of #GFileCopyFlags</doc>
          <type name="Gio.FileCopyFlags" c:type="GFileCopyFlags"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3400">optional #GCancellable object, %NULL to ignore</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
        <parameter name="progress_callback"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="call"
                   closure="5">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3401">function to callback with
    progress information, or %NULL if progress information is not needed</doc>
          <type name="Gio.FileProgressCallback"
                c:type="GFileProgressCallback"/>
        </parameter>
        <parameter name="progress_callback_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3403">user data to pass to @progress_callback</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="callback"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="async"
                   closure="7">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3404">a #GAsyncReadyCallback to call when the request is satisfied</doc>
          <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3405">the data to pass to callback function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_file_copy_finish"
              c:identifier="spice_main_file_copy_finish"
              throws="1">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="3526">Finishes copying the file started with
spice_main_file_copy_async().</doc>
      <source-position filename="src/channel-main.h" line="147"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="3535">a %TRUE on success, %FALSE on error.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3528">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3529">a #GAsyncResult.</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_request_mouse_mode"
              c:identifier="spice_main_request_mouse_mode"
              version="0.32"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="1631">Request a mouse mode to the server. The server may not be able to
change the mouse mode, but spice-gtk will try to request it
when possible.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_request_mouse_mode() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="150"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="1633">a %SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="1634">a SPICE_MOUSE_MODE</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_send_monitor_config"
              c:identifier="spice_main_send_monitor_config"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="1089">Send monitors configuration previously set with
spice_main_set_display() and spice_main_set_display_enabled()</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_send_monitor_config() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="127"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/channel-main.c"
             line="1096">%TRUE on success.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="1091">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_set_display"
              c:identifier="spice_main_set_display"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="2860">Notify the guest of screen resolution change. The notification is
sent 1 second later, if no further changes happen.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_update_display() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="117"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2862">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2863">display ID</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="x" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2864">x position</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="y" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2865">y position</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2866">display width</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2867">display height</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_set_display_enabled"
              c:identifier="spice_main_set_display_enabled"
              version="0.6"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="3171">When sending monitor configuration to agent guest, don't set
display @id, which the agent translates to disabling the display
id. Note: this will take effect next time the monitor
configuration is sent.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_update_display_enabled() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="122"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3173">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3174">display ID (if -1: set all displays)</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="enabled" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3175">wether display @id is enabled</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_update_display"
              c:identifier="spice_main_update_display"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="2736">Update the display @id resolution.

If @update is %TRUE, the remote configuration will be updated too
after 1 second without further changes. You can send when you want
without delay the new configuration to the remote with
spice_main_send_monitor_config()</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_update_display() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="119"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2738">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2739">display ID</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="x" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2740">x position</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="y" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2741">y position</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="width" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2742">display width</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="height" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2743">display height</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="update" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="2744">if %TRUE, update guest resolution after 1sec.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="main_update_display_enabled"
              c:identifier="spice_main_update_display_enabled"
              version="0.30"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-main.c"
           line="3102">When sending monitor configuration to agent guest, if @enabled is %FALSE,
don't set display @id, which the agent translates to disabling the display
id. If @enabled is %TRUE, the monitor will be included in the next monitor
update. Note: this will take effect next time the monitor configuration is
sent.

If @update is %FALSE, no server update will be triggered by this call, but
the value will be saved and used in the next configuration update.</doc>
      <doc-deprecated xml:space="preserve">use spice_main_channel_update_display_enabled() instead.</doc-deprecated>
      <source-position filename="src/channel-main.h" line="124"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3104">a #SpiceMainChannel</doc>
          <type name="MainChannel" c:type="SpiceMainChannel*"/>
        </parameter>
        <parameter name="id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3105">display ID (if -1: set all displays)</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="enabled" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3106">wether display @id is enabled</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="update" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-main.c"
               line="3107">if %TRUE, update guest display state after 1sec.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <callback name="msg_handler" c:type="spice_msg_handler">
      <source-position filename="src/spice-channel.h" line="127"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <type name="Channel" c:type="SpiceChannel*"/>
        </parameter>
        <parameter name="in" transfer-ownership="none">
          <type name="MsgIn" c:type="SpiceMsgIn*"/>
        </parameter>
      </parameters>
    </callback>
    <function name="port_event"
              c:identifier="spice_port_event"
              version="0.15"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-port.c"
           line="365">Send an event to the port.

Note: The values SPICE_PORT_EVENT_CLOSED and
SPICE_PORT_EVENT_OPENED are managed by the channel connection
state.</doc>
      <doc-deprecated xml:space="preserve">use spice_port_channel_event() instead.</doc-deprecated>
      <source-position filename="src/channel-port.h" line="89"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="port" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-port.c"
               line="367">a #SpicePortChannel</doc>
          <type name="PortChannel" c:type="SpicePortChannel*"/>
        </parameter>
        <parameter name="event" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-port.c"
               line="368">a SPICE_PORT_EVENT value</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
      </parameters>
    </function>
    <function name="port_write_async"
              c:identifier="spice_port_write_async"
              version="0.15"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-port.c"
           line="258">Request an asynchronous write of count bytes from @buffer into the
@port. When the operation is finished @callback will be called. You
can then call spice_port_write_finish() to get the result of
the operation.</doc>
      <doc-deprecated xml:space="preserve">use spice_port_channel_write_async() instead.</doc-deprecated>
      <source-position filename="src/channel-port.h" line="80"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="port" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-port.c"
               line="260">A #SpicePortChannel</doc>
          <type name="PortChannel" c:type="SpicePortChannel*"/>
        </parameter>
        <parameter name="buffer" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-port.c"
               line="261">the buffer
containing the data to write</doc>
          <array length="2" zero-terminated="0" c:type="void*">
            <type name="guint8"/>
          </array>
        </parameter>
        <parameter name="count" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-port.c"
               line="263">the number of bytes to write</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/channel-port.c"
               line="264">optional GCancellable object, NULL to ignore</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
        <parameter name="callback"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="async"
                   closure="5">
          <doc xml:space="preserve"
               filename="src/channel-port.c"
               line="265">callback to call when the request is satisfied</doc>
          <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/channel-port.c"
               line="266">the data to pass to callback function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="port_write_finish"
              c:identifier="spice_port_write_finish"
              version="0.15"
              deprecated="1"
              deprecated-version="0.35"
              throws="1">
      <doc xml:space="preserve"
           filename="src/channel-port.c"
           line="326">Finishes a port write operation.</doc>
      <doc-deprecated xml:space="preserve">use spice_port_channel_write_finish() instead.</doc-deprecated>
      <source-position filename="src/channel-port.h" line="86"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/channel-port.c"
             line="335">a #gssize containing the number of bytes written to the stream.</doc>
        <type name="gssize" c:type="gssize"/>
      </return-value>
      <parameters>
        <parameter name="port" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-port.c"
               line="328">a #SpicePortChannel</doc>
          <type name="PortChannel" c:type="SpicePortChannel*"/>
        </parameter>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-port.c"
               line="329">a #GAsyncResult</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
      </parameters>
    </function>
    <docsection name="qmp-port">
      <doc xml:space="preserve"
           filename="src/qmp-port.c"
           line="24">A helper to handle QMP messages over a %SpicePortChannel.</doc>
    </docsection>
    <function name="record_send_data"
              c:identifier="spice_record_send_data"
              deprecated="1"
              deprecated-version="0.35">
      <doc xml:space="preserve"
           filename="src/channel-record.c"
           line="294">Send recorded PCM data to the guest.</doc>
      <doc-deprecated xml:space="preserve">use spice_record_channel_send_data() instead.</doc-deprecated>
      <source-position filename="src/channel-record.h" line="80"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-record.c"
               line="296">a #SpiceRecordChannel</doc>
          <type name="RecordChannel" c:type="SpiceRecordChannel*"/>
        </parameter>
        <parameter name="data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/channel-record.c"
               line="297">PCM data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-record.c"
               line="298">size of @data</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="time" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/channel-record.c"
               line="299">stream timestamp</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
      </parameters>
    </function>
    <function name="set_session_option"
              c:identifier="spice_set_session_option">
      <doc xml:space="preserve"
           filename="src/spice-option.c"
           line="229">Set various properties on @session, according to the commandline
arguments given to spice_get_option_group() option group.</doc>
      <source-position filename="src/spice-option.h" line="30"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="session" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-option.c"
               line="231">a #SpiceSession to set option upon</doc>
          <type name="Session" c:type="SpiceSession*"/>
        </parameter>
      </parameters>
    </function>
    <docsection name="smartcard-manager">
      <doc xml:space="preserve"
           filename="src/smartcard-manager.c"
           line="31">#SpiceSmartcardManager monitors smartcard reader plugging/unplugging,
and smartcard insertions/removals. It also provides methods to handle
software smartcards (to emulate a smartcard reader/smartcard on the
guest using 3 certificates available to the client).</doc>
    </docsection>
    <docsection name="spice-audio">
      <doc xml:space="preserve"
           filename="src/spice-audio.c"
           line="21">A class that handles the playback and record channels for your
application, and connect them to the default sound system.</doc>
    </docsection>
    <docsection name="spice-channel">
      <doc xml:space="preserve"
           filename="src/spice-channel.c"
           line="68">#SpiceChannel is the base class for the different kind of Spice
channel connections, such as #SpiceMainChannel, or
#SpiceInputsChannel.</doc>
    </docsection>
    <docsection name="spice-session">
      <doc xml:space="preserve"
           filename="src/spice-session.c"
           line="132">The #SpiceSession class handles all the #SpiceChannel connections.
It's also the class that contains connections informations, such as
#SpiceSession:host and #SpiceSession:port.

You can simply set the property #SpiceSession:uri to something like
"spice://127.0.0.1?port=5930" to configure your connection details.

You may want to connect to #SpiceSession::channel-new signal, to be
informed of the availability of channels and to interact with
them.

For example, when the #SpiceInputsChannel is available and get the
event #SPICE_CHANNEL_OPENED, you can send key events with
spice_inputs_key_press(). When the #SpiceMainChannel is available,
you can start sharing the clipboard...  .


Once #SpiceSession properties set, you can call
spice_session_connect() to start connecting and communicating with
a Spice server.</doc>
    </docsection>
    <docsection name="spice-util">
      <doc xml:space="preserve"
           filename="src/spice-util.c"
           line="29">Various functions for debugging and informational purposes.</doc>
    </docsection>
    <docsection name="spice-version">
      <doc xml:space="preserve"
           filename="src/spice-version.h"
           line="24">Spice-Gtk provides macros to check the version of the library
at compile-time</doc>
    </docsection>
    <docsection name="usb-device-manager">
      <doc xml:space="preserve"
           filename="src/usb-device-manager.c"
           line="50">#SpiceUsbDeviceManager monitors USB redirection channels and USB
devices plugging/unplugging. If #SpiceUsbDeviceManager:auto-connect
is set to %TRUE, it will automatically connect newly plugged USB
devices to available channels.

There should always be a 1:1 relation between #SpiceUsbDeviceManager objects
and #SpiceSession objects. Therefor there is no
spice_usb_device_manager_new, instead there is
spice_usb_device_manager_get() which ensures this 1:1 relation.</doc>
    </docsection>
    <function name="util_get_debug" c:identifier="spice_util_get_debug">
      <source-position filename="src/spice-util.h" line="25"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="util_get_version_string"
              c:identifier="spice_util_get_version_string">
      <doc xml:space="preserve"
           filename="src/spice-util.c"
           line="96">Gets the version string</doc>
      <source-position filename="src/spice-util.h" line="26"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/spice-util.c"
             line="101">Spice-GTK version as a const string.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
    </function>
    <function name="util_set_debug" c:identifier="spice_util_set_debug">
      <doc xml:space="preserve"
           filename="src/spice-util.c"
           line="56">Enable or disable Spice-GTK debugging messages.</doc>
      <source-position filename="src/spice-util.h" line="24"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="enabled" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-util.c"
               line="58">%TRUE or %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="uuid_to_string"
              c:identifier="spice_uuid_to_string"
              version="0.22">
      <doc xml:space="preserve"
           filename="src/spice-util.c"
           line="123">Creates a string representation of @uuid, of the form
"06e023d5-86d8-420e-8103-383e4566087a"</doc>
      <source-position filename="src/spice-util.h" line="32"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="src/spice-util.c"
             line="130">A string that should be freed with g_free().</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/spice-util.c"
               line="125">UUID byte array</doc>
          <array zero-terminated="0" c:type="const guint8*" fixed-size="16">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
