Merge tag 'v9.0.0-rc3'
[qemu/ar7.git] / ui / dbus-display1.xml
blobce35d64eea18ea2783b70216246d5c457477a18f
1 <?xml version="1.0" encoding="utf-8"?>
2 <node>
3   <!--
4       org.qemu.Display1.VM:
6       This interface is implemented on ``/org/qemu/Display1/VM``.
7   -->
8   <interface name="org.qemu.Display1.VM">
9     <!--
10         Name:
12         The name of the VM.
13     -->
14     <property name="Name" type="s" access="read"/>
16     <!--
17         UUID:
19         The UUID of the VM.
20     -->
21     <property name="UUID" type="s" access="read"/>
23     <!--
24         ConsoleIDs:
26         The list of consoles available on ``/org/qemu/Display1/Console_$id``.
27     -->
28     <property name="ConsoleIDs" type="au" access="read"/>
30     <!--
31         Interfaces:
33         This property lists extra interfaces provided by the
34         /org/qemu/Display1/VM object, and can be used to detect
35         the capabilities with which they are communicating.
37         Unlike the standard D-Bus Introspectable interface, querying this
38         property does not require parsing XML.
40         (earlier version of the display interface do not provide this property)
41     -->
42     <property name="Interfaces" type="as" access="read"/>
43   </interface>
45   <!--
46       org.qemu.Display1.Console:
48       This interface is implemented on ``/org/qemu/Display1/Console_$id``. You
49       may discover available consoles through introspection or with the
50       :dbus:prop:`org.qemu.Display1.VM.ConsoleIDs` property.
52       A console is attached to a video device head. It may be "Graphic" or
53       "Text" (see :dbus:prop:`Type` and other properties).
55       Interactions with a console may be done with
56       :dbus:iface:`org.qemu.Display1.Keyboard`,
57       :dbus:iface:`org.qemu.Display1.Mouse` and
58       :dbus:iface:`org.qemu.Display1.MultiTouch` interfaces when available.
59   -->
60   <interface name="org.qemu.Display1.Console">
61     <!--
62         RegisterListener:
63         @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
65         Register a console listener, which will receive display updates, until
66         it is disconnected.
68         Multiple listeners may be registered simultaneously.
70         The listener is expected to implement the
71         :dbus:iface:`org.qemu.Display1.Listener` interface.
72     -->
73     <method name="RegisterListener">
74       <?if $(env.HOST_OS) == windows?>
75       <arg type="ay" name="listener" direction="in">
76         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
77       </arg>
78       <?else?>
79       <arg type="h" name="listener" direction="in"/>
80       <?endif?>
81     </method>
83     <!--
84         SetUIInfo:
85         @width_mm: the physical display width in millimeters.
86         @height_mm: the physical display height in millimeters.
87         @xoff: horizontal offset, in pixels.
88         @yoff: vertical offset, in pixels.
89         @width: console width, in pixels.
90         @height: console height, in pixels.
92         Modify the dimensions and display settings.
93     -->
94     <method name="SetUIInfo">
95       <arg name="width_mm" type="q" direction="in"/>
96       <arg name="height_mm" type="q" direction="in"/>
97       <arg name="xoff" type="i" direction="in"/>
98       <arg name="yoff" type="i" direction="in"/>
99       <arg name="width" type="u" direction="in"/>
100       <arg name="height" type="u" direction="in"/>
101     </method>
103     <!--
104         Label:
106         A user-friendly name for the console (for ex: "VGA").
107     -->
108     <property name="Label" type="s" access="read"/>
110     <!--
111         Head:
113         Graphical device head number.
114     -->
115     <property name="Head" type="u" access="read"/>
117     <!--
118         Type:
120         Console type ("Graphic" or "Text").
121     -->
122     <property name="Type" type="s" access="read"/>
124     <!--
125         Width:
127         Console width, in pixels.
128     -->
129     <property name="Width" type="u" access="read"/>
131     <!--
132         Height:
134         Console height, in pixels.
135     -->
136     <property name="Height" type="u" access="read"/>
138     <!--
139         DeviceAddress:
141         The device address (ex: "pci/0000/02.0").
142     -->
143     <property name="DeviceAddress" type="s" access="read"/>
145     <!--
146         Interfaces:
148         This property lists extra interfaces provided by the
149         ``/org/qemu/Display1/Console_$id`` object, and can be used to detect the
150         capabilities with which they are communicating.
152         Unlike the standard D-Bus Introspectable interface, querying this
153         property does not require parsing XML.
155         (earlier version of the display interface do not provide this property)
156     -->
157     <property name="Interfaces" type="as" access="read"/>
158   </interface>
160   <!--
161       org.qemu.Display1.Keyboard:
163       This interface is optionally implemented on
164       ``/org/qemu/Display1/Console_$id`` (see
165       :dbus:iface:`~org.qemu.Display1.Console`).
166   -->
167   <interface name="org.qemu.Display1.Keyboard">
168     <!--
169         Press:
170         @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
172         Send a key press event.
173     -->
174     <method name="Press">
175       <arg type="u" name="keycode" direction="in"/>
176     </method>
178     <!--
179         Release:
180         @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
182         Send a key release event.
183     -->
184     <method name="Release">
185       <arg type="u" name="keycode" direction="in"/>
186     </method>
188     <!--
189         Modifiers:
191         The active keyboard modifiers::
193           Scroll = 1 << 0
194           Num    = 1 << 1
195           Caps   = 1 << 2
196     -->
197     <property name="Modifiers" type="u" access="read"/>
198   </interface>
200   <!--
201       org.qemu.Display1.Mouse:
203       This interface is optionally implemented on
204       ``/org/qemu/Display1/Console_$id`` (see
205       :dbus:iface:`~org.qemu.Display1.Console` documentation).
207       .. _dbus-button-values:
209       **Button values**::
211         Left       = 0
212         Middle     = 1
213         Right      = 2
214         Wheel-up   = 3
215         Wheel-down = 4
216         Side       = 5
217         Extra      = 6
218   -->
219   <interface name="org.qemu.Display1.Mouse">
220     <!--
221         Press:
222         @button: :ref:`button value<dbus-button-values>`.
224         Send a mouse button press event.
225     -->
226     <method name="Press">
227       <arg type="u" name="button" direction="in"/>
228     </method>
230     <!--
231         Release:
232         @button: :ref:`button value<dbus-button-values>`.
234         Send a mouse button release event.
235     -->
236     <method name="Release">
237       <arg type="u" name="button" direction="in"/>
238     </method>
240     <!--
241         SetAbsPosition:
242         @x: X position, in pixels.
243         @y: Y position, in pixels.
245         Set the mouse pointer position.
247         Returns an error if not :dbus:prop:`IsAbsolute`.
248     -->
249     <method name="SetAbsPosition">
250       <arg type="u" name="x" direction="in"/>
251       <arg type="u" name="y" direction="in"/>
252     </method>
254     <!--
255         RelMotion:
256         @dx: X-delta, in pixels.
257         @dy: Y-delta, in pixels.
259         Move the mouse pointer position, relative to the current position.
261         Returns an error if :dbus:prop:`IsAbsolute`.
262     -->
263     <method name="RelMotion">
264       <arg type="i" name="dx" direction="in"/>
265       <arg type="i" name="dy" direction="in"/>
266     </method>
268     <!--
269         IsAbsolute:
271         Whether the mouse is using absolute movements.
272     -->
273     <property name="IsAbsolute" type="b" access="read"/>
274   </interface>
276   <!--
277       org.qemu.Display1.MultiTouch:
279       This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see
280       :dbus:iface:`~org.qemu.Display1.Console` documentation).
282       .. _dbus-kind-values:
284       **Kind values**::
286         Begin       = 0
287         Update      = 1
288         End         = 2
289         Cancel      = 3
290   -->
291   <interface name="org.qemu.Display1.MultiTouch">
292     <!--
293         SendEvent:
294         @kind: The touch event kind
295         @num_slot: The slot number.
296         @x: The x coordinates.
297         @y: The y coordinates.
299         Send a touch gesture event.
300     -->
301     <method name="SendEvent">
302       <arg type="u" name="kind" direction="in"/>
303       <arg type="t" name="num_slot" direction="in"/>
304       <arg type="d" name="x" direction="in"/>
305       <arg type="d" name="y" direction="in"/>
306     </method>
308     <!--
309         MaxSlots:
311         The maximum number of slots.
312     -->
313     <property name="MaxSlots" type="i" access="read"/>
314   </interface>
316   <!--
317       org.qemu.Display1.Listener:
319       This client-side interface must be available on
320       ``/org/qemu/Display1/Listener`` when registering the peer-to-peer
321       connection with :dbus:meth:`~org.qemu.Display1.Console.Register`.
322   -->
323   <interface name="org.qemu.Display1.Listener">
324     <!--
325         Scanout:
326         @width: display width, in pixels.
327         @height: display height, in pixels.
328         @stride: data stride, in bytes.
329         @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
330         @data: image data.
332         Resize and update the display content.
334         The data to transfer for the display update may be large. The preferred
335         scanout method is :dbus:meth:`ScanoutDMABUF`, used whenever possible.
336     -->
337     <method name="Scanout">
338       <arg type="u" name="width" direction="in"/>
339       <arg type="u" name="height" direction="in"/>
340       <arg type="u" name="stride" direction="in"/>
341       <arg type="u" name="pixman_format" direction="in"/>
342       <arg type="ay" name="data" direction="in">
343         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
344       </arg>
345     </method>
347     <!--
348         Update:
349         @x: X update position, in pixels.
350         @y: Y update position, in pixels.
351         @width: update width, in pixels.
352         @height: update height, in pixels.
353         @stride: data stride, in bytes.
354         @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
355         @data: display image data.
357         Update the display content.
359         This method is only called after a :dbus:meth:`Scanout` call.
360     -->
361     <method name="Update">
362       <arg type="i" name="x" direction="in"/>
363       <arg type="i" name="y" direction="in"/>
364       <arg type="i" name="width" direction="in"/>
365       <arg type="i" name="height" direction="in"/>
366       <arg type="u" name="stride" direction="in"/>
367       <arg type="u" name="pixman_format" direction="in"/>
368       <arg type="ay" name="data" direction="in">
369         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
370       </arg>
371     </method>
373     <?if $(env.HOST_OS) != windows?>
374     <!--
375         ScanoutDMABUF:
376         @dmabuf: the DMABUF file descriptor.
377         @width: display width, in pixels.
378         @height: display height, in pixels.
379         @stride: stride, in bytes.
380         @fourcc: DMABUF fourcc.
381         @modifier: DMABUF modifier.
382         @y0_top: whether Y position 0 is the top or not.
384         Resize and update the display content with a DMABUF.
385     -->
386     <method name="ScanoutDMABUF">
387       <arg type="h" name="dmabuf" direction="in"/>
388       <arg type="u" name="width" direction="in"/>
389       <arg type="u" name="height" direction="in"/>
390       <arg type="u" name="stride" direction="in"/>
391       <arg type="u" name="fourcc" direction="in"/>
392       <!-- xywh? -->
393       <arg type="t" name="modifier" direction="in"/>
394       <arg type="b" name="y0_top" direction="in"/>
395     </method>
397     <!--
398         UpdateDMABUF:
399         @x: the X update position, in pixels.
400         @y: the Y update position, in pixels.
401         @width: the update width, in pixels.
402         @height: the update height, in pixels.
404         Update the display content with the current DMABUF and the given region.
405     -->
406     <method name="UpdateDMABUF">
407       <arg type="i" name="x" direction="in"/>
408       <arg type="i" name="y" direction="in"/>
409       <arg type="i" name="width" direction="in"/>
410       <arg type="i" name="height" direction="in"/>
411     </method>
412     <?endif?>
414     <!--
415         Disable:
417         Disable the display (turn it off).
418     -->
419     <method name="Disable">
420     </method>
422     <!--
423         MouseSet:
424         @x: X mouse position, in pixels.
425         @y: Y mouse position, in pixels.
426         @on: whether the mouse is visible or not.
428         Set the mouse position and visibility.
429     -->
430     <method name="MouseSet">
431       <arg type="i" name="x" direction="in"/>
432       <arg type="i" name="y" direction="in"/>
433       <arg type="i" name="on" direction="in"/>
434     </method>
436     <!--
437         CursorDefine:
438         @width: cursor width, in pixels.
439         @height: cursor height, in pixels.
440         @hot_x: hot-spot X position, in pixels.
441         @hot_y: hot-spot Y position, in pixels.
442         @data: the cursor data.
444         Set the mouse cursor shape and hot-spot. The "data" must be ARGB, 32-bit
445         per pixel.
446     -->
447     <method name="CursorDefine">
448       <arg type="i" name="width" direction="in"/>
449       <arg type="i" name="height" direction="in"/>
450       <arg type="i" name="hot_x" direction="in"/>
451       <arg type="i" name="hot_y" direction="in"/>
452       <arg type="ay" name="data" direction="in">
453         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
454       </arg>
455     </method>
457     <!--
458         Interfaces:
460         This property lists extra interfaces provided by the
461         /org/qemu/Display1/Listener object, and can be used to detect
462         the capabilities with which they are communicating.
464         Unlike the standard D-Bus Introspectable interface, querying this
465         property does not require parsing XML.
467         (earlier version of the display interface do not provide this property)
468     -->
469     <property name="Interfaces" type="as" access="read"/>
470   </interface>
472   <!--
473       org.qemu.Display1.Listener.Win32.Map:
475       This optional client-side interface can complement
476       org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for Windows
477       specific shared memory scanouts.
478   -->
479   <interface name="org.qemu.Display1.Listener.Win32.Map">
480     <!--
481         ScanoutMap:
482         @handle: the shared map handle value.
483         @offset: mapping offset.
484         @width: display width, in pixels.
485         @height: display height, in pixels.
486         @stride: stride, in bytes.
487         @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
489         Resize and update the display content with a shared map.
490     -->
491     <method name="ScanoutMap">
492       <arg type="t" name="handle" direction="in"/>
493       <arg type="u" name="offset" direction="in"/>
494       <arg type="u" name="width" direction="in"/>
495       <arg type="u" name="height" direction="in"/>
496       <arg type="u" name="stride" direction="in"/>
497       <arg type="u" name="pixman_format" direction="in"/>
498     </method>
500     <!--
501         UpdateMap:
502         @x: the X update position, in pixels.
503         @y: the Y update position, in pixels.
504         @width: the update width, in pixels.
505         @height: the update height, in pixels.
507         Update the display content with the current shared map and the given region.
508     -->
509     <method name="UpdateMap">
510       <arg type="i" name="x" direction="in"/>
511       <arg type="i" name="y" direction="in"/>
512       <arg type="i" name="width" direction="in"/>
513       <arg type="i" name="height" direction="in"/>
514     </method>
515   </interface>
517   <!--
518       org.qemu.Display1.Listener.Win32.D3d11:
520       This optional client-side interface can complement
521       org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for Windows
522       specific Direct3D texture sharing of the scanouts.
523   -->
524   <interface name="org.qemu.Display1.Listener.Win32.D3d11">
525     <!--
526         ScanoutTexture2d:
527         @handle: the NT handle for the shared texture (to be opened back with ID3D11Device1::OpenSharedResource1).
528         @texture_width: texture width, in pixels.
529         @texture_height: texture height, in pixels.
530         @y0_top: whether Y position 0 is the top or not.
531         @x: the X scanout position, in pixels.
532         @y: the Y scanout position, in pixels.
533         @width: the scanout width, in pixels.
534         @height: the scanout height, in pixels.
536         Resize and update the display content with a Direct3D 11 2D texture.
537         You must acquire and release the associated KeyedMutex 0 during rendering.
538     -->
539     <method name="ScanoutTexture2d">
540       <arg type="t" name="handle" direction="in"/>
541       <arg type="u" name="texture_width" direction="in"/>
542       <arg type="u" name="texture_height" direction="in"/>
543       <arg type="b" name="y0_top" direction="in"/>
544       <arg type="u" name="x" direction="in"/>
545       <arg type="u" name="y" direction="in"/>
546       <arg type="u" name="width" direction="in"/>
547       <arg type="u" name="height" direction="in"/>
548     </method>
550     <!--
551         UpdateTexture2d:
552         @x: the X update position, in pixels.
553         @y: the Y update position, in pixels.
554         @width: the update width, in pixels.
555         @height: the update height, in pixels.
557         Update the display content with the current Direct3D 2D texture and the given region.
558         You must acquire and release the associated KeyedMutex 0 during rendering.
559     -->
560     <method name="UpdateTexture2d">
561       <arg type="i" name="x" direction="in"/>
562       <arg type="i" name="y" direction="in"/>
563       <arg type="i" name="width" direction="in"/>
564       <arg type="i" name="height" direction="in"/>
565     </method>
566   </interface>
568   <!--
569       org.qemu.Display1.Clipboard:
571       This interface must be implemented by both the client and the server on
572       ``/org/qemu/Display1/Clipboard`` to support clipboard sharing between
573       the client and the guest.
575       Once :dbus:meth:`Register`'ed, method calls may be sent and received in both
576       directions. Unregistered callers will get error replies.
578       .. _dbus-clipboard-selection:
580       **Selection values**::
582         Clipboard   = 0
583         Primary     = 1
584         Secondary   = 2
586       .. _dbus-clipboard-serial:
588       **Serial counter**
590       To solve potential clipboard races, clipboard grabs have an associated
591       serial counter. It is set to 0 on registration, and incremented by 1 for
592       each grab. The peer with the highest serial is the clipboard grab owner.
594       When a grab with a lower serial is received, it should be discarded.
596       When a grab is attempted with the same serial number as the current grab,
597       the one coming from the client should have higher priority, and the client
598       should gain clipboard grab ownership.
599   -->
600   <interface name="org.qemu.Display1.Clipboard">
601     <!--
602         Register:
604         Register a clipboard session and reinitialize the serial counter.
606         The client must register itself, and is granted an exclusive
607         access for handling the clipboard.
609         The server can reinitialize the session as well (to reset the counter).
610     -->
611     <method name="Register"/>
613     <!--
614         Unregister:
616         Unregister the clipboard session.
617     -->
618     <method name="Unregister"/>
619     <!--
620         Grab:
621         @selection: a :ref:`selection value<dbus-clipboard-selection>`.
622         @serial: the current grab :ref:`serial<dbus-clipboard-serial>`.
623         @mimes: the list of available content MIME types.
625         Grab the clipboard, claiming current clipboard content.
626     -->
627     <method name="Grab">
628       <arg type="u" name="selection"/>
629       <arg type="u" name="serial"/>
630       <arg type="as" name="mimes"/>
631     </method>
633     <!--
634         Release:
635         @selection: a :ref:`selection value<dbus-clipboard-selection>`.
637         Release the clipboard (does nothing if not the current owner).
638     -->
639     <method name="Release">
640       <arg type="u" name="selection"/>
641     </method>
643     <!--
644         Request:
645         @selection: a :ref:`selection value<dbus-clipboard-selection>`
646         @mimes: requested MIME types (by order of preference).
647         @reply_mime: the returned data MIME type.
648         @data: the clipboard data.
650         Request the clipboard content.
652         Return an error if the clipboard is empty, or the requested MIME types
653         are unavailable.
654     -->
655     <method name="Request">
656       <arg type="u" name="selection"/>
657       <arg type="as" name="mimes"/>
658       <arg type="s" name="reply_mime" direction="out"/>
659       <arg type="ay" name="data" direction="out">
660         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
661       </arg>
662     </method>
664     <!--
665         Interfaces:
667         This property lists extra interfaces provided by the
668         /org/qemu/Display1/Clipboard object, and can be used to detect
669         the capabilities with which they are communicating.
671         Unlike the standard D-Bus Introspectable interface, querying this
672         property does not require parsing XML.
674         (earlier version of the display interface do not provide this property)
675     -->
676     <property name="Interfaces" type="as" access="read"/>
677   </interface>
679   <!--
680       org.qemu.Display1.Audio:
682       Audio backend may be available on ``/org/qemu/Display1/Audio``.
683   -->
684   <interface name="org.qemu.Display1.Audio">
685     <!--
686         RegisterOutListener:
687         @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
689         Register an audio backend playback handler.
691         Multiple listeners may be registered simultaneously.
693         The listener is expected to implement the
694         :dbus:iface:`org.qemu.Display1.AudioOutListener` interface.
695     -->
696     <method name="RegisterOutListener">
697       <?if $(env.HOST_OS) == windows?>
698       <arg type="ay" name="listener" direction="in">
699         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
700       </arg>
701       <?else?>
702       <arg type="h" name="listener" direction="in"/>
703       <?endif?>
704     </method>
706     <!--
707         RegisterInListener:
708         @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
710         Register an audio backend record handler.
712         Multiple listeners may be registered simultaneously.
714         The listener is expected to implement the
715         :dbus:iface:`org.qemu.Display1.AudioInListener` interface.
716     -->
717     <method name="RegisterInListener">
718       <?if $(env.HOST_OS) == windows?>
719       <arg type="ay" name="listener" direction="in">
720         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
721       </arg>
722       <?else?>
723       <arg type="h" name="listener" direction="in"/>
724       <?endif?>
725     </method>
727     <!--
728         Interfaces:
730         This property lists extra interfaces provided by the
731         /org/qemu/Display1/Audio object, and can be used to detect
732         the capabilities with which they are communicating.
734         Unlike the standard D-Bus Introspectable interface, querying this
735         property does not require parsing XML.
737         (earlier version of the display interface do not provide this property)
738     -->
739     <property name="Interfaces" type="as" access="read"/>
740   </interface>
742   <!--
743       org.qemu.Display1.AudioOutListener:
745       This client-side interface must be available on
746       ``/org/qemu/Display1/AudioOutListener`` when registering the peer-to-peer
747       connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterOutListener`.
748   -->
749   <interface name="org.qemu.Display1.AudioOutListener">
750     <!--
751         Init:
752         @id: the stream ID.
753         @bits: PCM bits per sample.
754         @is_signed: whether the PCM data is signed.
755         @is_float: PCM floating point format.
756         @freq: the PCM frequency in Hz.
757         @nchannels: the number of channels.
758         @bytes_per_frame: the bytes per frame.
759         @bytes_per_second: the bytes per second.
760         @be: whether using big-endian format.
762         Initializes a PCM playback stream.
763     -->
764     <method name="Init">
765       <arg name="id" type="t" direction="in"/>
766       <arg name="bits" type="y" direction="in"/>
767       <arg name="is_signed" type="b" direction="in"/>
768       <arg name="is_float" type="b" direction="in"/>
769       <arg name="freq" type="u" direction="in"/>
770       <arg name="nchannels" type="y" direction="in"/>
771       <arg name="bytes_per_frame" type="u" direction="in"/>
772       <arg name="bytes_per_second" type="u" direction="in"/>
773       <arg name="be" type="b" direction="in"/>
774     </method>
776     <!--
777         Fini:
778         @id: the stream ID.
780         Finish & close a playback stream.
781     -->
782     <method name="Fini">
783       <arg name="id" type="t" direction="in"/>
784     </method>
786     <!--
787         SetEnabled:
788         @id: the stream ID.
790         Resume or suspend the playback stream.
791     -->
792     <method name="SetEnabled">
793       <arg name="id" type="t" direction="in"/>
794       <arg name="enabled" type="b" direction="in"/>
795     </method>
797     <!--
798         SetVolume:
799         @id: the stream ID.
800         @mute: whether the stream is muted.
801         @volume: the volume per-channel.
803         Set the stream volume and mute state (volume without unit, 0-255).
804     -->
805     <method name="SetVolume">
806       <arg name="id" type="t" direction="in"/>
807       <arg name="mute" type="b" direction="in"/>
808       <arg name="volume" type="ay" direction="in">
809         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
810       </arg>
811     </method>
813     <!--
814         Write:
815         @id: the stream ID.
816         @data: the PCM data.
818         PCM stream to play.
819     -->
820     <method name="Write">
821       <arg name="id" type="t" direction="in"/>
822       <arg type="ay" name="data" direction="in">
823         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
824       </arg>
825     </method>
827     <!--
828         Interfaces:
830         This property lists extra interfaces provided by the
831         /org/qemu/Display1/AudioOutListener object, and can be used to detect
832         the capabilities with which they are communicating.
834         Unlike the standard D-Bus Introspectable interface, querying this
835         property does not require parsing XML.
837         (earlier version of the display interface do not provide this property)
838     -->
839     <property name="Interfaces" type="as" access="read"/>
840   </interface>
842   <!--
843       org.qemu.Display1.AudioInListener:
845       This client-side interface must be available on
846       ``/org/qemu/Display1/AudioInListener`` when registering the peer-to-peer
847       connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterInListener`.
848   -->
849   <interface name="org.qemu.Display1.AudioInListener">
850     <!--
851         Init:
852         @id: the stream ID.
853         @bits: PCM bits per sample.
854         @is_signed: whether the PCM data is signed.
855         @is_float: PCM floating point format.
856         @freq: the PCM frequency in Hz.
857         @nchannels: the number of channels.
858         @bytes_per_frame: the bytes per frame.
859         @bytes_per_second: the bytes per second.
860         @be: whether using big-endian format.
862         Initializes a PCM record stream.
863     -->
864     <method name="Init">
865       <arg name="id" type="t" direction="in"/>
866       <arg name="bits" type="y" direction="in"/>
867       <arg name="is_signed" type="b" direction="in"/>
868       <arg name="is_float" type="b" direction="in"/>
869       <arg name="freq" type="u" direction="in"/>
870       <arg name="nchannels" type="y" direction="in"/>
871       <arg name="bytes_per_frame" type="u" direction="in"/>
872       <arg name="bytes_per_second" type="u" direction="in"/>
873       <arg name="be" type="b" direction="in"/>
874     </method>
876     <!--
877         Fini:
878         @id: the stream ID.
880         Finish & close a record stream.
881     -->
882     <method name="Fini">
883       <arg name="id" type="t" direction="in"/>
884     </method>
886     <!--
887         SetEnabled:
888         @id: the stream ID.
890         Resume or suspend the record stream.
891     -->
892     <method name="SetEnabled">
893       <arg name="id" type="t" direction="in"/>
894       <arg name="enabled" type="b" direction="in"/>
895     </method>
897     <!--
898         SetVolume:
899         @id: the stream ID.
900         @mute: whether the stream is muted.
901         @volume: the volume per-channel.
903         Set the stream volume and mute state (volume without unit, 0-255).
904     -->
905     <method name="SetVolume">
906       <arg name="id" type="t" direction="in"/>
907       <arg name="mute" type="b" direction="in"/>
908       <arg name="volume" type="ay" direction="in">
909         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
910       </arg>
911     </method>
913     <!--
914         Read:
915         @id: the stream ID.
916         @size: the amount to read, in bytes.
917         @data: the recorded data (which may be less than requested).
919         Read "size" bytes from the record stream.
920     -->
921     <method name="Read">
922       <arg name="id" type="t" direction="in"/>
923       <arg name="size" type="t" direction="in"/>
924       <arg type="ay" name="data" direction="out">
925         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
926       </arg>
927     </method>
929     <!--
930         Interfaces:
932         This property lists extra interfaces provided by the
933         /org/qemu/Display1/AudioInListener object, and can be used to detect
934         the capabilities with which they are communicating.
936         Unlike the standard D-Bus Introspectable interface, querying this
937         property does not require parsing XML.
939         (earlier version of the display interface do not provide this property)
940     -->
941     <property name="Interfaces" type="as" access="read"/>
942   </interface>
944   <!--
945       org.qemu.Display1.Chardev:
947       Character devices may be available on ``/org/qemu/Display1/Chardev_$id``.
949       They may be used for different kind of streams, which are identified via
950       their FQDN :dbus:prop:`Name`.
952       .. _dbus-chardev-fqdn:
954       Here are some known reserved kind names (the ``org.qemu`` prefix is
955       reserved by QEMU):
957       org.qemu.console.serial.0
958         A serial console stream.
960       org.qemu.monitor.hmp.0
961         A QEMU HMP human monitor.
963       org.qemu.monitor.qmp.0
964         A QEMU QMP monitor.
966       org.qemu.usbredir
967         A usbredir stream.
968   -->
969   <interface name="org.qemu.Display1.Chardev">
970     <!--
971         Register:
972         @stream: a Unix FD to redirect the stream to.
974         Register a file-descriptor for the stream handling.
976         The current handler, if any, will be replaced.
977     -->
978     <method name="Register">
979       <?if $(env.HOST_OS) == windows?>
980       <arg type="ay" name="listener" direction="in">
981         <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
982       </arg>
983       <?else?>
984       <arg type="h" name="stream" direction="in"/>
985       <?endif?>
986     </method>
988     <!--
989         SendBreak:
991         Send a break event to the character device.
992     -->
993     <method name="SendBreak"/>
995     <!--
996         Name:
998         The FQDN name to identify the kind of stream. See :ref:`reserved
999         names<dbus-chardev-fqdn>`.
1000     -->
1001     <property name="Name" type="s" access="read"/>
1003     <!--
1004         FEOpened:
1006         Whether the front-end side is opened.
1007     -->
1008     <property name="FEOpened" type="b" access="read"/>
1010     <!--
1011         Echo:
1013         Whether the input should be echo'ed (for serial streams).
1014     -->
1015     <property name="Echo" type="b" access="read"/>
1017     <!--
1018         Owner:
1020         The D-Bus unique name of the registered handler.
1021     -->
1022     <property name="Owner" type="s" access="read"/>
1024     <!--
1025         Interfaces:
1027         This property lists extra interfaces provided by the
1028         ``/org/qemu/Display1/Chardev_$i`` object, and can be used to detect
1029         the capabilities with which they are communicating.
1031         Unlike the standard D-Bus Introspectable interface, querying this
1032         property does not require parsing XML.
1034         (earlier version of the display interface do not provide this property)
1035     -->
1036     <property name="Interfaces" type="as" access="read"/>
1037   </interface>
1038 </node>