master
xml 1,162 lines 35.1 KB
Raw
1 <?xml version="1.0" encoding="utf-8"?>
2 <node>
3 <!--
4 org.qemu.Display1.VM:
5
6 This interface is implemented on ``/org/qemu/Display1/VM``.
7 -->
8 <interface name="org.qemu.Display1.VM">
9 <!--
10 Name:
11
12 The name of the VM.
13 -->
14 <property name="Name" type="s" access="read"/>
15
16 <!--
17 UUID:
18
19 The UUID of the VM.
20 -->
21 <property name="UUID" type="s" access="read"/>
22
23 <!--
24 ConsoleIDs:
25
26 The list of consoles available on ``/org/qemu/Display1/Console_$id``.
27 -->
28 <property name="ConsoleIDs" type="au" access="read"/>
29
30 <!--
31 Interfaces:
32
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.
36
37 Unlike the standard D-Bus Introspectable interface, querying this
38 property does not require parsing XML.
39
40 (earlier version of the display interface do not provide this property)
41 -->
42 <property name="Interfaces" type="as" access="read"/>
43 </interface>
44
45 <!--
46 org.qemu.Display1.Console:
47
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.
51
52 A console is attached to a video device head. It may be "Graphic" or
53 "Text" (see :dbus:prop:`Type` and other properties).
54
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.
64
65 Register a console listener, which will receive display updates, until
66 it is disconnected.
67
68 Multiple listeners may be registered simultaneously.
69
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>
82
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.
91
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>
102
103 <!--
104 Label:
105
106 A user-friendly name for the console (for ex: "VGA").
107 -->
108 <property name="Label" type="s" access="read"/>
109
110 <!--
111 Head:
112
113 Graphical device head number.
114 -->
115 <property name="Head" type="u" access="read"/>
116
117 <!--
118 Type:
119
120 Console type ("Graphic" or "Text").
121 -->
122 <property name="Type" type="s" access="read"/>
123
124 <!--
125 Width:
126
127 Console width, in pixels.
128 -->
129 <property name="Width" type="u" access="read"/>
130
131 <!--
132 Height:
133
134 Console height, in pixels.
135 -->
136 <property name="Height" type="u" access="read"/>
137
138 <!--
139 DeviceAddress:
140
141 The device address (ex: "pci/0000/02.0").
142 -->
143 <property name="DeviceAddress" type="s" access="read"/>
144
145 <!--
146 Interfaces:
147
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.
151
152 Unlike the standard D-Bus Introspectable interface, querying this
153 property does not require parsing XML.
154
155 (earlier version of the display interface do not provide this property)
156 -->
157 <property name="Interfaces" type="as" access="read"/>
158 </interface>
159
160 <!--
161 org.qemu.Display1.Keyboard:
162
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)
171
172 Send a key press event.
173 -->
174 <method name="Press">
175 <arg type="u" name="keycode" direction="in"/>
176 </method>
177
178 <!--
179 Release:
180 @keycode: QEMU key number (xtkbd + special re-encoding of high bit)
181
182 Send a key release event.
183 -->
184 <method name="Release">
185 <arg type="u" name="keycode" direction="in"/>
186 </method>
187
188 <!--
189 Modifiers:
190
191 The active keyboard modifiers::
192
193 Scroll = 1 << 0
194 Num = 1 << 1
195 Caps = 1 << 2
196 -->
197 <property name="Modifiers" type="u" access="read"/>
198 </interface>
199
200 <!--
201 org.qemu.Display1.Mouse:
202
203 This interface is optionally implemented on
204 ``/org/qemu/Display1/Console_$id`` (see
205 :dbus:iface:`~org.qemu.Display1.Console` documentation).
206
207 .. _dbus-button-values:
208
209 **Button values**::
210
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>`.
223
224 Send a mouse button press event.
225 -->
226 <method name="Press">
227 <arg type="u" name="button" direction="in"/>
228 </method>
229
230 <!--
231 Release:
232 @button: :ref:`button value<dbus-button-values>`.
233
234 Send a mouse button release event.
235 -->
236 <method name="Release">
237 <arg type="u" name="button" direction="in"/>
238 </method>
239
240 <!--
241 SetAbsPosition:
242 @x: X position, in pixels.
243 @y: Y position, in pixels.
244
245 Set the mouse pointer position.
246
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>
253
254 <!--
255 RelMotion:
256 @dx: X-delta, in pixels.
257 @dy: Y-delta, in pixels.
258
259 Move the mouse pointer position, relative to the current position.
260
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>
267
268 <!--
269 IsAbsolute:
270
271 Whether the mouse is using absolute movements.
272 -->
273 <property name="IsAbsolute" type="b" access="read"/>
274 </interface>
275
276 <!--
277 org.qemu.Display1.MultiTouch:
278
279 This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see
280 :dbus:iface:`~org.qemu.Display1.Console` documentation).
281
282 .. _dbus-kind-values:
283
284 **Kind values**::
285
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.
298
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>
307
308 <!--
309 MaxSlots:
310
311 The maximum number of slots.
312 -->
313 <property name="MaxSlots" type="i" access="read"/>
314 </interface>
315
316 <!--
317 org.qemu.Display1.Listener:
318
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.
331
332 Resize and update the display content.
333
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>
346
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.
356
357 Update the display content.
358
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>
372
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.
383
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>
396
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.
403
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?>
413
414 <!--
415 Disable:
416
417 Disable the display (turn it off).
418 -->
419 <method name="Disable">
420 </method>
421
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.
427
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>
435
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.
443
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>
456
457 <!--
458 Interfaces:
459
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.
463
464 Unlike the standard D-Bus Introspectable interface, querying this
465 property does not require parsing XML.
466
467 (earlier version of the display interface do not provide this property)
468 -->
469 <property name="Interfaces" type="as" access="read"/>
470 </interface>
471
472 <!--
473 org.qemu.Display1.Listener.Unix.Map:
474
475 This optional client-side interface can complement
476 org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for
477 Unix-specific shared memory scanouts.
478 -->
479 <?if $(env.HOST_OS) != windows?>
480 <interface name="org.qemu.Display1.Listener.Unix.Map">
481 <!--
482 ScanoutMap:
483 @handle: the shared map FD.
484 @offset: mapping offset, in bytes.
485 @width: display width, in pixels.
486 @height: display height, in pixels.
487 @stride: stride, in bytes.
488 @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
489
490 Resize and update the display content with a shared map.
491 -->
492 <method name="ScanoutMap">
493 <arg type="h" name="handle" direction="in"/>
494 <arg type="u" name="offset" direction="in"/>
495 <arg type="u" name="width" direction="in"/>
496 <arg type="u" name="height" direction="in"/>
497 <arg type="u" name="stride" direction="in"/>
498 <arg type="u" name="pixman_format" direction="in"/>
499 </method>
500
501 <!--
502 UpdateMap:
503 @x: the X update position, in pixels.
504 @y: the Y update position, in pixels.
505 @width: the update width, in pixels.
506 @height: the update height, in pixels.
507
508 Update the display content with the current shared map and the given region.
509 -->
510 <method name="UpdateMap">
511 <arg type="i" name="x" direction="in"/>
512 <arg type="i" name="y" direction="in"/>
513 <arg type="i" name="width" direction="in"/>
514 <arg type="i" name="height" direction="in"/>
515 </method>
516 </interface>
517 <?endif?>
518
519 <!--
520 org.qemu.Display1.Listener.Win32.Map:
521
522 This optional client-side interface can complement
523 org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for Windows
524 specific shared memory scanouts.
525 -->
526 <?if $(env.HOST_OS) == windows?>
527 <interface name="org.qemu.Display1.Listener.Win32.Map">
528 <!--
529 ScanoutMap:
530 @handle: the shared file mapping handle value (not a file handle)
531 @offset: mapping offset.
532 @width: display width, in pixels.
533 @height: display height, in pixels.
534 @stride: stride, in bytes.
535 @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
536
537 Resize and update the display content with a shared file mapping object.
538 -->
539 <method name="ScanoutMap">
540 <arg type="t" name="handle" direction="in"/>
541 <arg type="u" name="offset" direction="in"/>
542 <arg type="u" name="width" direction="in"/>
543 <arg type="u" name="height" direction="in"/>
544 <arg type="u" name="stride" direction="in"/>
545 <arg type="u" name="pixman_format" direction="in"/>
546 </method>
547
548 <!--
549 UpdateMap:
550 @x: the X update position, in pixels.
551 @y: the Y update position, in pixels.
552 @width: the update width, in pixels.
553 @height: the update height, in pixels.
554
555 Update the display content with the current shared map and the given region.
556 -->
557 <method name="UpdateMap">
558 <arg type="i" name="x" direction="in"/>
559 <arg type="i" name="y" direction="in"/>
560 <arg type="i" name="width" direction="in"/>
561 <arg type="i" name="height" direction="in"/>
562 </method>
563 </interface>
564 <?endif?>
565
566 <!--
567 org.qemu.Display1.Listener.Win32.D3d11:
568
569 This optional client-side interface can complement
570 org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for Windows
571 specific Direct3D texture sharing of the scanouts.
572 -->
573 <interface name="org.qemu.Display1.Listener.Win32.D3d11">
574 <!--
575 ScanoutTexture2d:
576 @handle: the NT handle for the shared texture (to be opened back with ID3D11Device1::OpenSharedResource1).
577 @texture_width: texture width, in pixels.
578 @texture_height: texture height, in pixels.
579 @y0_top: whether Y position 0 is the top or not.
580 @x: the X scanout position, in pixels.
581 @y: the Y scanout position, in pixels.
582 @width: the scanout width, in pixels.
583 @height: the scanout height, in pixels.
584
585 Resize and update the display content with a Direct3D 11 2D texture.
586 You must acquire and release the associated KeyedMutex 0 during rendering.
587 -->
588 <method name="ScanoutTexture2d">
589 <arg type="t" name="handle" direction="in"/>
590 <arg type="u" name="texture_width" direction="in"/>
591 <arg type="u" name="texture_height" direction="in"/>
592 <arg type="b" name="y0_top" direction="in"/>
593 <arg type="u" name="x" direction="in"/>
594 <arg type="u" name="y" direction="in"/>
595 <arg type="u" name="width" direction="in"/>
596 <arg type="u" name="height" direction="in"/>
597 </method>
598
599 <!--
600 UpdateTexture2d:
601 @x: the X update position, in pixels.
602 @y: the Y update position, in pixels.
603 @width: the update width, in pixels.
604 @height: the update height, in pixels.
605
606 Update the display content with the current Direct3D 2D texture and the given region.
607 You must acquire and release the associated KeyedMutex 0 during rendering.
608 -->
609 <method name="UpdateTexture2d">
610 <arg type="i" name="x" direction="in"/>
611 <arg type="i" name="y" direction="in"/>
612 <arg type="i" name="width" direction="in"/>
613 <arg type="i" name="height" direction="in"/>
614 </method>
615 </interface>
616
617 <!--
618 org.qemu.Display1.Listener.Unix.ScanoutDMABUF2:
619
620 This optional client-side interface can complement
621 org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for
622 Unix-specific DMABUF scanout setup which support multi plane.
623 -->
624 <?if $(env.HOST_OS) != windows?>
625 <interface name="org.qemu.Display1.Listener.Unix.ScanoutDMABUF2">
626 <!--
627 ScanoutDMABUF2:
628 @dmabuf: DMABUF file descriptor of each plane.
629 @x: display x offset, in pixels
630 @y: display y offset, in pixels
631 @width: display width, in pixels.
632 @height: display height, in pixels.
633 @offset: offset of each plane, in bytes.
634 @stride: stride of each plane, in bytes.
635 @num_planes: plane number.
636 @fourcc: DMABUF fourcc.
637 @backing_width: backing framebuffer width, in pixels
638 @backing_height: backing framebuffer height, in pixels
639 @modifier: DMABUF modifier.
640 @y0_top: whether Y position 0 is the top or not.
641
642 Resize and update the display content with DMABUF.
643 -->
644 <method name="ScanoutDMABUF2">
645 <arg type="ah" name="dmabuf" direction="in"/>
646 <arg type="u" name="x" direction="in"/>
647 <arg type="u" name="y" direction="in"/>
648 <arg type="u" name="width" direction="in"/>
649 <arg type="u" name="height" direction="in"/>
650 <arg type="au" name="offset" direction="in"/>
651 <arg type="au" name="stride" direction="in"/>
652 <arg type="u" name="num_planes" direction="in"/>
653 <arg type="u" name="fourcc" direction="in"/>
654 <arg type="u" name="backing_width" direction="in"/>
655 <arg type="u" name="backing_height" direction="in"/>
656 <arg type="t" name="modifier" direction="in"/>
657 <arg type="b" name="y0_top" direction="in"/>
658 </method>
659 </interface>
660 <?endif?>
661
662 <!--
663 org.qemu.Display1.Clipboard:
664
665 This interface must be implemented by both the client and the server on
666 ``/org/qemu/Display1/Clipboard`` to support clipboard sharing between
667 the client and the guest.
668
669 Once :dbus:meth:`Register`'ed, method calls may be sent and received in both
670 directions. Unregistered callers will get error replies.
671
672 .. _dbus-clipboard-selection:
673
674 **Selection values**::
675
676 Clipboard = 0
677 Primary = 1
678 Secondary = 2
679
680 .. _dbus-clipboard-serial:
681
682 **Serial counter**
683
684 To solve potential clipboard races, clipboard grabs have an associated
685 serial counter. It is set to 0 on registration, and incremented by 1 for
686 each grab. The peer with the highest serial is the clipboard grab owner.
687
688 When a grab with a lower serial is received, it should be discarded.
689
690 When a grab is attempted with the same serial number as the current grab,
691 the one coming from the client should have higher priority, and the client
692 should gain clipboard grab ownership.
693 -->
694 <interface name="org.qemu.Display1.Clipboard">
695 <!--
696 Register:
697
698 Register a clipboard session and reinitialize the serial counter.
699
700 The client must register itself, and is granted an exclusive
701 access for handling the clipboard.
702
703 The server can reinitialize the session as well (to reset the counter).
704 -->
705 <method name="Register"/>
706
707 <!--
708 Unregister:
709
710 Unregister the clipboard session.
711 -->
712 <method name="Unregister"/>
713 <!--
714 Grab:
715 @selection: a :ref:`selection value<dbus-clipboard-selection>`.
716 @serial: the current grab :ref:`serial<dbus-clipboard-serial>`.
717 @mimes: the list of available content MIME types.
718
719 Grab the clipboard, claiming current clipboard content.
720 -->
721 <method name="Grab">
722 <arg type="u" name="selection"/>
723 <arg type="u" name="serial"/>
724 <arg type="as" name="mimes"/>
725 </method>
726
727 <!--
728 Release:
729 @selection: a :ref:`selection value<dbus-clipboard-selection>`.
730
731 Release the clipboard (does nothing if not the current owner).
732 -->
733 <method name="Release">
734 <arg type="u" name="selection"/>
735 </method>
736
737 <!--
738 Request:
739 @selection: a :ref:`selection value<dbus-clipboard-selection>`
740 @mimes: requested MIME types (by order of preference).
741 @reply_mime: the returned data MIME type.
742 @data: the clipboard data.
743
744 Request the clipboard content.
745
746 Return an error if the clipboard is empty, or the requested MIME types
747 are unavailable.
748 -->
749 <method name="Request">
750 <arg type="u" name="selection"/>
751 <arg type="as" name="mimes"/>
752 <arg type="s" name="reply_mime" direction="out"/>
753 <arg type="ay" name="data" direction="out">
754 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
755 </arg>
756 </method>
757
758 <!--
759 Interfaces:
760
761 This property lists extra interfaces provided by the
762 /org/qemu/Display1/Clipboard object, and can be used to detect
763 the capabilities with which they are communicating.
764
765 Unlike the standard D-Bus Introspectable interface, querying this
766 property does not require parsing XML.
767
768 (earlier version of the display interface do not provide this property)
769 -->
770 <property name="Interfaces" type="as" access="read"/>
771 </interface>
772
773 <!--
774 org.qemu.Display1.Audio:
775
776 Audio backend may be available on ``/org/qemu/Display1/Audio``.
777 -->
778 <interface name="org.qemu.Display1.Audio">
779 <!--
780 RegisterOutListener:
781 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
782
783 Register an audio backend playback handler.
784
785 Multiple listeners may be registered simultaneously.
786
787 The listener is expected to implement the
788 :dbus:iface:`org.qemu.Display1.AudioOutListener` interface.
789 -->
790 <method name="RegisterOutListener">
791 <?if $(env.HOST_OS) == windows?>
792 <arg type="ay" name="listener" direction="in">
793 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
794 </arg>
795 <?else?>
796 <arg type="h" name="listener" direction="in"/>
797 <?endif?>
798 </method>
799
800 <!--
801 RegisterInListener:
802 @listener: a Unix socket FD, for peer-to-peer D-Bus communication.
803
804 Register an audio backend record handler.
805
806 Multiple listeners may be registered simultaneously.
807
808 The listener is expected to implement the
809 :dbus:iface:`org.qemu.Display1.AudioInListener` interface.
810 -->
811 <method name="RegisterInListener">
812 <?if $(env.HOST_OS) == windows?>
813 <arg type="ay" name="listener" direction="in">
814 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
815 </arg>
816 <?else?>
817 <arg type="h" name="listener" direction="in"/>
818 <?endif?>
819 </method>
820
821 <!--
822 NSamples:
823
824 The number of samples per read/write frames. (for example the default is
825 480, or 10ms at 48kHz)
826
827 (earlier version of the display interface do not provide this property)
828 -->
829 <property name="NSamples" type="u" access="read">
830 <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
831 </property>
832
833 <!--
834 Interfaces:
835
836 This property lists extra interfaces provided by the
837 /org/qemu/Display1/Audio object, and can be used to detect
838 the capabilities with which they are communicating.
839
840 Unlike the standard D-Bus Introspectable interface, querying this
841 property does not require parsing XML.
842
843 (earlier version of the display interface do not provide this property)
844 -->
845 <property name="Interfaces" type="as" access="read"/>
846 </interface>
847
848 <!--
849 org.qemu.Display1.AudioOutListener:
850
851 This client-side interface must be available on
852 ``/org/qemu/Display1/AudioOutListener`` when registering the peer-to-peer
853 connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterOutListener`.
854 -->
855 <interface name="org.qemu.Display1.AudioOutListener">
856 <!--
857 Init:
858 @id: the stream ID.
859 @bits: PCM bits per sample.
860 @is_signed: whether the PCM data is signed.
861 @is_float: PCM floating point format.
862 @freq: the PCM frequency in Hz.
863 @nchannels: the number of channels.
864 @bytes_per_frame: the bytes per frame.
865 @bytes_per_second: the bytes per second.
866 @be: whether using big-endian format.
867
868 Initializes a PCM playback stream.
869 -->
870 <method name="Init">
871 <arg name="id" type="t" direction="in"/>
872 <arg name="bits" type="y" direction="in"/>
873 <arg name="is_signed" type="b" direction="in"/>
874 <arg name="is_float" type="b" direction="in"/>
875 <arg name="freq" type="u" direction="in"/>
876 <arg name="nchannels" type="y" direction="in"/>
877 <arg name="bytes_per_frame" type="u" direction="in"/>
878 <arg name="bytes_per_second" type="u" direction="in"/>
879 <arg name="be" type="b" direction="in"/>
880 </method>
881
882 <!--
883 Fini:
884 @id: the stream ID.
885
886 Finish & close a playback stream.
887 -->
888 <method name="Fini">
889 <arg name="id" type="t" direction="in"/>
890 </method>
891
892 <!--
893 SetEnabled:
894 @id: the stream ID.
895
896 Resume or suspend the playback stream.
897 -->
898 <method name="SetEnabled">
899 <arg name="id" type="t" direction="in"/>
900 <arg name="enabled" type="b" direction="in"/>
901 </method>
902
903 <!--
904 SetVolume:
905 @id: the stream ID.
906 @mute: whether the stream is muted.
907 @volume: the volume per-channel.
908
909 Set the stream volume and mute state (volume without unit, 0-255).
910 -->
911 <method name="SetVolume">
912 <arg name="id" type="t" direction="in"/>
913 <arg name="mute" type="b" direction="in"/>
914 <arg name="volume" type="ay" direction="in">
915 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
916 </arg>
917 </method>
918
919 <!--
920 Write:
921 @id: the stream ID.
922 @data: the PCM data.
923
924 PCM stream to play.
925 -->
926 <method name="Write">
927 <arg name="id" type="t" direction="in"/>
928 <arg type="ay" name="data" direction="in">
929 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
930 </arg>
931 </method>
932
933 <!--
934 Interfaces:
935
936 This property lists extra interfaces provided by the
937 /org/qemu/Display1/AudioOutListener object, and can be used to detect
938 the capabilities with which they are communicating.
939
940 Unlike the standard D-Bus Introspectable interface, querying this
941 property does not require parsing XML.
942
943 (earlier version of the display interface do not provide this property)
944 -->
945 <property name="Interfaces" type="as" access="read"/>
946 </interface>
947
948 <!--
949 org.qemu.Display1.AudioInListener:
950
951 This client-side interface must be available on
952 ``/org/qemu/Display1/AudioInListener`` when registering the peer-to-peer
953 connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterInListener`.
954 -->
955 <interface name="org.qemu.Display1.AudioInListener">
956 <!--
957 Init:
958 @id: the stream ID.
959 @bits: PCM bits per sample.
960 @is_signed: whether the PCM data is signed.
961 @is_float: PCM floating point format.
962 @freq: the PCM frequency in Hz.
963 @nchannels: the number of channels.
964 @bytes_per_frame: the bytes per frame.
965 @bytes_per_second: the bytes per second.
966 @be: whether using big-endian format.
967
968 Initializes a PCM record stream.
969 -->
970 <method name="Init">
971 <arg name="id" type="t" direction="in"/>
972 <arg name="bits" type="y" direction="in"/>
973 <arg name="is_signed" type="b" direction="in"/>
974 <arg name="is_float" type="b" direction="in"/>
975 <arg name="freq" type="u" direction="in"/>
976 <arg name="nchannels" type="y" direction="in"/>
977 <arg name="bytes_per_frame" type="u" direction="in"/>
978 <arg name="bytes_per_second" type="u" direction="in"/>
979 <arg name="be" type="b" direction="in"/>
980 </method>
981
982 <!--
983 Fini:
984 @id: the stream ID.
985
986 Finish & close a record stream.
987 -->
988 <method name="Fini">
989 <arg name="id" type="t" direction="in"/>
990 </method>
991
992 <!--
993 SetEnabled:
994 @id: the stream ID.
995
996 Resume or suspend the record stream.
997 -->
998 <method name="SetEnabled">
999 <arg name="id" type="t" direction="in"/>
1000 <arg name="enabled" type="b" direction="in"/>
1001 </method>
1002
1003 <!--
1004 SetVolume:
1005 @id: the stream ID.
1006 @mute: whether the stream is muted.
1007 @volume: the volume per-channel.
1008
1009 Set the stream volume and mute state (volume without unit, 0-255).
1010 -->
1011 <method name="SetVolume">
1012 <arg name="id" type="t" direction="in"/>
1013 <arg name="mute" type="b" direction="in"/>
1014 <arg name="volume" type="ay" direction="in">
1015 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
1016 </arg>
1017 </method>
1018
1019 <!--
1020 Read:
1021 @id: the stream ID.
1022 @size: the amount to read, in bytes.
1023 @data: the recorded data (which may be less than requested).
1024
1025 Read "size" bytes from the record stream.
1026 -->
1027 <method name="Read">
1028 <arg name="id" type="t" direction="in"/>
1029 <arg name="size" type="t" direction="in"/>
1030 <arg type="ay" name="data" direction="out">
1031 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
1032 </arg>
1033 </method>
1034
1035 <!--
1036 Interfaces:
1037
1038 This property lists extra interfaces provided by the
1039 /org/qemu/Display1/AudioInListener object, and can be used to detect
1040 the capabilities with which they are communicating.
1041
1042 Unlike the standard D-Bus Introspectable interface, querying this
1043 property does not require parsing XML.
1044
1045 (earlier version of the display interface do not provide this property)
1046 -->
1047 <property name="Interfaces" type="as" access="read"/>
1048 </interface>
1049
1050 <!--
1051 org.qemu.Display1.Chardev:
1052
1053 Character devices may be available on ``/org/qemu/Display1/Chardev_$id``.
1054
1055 They may be used for different kind of streams, which are identified via
1056 their FQDN :dbus:prop:`Name`.
1057
1058 .. _dbus-chardev-fqdn:
1059
1060 Here are some known reserved kind names (the ``org.qemu`` prefix is
1061 reserved by QEMU):
1062
1063 org.qemu.console.serial.0
1064 A serial console stream.
1065
1066 org.qemu.monitor.hmp.0
1067 A QEMU HMP human monitor.
1068
1069 org.qemu.monitor.qmp.0
1070 A QEMU QMP monitor.
1071
1072 org.qemu.usbredir
1073 A usbredir stream.
1074 -->
1075 <interface name="org.qemu.Display1.Chardev">
1076 <!--
1077 Register:
1078 @stream: a Unix FD to redirect the stream to.
1079
1080 Register a file-descriptor for the stream handling.
1081
1082 The current handler, if any, will be replaced.
1083 -->
1084 <method name="Register">
1085 <?if $(env.HOST_OS) == windows?>
1086 <arg type="ay" name="listener" direction="in">
1087 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
1088 </arg>
1089 <?else?>
1090 <arg type="h" name="stream" direction="in"/>
1091 <?endif?>
1092 </method>
1093
1094 <!--
1095 SendBreak:
1096
1097 Send a break event to the character device.
1098 -->
1099 <method name="SendBreak"/>
1100
1101 <!--
1102 Name:
1103
1104 The FQDN name to identify the kind of stream. See :ref:`reserved
1105 names<dbus-chardev-fqdn>`.
1106 -->
1107 <property name="Name" type="s" access="read"/>
1108
1109 <!--
1110 FEOpened:
1111
1112 Whether the front-end side is opened.
1113 -->
1114 <property name="FEOpened" type="b" access="read"/>
1115
1116 <!--
1117 Echo:
1118
1119 Whether the input should be echo'ed (for serial streams).
1120 -->
1121 <property name="Echo" type="b" access="read"/>
1122
1123 <!--
1124 Owner:
1125
1126 The D-Bus unique name of the registered handler.
1127 -->
1128 <property name="Owner" type="s" access="read"/>
1129
1130 <!--
1131 Interfaces:
1132
1133 This property lists extra interfaces provided by the
1134 ``/org/qemu/Display1/Chardev_$i`` object, and can be used to detect
1135 the capabilities with which they are communicating.
1136
1137 Unlike the standard D-Bus Introspectable interface, querying this
1138 property does not require parsing XML.
1139
1140 (earlier version of the display interface do not provide this property)
1141 -->
1142 <property name="Interfaces" type="as" access="read"/>
1143 </interface>
1144
1145 <!--
1146 org.qemu.Display1.Chardev.VCEncoding:
1147
1148 Provides encoding information for virtual console chardevs.
1149
1150 This interface is present on chardev objects that are virtual
1151 consoles, and exposes the character encoding used by the guest.
1152 -->
1153 <interface name="org.qemu.Display1.Chardev.VCEncoding">
1154 <!--
1155 Encoding:
1156
1157 The character encoding used by the virtual console
1158 (matching ``ChardevVCEncoding``): ``cp437`` or ``utf8``.
1159 -->
1160 <property name="Encoding" type="s" access="read"/>
1161 </interface>
1162 </node>