mirror of
https://github.com/qemu/qemu.git
synced 2024-12-15 07:23:52 +08:00
de1f8ce0ab
When the client implements "org.qemu.Display1.Listener.Win32.D3d11" and we are running on ANGLE/win32, share the scanout texture with the peer process, and draw with ScanoutTexture2d/UpdateTexture2d methods. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20230606115658.677673-22-marcandre.lureau@redhat.com>
1039 lines
31 KiB
XML
1039 lines
31 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<node>
|
|
<!--
|
|
org.qemu.Display1.VM:
|
|
|
|
This interface is implemented on ``/org/qemu/Display1/VM``.
|
|
-->
|
|
<interface name="org.qemu.Display1.VM">
|
|
<!--
|
|
Name:
|
|
|
|
The name of the VM.
|
|
-->
|
|
<property name="Name" type="s" access="read"/>
|
|
|
|
<!--
|
|
UUID:
|
|
|
|
The UUID of the VM.
|
|
-->
|
|
<property name="UUID" type="s" access="read"/>
|
|
|
|
<!--
|
|
ConsoleIDs:
|
|
|
|
The list of consoles available on ``/org/qemu/Display1/Console_$id``.
|
|
-->
|
|
<property name="ConsoleIDs" type="au" access="read"/>
|
|
|
|
<!--
|
|
Interfaces:
|
|
|
|
This property lists extra interfaces provided by the
|
|
/org/qemu/Display1/VM object, and can be used to detect
|
|
the capabilities with which they are communicating.
|
|
|
|
Unlike the standard D-Bus Introspectable interface, querying this
|
|
property does not require parsing XML.
|
|
|
|
(earlier version of the display interface do not provide this property)
|
|
-->
|
|
<property name="Interfaces" type="as" access="read"/>
|
|
</interface>
|
|
|
|
<!--
|
|
org.qemu.Display1.Console:
|
|
|
|
This interface is implemented on ``/org/qemu/Display1/Console_$id``. You
|
|
may discover available consoles through introspection or with the
|
|
:dbus:prop:`org.qemu.Display1.VM.ConsoleIDs` property.
|
|
|
|
A console is attached to a video device head. It may be "Graphic" or
|
|
"Text" (see :dbus:prop:`Type` and other properties).
|
|
|
|
Interactions with a console may be done with
|
|
:dbus:iface:`org.qemu.Display1.Keyboard`,
|
|
:dbus:iface:`org.qemu.Display1.Mouse` and
|
|
:dbus:iface:`org.qemu.Display1.MultiTouch` interfaces when available.
|
|
-->
|
|
<interface name="org.qemu.Display1.Console">
|
|
<!--
|
|
RegisterListener:
|
|
@listener: a Unix socket FD, for peer-to-peer D-Bus communication.
|
|
|
|
Register a console listener, which will receive display updates, until
|
|
it is disconnected.
|
|
|
|
Multiple listeners may be registered simultaneously.
|
|
|
|
The listener is expected to implement the
|
|
:dbus:iface:`org.qemu.Display1.Listener` interface.
|
|
-->
|
|
<method name="RegisterListener">
|
|
<?if $(env.TARGETOS) == windows?>
|
|
<arg type="ay" name="listener" direction="in">
|
|
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
|
|
</arg>
|
|
<?else?>
|
|
<arg type="h" name="listener" direction="in"/>
|
|
<?endif?>
|
|
</method>
|
|
|
|
<!--
|
|
SetUIInfo:
|
|
@width_mm: the physical display width in millimeters.
|
|
@height_mm: the physical display height in millimeters.
|
|
@xoff: horizontal offset, in pixels.
|
|
@yoff: vertical offset, in pixels.
|
|
@width: console width, in pixels.
|
|
@height: console height, in pixels.
|
|
|
|
Modify the dimensions and display settings.
|
|
-->
|
|
<method name="SetUIInfo">
|
|
<arg name="width_mm" type="q" direction="in"/>
|
|
<arg name="height_mm" type="q" direction="in"/>
|
|
<arg name="xoff" type="i" direction="in"/>
|
|
<arg name="yoff" type="i" direction="in"/>
|
|
<arg name="width" type="u" direction="in"/>
|
|
<arg name="height" type="u" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
Label:
|
|
|
|
A user-friendly name for the console (for ex: "VGA").
|
|
-->
|
|
<property name="Label" type="s" access="read"/>
|
|
|
|
<!--
|
|
Head:
|
|
|
|
Graphical device head number.
|
|
-->
|
|
<property name="Head" type="u" access="read"/>
|
|
|
|
<!--
|
|
Type:
|
|
|
|
Console type ("Graphic" or "Text").
|
|
-->
|
|
<property name="Type" type="s" access="read"/>
|
|
|
|
<!--
|
|
Width:
|
|
|
|
Console width, in pixels.
|
|
-->
|
|
<property name="Width" type="u" access="read"/>
|
|
|
|
<!--
|
|
Height:
|
|
|
|
Console height, in pixels.
|
|
-->
|
|
<property name="Height" type="u" access="read"/>
|
|
|
|
<!--
|
|
DeviceAddress:
|
|
|
|
The device address (ex: "pci/0000/02.0").
|
|
-->
|
|
<property name="DeviceAddress" type="s" access="read"/>
|
|
|
|
<!--
|
|
Interfaces:
|
|
|
|
This property lists extra interfaces provided by the
|
|
``/org/qemu/Display1/Console_$id`` object, and can be used to detect the
|
|
capabilities with which they are communicating.
|
|
|
|
Unlike the standard D-Bus Introspectable interface, querying this
|
|
property does not require parsing XML.
|
|
|
|
(earlier version of the display interface do not provide this property)
|
|
-->
|
|
<property name="Interfaces" type="as" access="read"/>
|
|
</interface>
|
|
|
|
<!--
|
|
org.qemu.Display1.Keyboard:
|
|
|
|
This interface is optionally implemented on
|
|
``/org/qemu/Display1/Console_$id`` (see
|
|
:dbus:iface:`~org.qemu.Display1.Console`).
|
|
-->
|
|
<interface name="org.qemu.Display1.Keyboard">
|
|
<!--
|
|
Press:
|
|
@keycode: QEMU key number (xtkbd + special re-encoding of high bit)
|
|
|
|
Send a key press event.
|
|
-->
|
|
<method name="Press">
|
|
<arg type="u" name="keycode" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
Release:
|
|
@keycode: QEMU key number (xtkbd + special re-encoding of high bit)
|
|
|
|
Send a key release event.
|
|
-->
|
|
<method name="Release">
|
|
<arg type="u" name="keycode" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
Modifiers:
|
|
|
|
The active keyboard modifiers::
|
|
|
|
Scroll = 1 << 0
|
|
Num = 1 << 1
|
|
Caps = 1 << 2
|
|
-->
|
|
<property name="Modifiers" type="u" access="read"/>
|
|
</interface>
|
|
|
|
<!--
|
|
org.qemu.Display1.Mouse:
|
|
|
|
This interface is optionally implemented on
|
|
``/org/qemu/Display1/Console_$id`` (see
|
|
:dbus:iface:`~org.qemu.Display1.Console` documentation).
|
|
|
|
.. _dbus-button-values:
|
|
|
|
**Button values**::
|
|
|
|
Left = 0
|
|
Middle = 1
|
|
Right = 2
|
|
Wheel-up = 3
|
|
Wheel-down = 4
|
|
Side = 5
|
|
Extra = 6
|
|
-->
|
|
<interface name="org.qemu.Display1.Mouse">
|
|
<!--
|
|
Press:
|
|
@button: :ref:`button value<dbus-button-values>`.
|
|
|
|
Send a mouse button press event.
|
|
-->
|
|
<method name="Press">
|
|
<arg type="u" name="button" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
Release:
|
|
@button: :ref:`button value<dbus-button-values>`.
|
|
|
|
Send a mouse button release event.
|
|
-->
|
|
<method name="Release">
|
|
<arg type="u" name="button" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
SetAbsPosition:
|
|
@x: X position, in pixels.
|
|
@y: Y position, in pixels.
|
|
|
|
Set the mouse pointer position.
|
|
|
|
Returns an error if not :dbus:prop:`IsAbsolute`.
|
|
-->
|
|
<method name="SetAbsPosition">
|
|
<arg type="u" name="x" direction="in"/>
|
|
<arg type="u" name="y" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
RelMotion:
|
|
@dx: X-delta, in pixels.
|
|
@dy: Y-delta, in pixels.
|
|
|
|
Move the mouse pointer position, relative to the current position.
|
|
|
|
Returns an error if :dbus:prop:`IsAbsolute`.
|
|
-->
|
|
<method name="RelMotion">
|
|
<arg type="i" name="dx" direction="in"/>
|
|
<arg type="i" name="dy" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
IsAbsolute:
|
|
|
|
Whether the mouse is using absolute movements.
|
|
-->
|
|
<property name="IsAbsolute" type="b" access="read"/>
|
|
</interface>
|
|
|
|
<!--
|
|
org.qemu.Display1.MultiTouch:
|
|
|
|
This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see
|
|
:dbus:iface:`~org.qemu.Display1.Console` documentation).
|
|
|
|
.. _dbus-kind-values:
|
|
|
|
**Kind values**::
|
|
|
|
Begin = 0
|
|
Update = 1
|
|
End = 2
|
|
Cancel = 3
|
|
-->
|
|
<interface name="org.qemu.Display1.MultiTouch">
|
|
<!--
|
|
SendEvent:
|
|
@kind: The touch event kind
|
|
@num_slot: The slot number.
|
|
@x: The x coordinates.
|
|
@y: The y coordinates.
|
|
|
|
Send a touch gesture event.
|
|
-->
|
|
<method name="SendEvent">
|
|
<arg type="u" name="kind" direction="in"/>
|
|
<arg type="t" name="num_slot" direction="in"/>
|
|
<arg type="d" name="x" direction="in"/>
|
|
<arg type="d" name="y" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
MaxSlots:
|
|
|
|
The maximum number of slots.
|
|
-->
|
|
<property name="MaxSlots" type="i" access="read"/>
|
|
</interface>
|
|
|
|
<!--
|
|
org.qemu.Display1.Listener:
|
|
|
|
This client-side interface must be available on
|
|
``/org/qemu/Display1/Listener`` when registering the peer-to-peer
|
|
connection with :dbus:meth:`~org.qemu.Display1.Console.Register`.
|
|
-->
|
|
<interface name="org.qemu.Display1.Listener">
|
|
<!--
|
|
Scanout:
|
|
@width: display width, in pixels.
|
|
@height: display height, in pixels.
|
|
@stride: data stride, in bytes.
|
|
@pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
|
|
@data: image data.
|
|
|
|
Resize and update the display content.
|
|
|
|
The data to transfer for the display update may be large. The preferred
|
|
scanout method is :dbus:meth:`ScanoutDMABUF`, used whenever possible.
|
|
-->
|
|
<method name="Scanout">
|
|
<arg type="u" name="width" direction="in"/>
|
|
<arg type="u" name="height" direction="in"/>
|
|
<arg type="u" name="stride" direction="in"/>
|
|
<arg type="u" name="pixman_format" direction="in"/>
|
|
<arg type="ay" name="data" direction="in">
|
|
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
|
|
</arg>
|
|
</method>
|
|
|
|
<!--
|
|
Update:
|
|
@x: X update position, in pixels.
|
|
@y: Y update position, in pixels.
|
|
@width: update width, in pixels.
|
|
@height: update height, in pixels.
|
|
@stride: data stride, in bytes.
|
|
@pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
|
|
@data: display image data.
|
|
|
|
Update the display content.
|
|
|
|
This method is only called after a :dbus:meth:`Scanout` call.
|
|
-->
|
|
<method name="Update">
|
|
<arg type="i" name="x" direction="in"/>
|
|
<arg type="i" name="y" direction="in"/>
|
|
<arg type="i" name="width" direction="in"/>
|
|
<arg type="i" name="height" direction="in"/>
|
|
<arg type="u" name="stride" direction="in"/>
|
|
<arg type="u" name="pixman_format" direction="in"/>
|
|
<arg type="ay" name="data" direction="in">
|
|
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
|
|
</arg>
|
|
</method>
|
|
|
|
<?if $(env.TARGETOS) != windows?>
|
|
<!--
|
|
ScanoutDMABUF:
|
|
@dmabuf: the DMABUF file descriptor.
|
|
@width: display width, in pixels.
|
|
@height: display height, in pixels.
|
|
@stride: stride, in bytes.
|
|
@fourcc: DMABUF fourcc.
|
|
@modifier: DMABUF modifier.
|
|
@y0_top: whether Y position 0 is the top or not.
|
|
|
|
Resize and update the display content with a DMABUF.
|
|
-->
|
|
<method name="ScanoutDMABUF">
|
|
<arg type="h" name="dmabuf" direction="in"/>
|
|
<arg type="u" name="width" direction="in"/>
|
|
<arg type="u" name="height" direction="in"/>
|
|
<arg type="u" name="stride" direction="in"/>
|
|
<arg type="u" name="fourcc" direction="in"/>
|
|
<!-- xywh? -->
|
|
<arg type="t" name="modifier" direction="in"/>
|
|
<arg type="b" name="y0_top" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
UpdateDMABUF:
|
|
@x: the X update position, in pixels.
|
|
@y: the Y update position, in pixels.
|
|
@width: the update width, in pixels.
|
|
@height: the update height, in pixels.
|
|
|
|
Update the display content with the current DMABUF and the given region.
|
|
-->
|
|
<method name="UpdateDMABUF">
|
|
<arg type="i" name="x" direction="in"/>
|
|
<arg type="i" name="y" direction="in"/>
|
|
<arg type="i" name="width" direction="in"/>
|
|
<arg type="i" name="height" direction="in"/>
|
|
</method>
|
|
<?endif?>
|
|
|
|
<!--
|
|
Disable:
|
|
|
|
Disable the display (turn it off).
|
|
-->
|
|
<method name="Disable">
|
|
</method>
|
|
|
|
<!--
|
|
MouseSet:
|
|
@x: X mouse position, in pixels.
|
|
@y: Y mouse position, in pixels.
|
|
@on: whether the mouse is visible or not.
|
|
|
|
Set the mouse position and visibility.
|
|
-->
|
|
<method name="MouseSet">
|
|
<arg type="i" name="x" direction="in"/>
|
|
<arg type="i" name="y" direction="in"/>
|
|
<arg type="i" name="on" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
CursorDefine:
|
|
@width: cursor width, in pixels.
|
|
@height: cursor height, in pixels.
|
|
@hot_x: hot-spot X position, in pixels.
|
|
@hot_y: hot-spot Y position, in pixels.
|
|
@data: the cursor data.
|
|
|
|
Set the mouse cursor shape and hot-spot. The "data" must be ARGB, 32-bit
|
|
per pixel.
|
|
-->
|
|
<method name="CursorDefine">
|
|
<arg type="i" name="width" direction="in"/>
|
|
<arg type="i" name="height" direction="in"/>
|
|
<arg type="i" name="hot_x" direction="in"/>
|
|
<arg type="i" name="hot_y" direction="in"/>
|
|
<arg type="ay" name="data" direction="in">
|
|
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
|
|
</arg>
|
|
</method>
|
|
|
|
<!--
|
|
Interfaces:
|
|
|
|
This property lists extra interfaces provided by the
|
|
/org/qemu/Display1/Listener object, and can be used to detect
|
|
the capabilities with which they are communicating.
|
|
|
|
Unlike the standard D-Bus Introspectable interface, querying this
|
|
property does not require parsing XML.
|
|
|
|
(earlier version of the display interface do not provide this property)
|
|
-->
|
|
<property name="Interfaces" type="as" access="read"/>
|
|
</interface>
|
|
|
|
<!--
|
|
org.qemu.Display1.Listener.Win32.Map:
|
|
|
|
This optional client-side interface can complement
|
|
org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for Windows
|
|
specific shared memory scanouts.
|
|
-->
|
|
<interface name="org.qemu.Display1.Listener.Win32.Map">
|
|
<!--
|
|
ScanoutMap:
|
|
@handle: the shared map handle value.
|
|
@offset: mapping offset.
|
|
@width: display width, in pixels.
|
|
@height: display height, in pixels.
|
|
@stride: stride, in bytes.
|
|
@pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``).
|
|
|
|
Resize and update the display content with a shared map.
|
|
-->
|
|
<method name="ScanoutMap">
|
|
<arg type="t" name="handle" direction="in"/>
|
|
<arg type="u" name="offset" direction="in"/>
|
|
<arg type="u" name="width" direction="in"/>
|
|
<arg type="u" name="height" direction="in"/>
|
|
<arg type="u" name="stride" direction="in"/>
|
|
<arg type="u" name="pixman_format" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
UpdateMap:
|
|
@x: the X update position, in pixels.
|
|
@y: the Y update position, in pixels.
|
|
@width: the update width, in pixels.
|
|
@height: the update height, in pixels.
|
|
|
|
Update the display content with the current shared map and the given region.
|
|
-->
|
|
<method name="UpdateMap">
|
|
<arg type="i" name="x" direction="in"/>
|
|
<arg type="i" name="y" direction="in"/>
|
|
<arg type="i" name="width" direction="in"/>
|
|
<arg type="i" name="height" direction="in"/>
|
|
</method>
|
|
</interface>
|
|
|
|
<!--
|
|
org.qemu.Display1.Listener.Win32.D3d11:
|
|
|
|
This optional client-side interface can complement
|
|
org.qemu.Display1.Listener on ``/org/qemu/Display1/Listener`` for Windows
|
|
specific Direct3D texture sharing of the scanouts.
|
|
-->
|
|
<interface name="org.qemu.Display1.Listener.Win32.D3d11">
|
|
<!--
|
|
ScanoutTexture2d:
|
|
@handle: the NT handle for the shared texture (to be opened back with ID3D11Device1::OpenSharedResource1).
|
|
@texture_width: texture width, in pixels.
|
|
@texture_height: texture height, in pixels.
|
|
@y0_top: whether Y position 0 is the top or not.
|
|
@x: the X scanout position, in pixels.
|
|
@y: the Y scanout position, in pixels.
|
|
@width: the scanout width, in pixels.
|
|
@height: the scanout height, in pixels.
|
|
|
|
Resize and update the display content with a Direct3D 11 2D texture.
|
|
You must acquire and release the associated KeyedMutex 0 during rendering.
|
|
-->
|
|
<method name="ScanoutTexture2d">
|
|
<arg type="t" name="handle" direction="in"/>
|
|
<arg type="u" name="texture_width" direction="in"/>
|
|
<arg type="u" name="texture_height" direction="in"/>
|
|
<arg type="b" name="y0_top" direction="in"/>
|
|
<arg type="u" name="x" direction="in"/>
|
|
<arg type="u" name="y" direction="in"/>
|
|
<arg type="u" name="width" direction="in"/>
|
|
<arg type="u" name="height" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
UpdateTexture2d:
|
|
@x: the X update position, in pixels.
|
|
@y: the Y update position, in pixels.
|
|
@width: the update width, in pixels.
|
|
@height: the update height, in pixels.
|
|
|
|
Update the display content with the current Direct3D 2D texture and the given region.
|
|
You must acquire and release the associated KeyedMutex 0 during rendering.
|
|
-->
|
|
<method name="UpdateTexture2d">
|
|
<arg type="i" name="x" direction="in"/>
|
|
<arg type="i" name="y" direction="in"/>
|
|
<arg type="i" name="width" direction="in"/>
|
|
<arg type="i" name="height" direction="in"/>
|
|
</method>
|
|
</interface>
|
|
|
|
<!--
|
|
org.qemu.Display1.Clipboard:
|
|
|
|
This interface must be implemented by both the client and the server on
|
|
``/org/qemu/Display1/Clipboard`` to support clipboard sharing between
|
|
the client and the guest.
|
|
|
|
Once :dbus:meth:`Register`'ed, method calls may be sent and received in both
|
|
directions. Unregistered callers will get error replies.
|
|
|
|
.. _dbus-clipboard-selection:
|
|
|
|
**Selection values**::
|
|
|
|
Clipboard = 0
|
|
Primary = 1
|
|
Secondary = 2
|
|
|
|
.. _dbus-clipboard-serial:
|
|
|
|
**Serial counter**
|
|
|
|
To solve potential clipboard races, clipboard grabs have an associated
|
|
serial counter. It is set to 0 on registration, and incremented by 1 for
|
|
each grab. The peer with the highest serial is the clipboard grab owner.
|
|
|
|
When a grab with a lower serial is received, it should be discarded.
|
|
|
|
When a grab is attempted with the same serial number as the current grab,
|
|
the one coming from the client should have higher priority, and the client
|
|
should gain clipboard grab ownership.
|
|
-->
|
|
<interface name="org.qemu.Display1.Clipboard">
|
|
<!--
|
|
Register:
|
|
|
|
Register a clipboard session and reinitialize the serial counter.
|
|
|
|
The client must register itself, and is granted an exclusive
|
|
access for handling the clipboard.
|
|
|
|
The server can reinitialize the session as well (to reset the counter).
|
|
-->
|
|
<method name="Register"/>
|
|
|
|
<!--
|
|
Unregister:
|
|
|
|
Unregister the clipboard session.
|
|
-->
|
|
<method name="Unregister"/>
|
|
<!--
|
|
Grab:
|
|
@selection: a :ref:`selection value<dbus-clipboard-selection>`.
|
|
@serial: the current grab :ref:`serial<dbus-clipboard-serial>`.
|
|
@mimes: the list of available content MIME types.
|
|
|
|
Grab the clipboard, claiming current clipboard content.
|
|
-->
|
|
<method name="Grab">
|
|
<arg type="u" name="selection"/>
|
|
<arg type="u" name="serial"/>
|
|
<arg type="as" name="mimes"/>
|
|
</method>
|
|
|
|
<!--
|
|
Release:
|
|
@selection: a :ref:`selection value<dbus-clipboard-selection>`.
|
|
|
|
Release the clipboard (does nothing if not the current owner).
|
|
-->
|
|
<method name="Release">
|
|
<arg type="u" name="selection"/>
|
|
</method>
|
|
|
|
<!--
|
|
Request:
|
|
@selection: a :ref:`selection value<dbus-clipboard-selection>`
|
|
@mimes: requested MIME types (by order of preference).
|
|
@reply_mime: the returned data MIME type.
|
|
@data: the clipboard data.
|
|
|
|
Request the clipboard content.
|
|
|
|
Return an error if the clipboard is empty, or the requested MIME types
|
|
are unavailable.
|
|
-->
|
|
<method name="Request">
|
|
<arg type="u" name="selection"/>
|
|
<arg type="as" name="mimes"/>
|
|
<arg type="s" name="reply_mime" direction="out"/>
|
|
<arg type="ay" name="data" direction="out">
|
|
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
|
|
</arg>
|
|
</method>
|
|
|
|
<!--
|
|
Interfaces:
|
|
|
|
This property lists extra interfaces provided by the
|
|
/org/qemu/Display1/Clipboard object, and can be used to detect
|
|
the capabilities with which they are communicating.
|
|
|
|
Unlike the standard D-Bus Introspectable interface, querying this
|
|
property does not require parsing XML.
|
|
|
|
(earlier version of the display interface do not provide this property)
|
|
-->
|
|
<property name="Interfaces" type="as" access="read"/>
|
|
</interface>
|
|
|
|
<!--
|
|
org.qemu.Display1.Audio:
|
|
|
|
Audio backend may be available on ``/org/qemu/Display1/Audio``.
|
|
-->
|
|
<interface name="org.qemu.Display1.Audio">
|
|
<!--
|
|
RegisterOutListener:
|
|
@listener: a Unix socket FD, for peer-to-peer D-Bus communication.
|
|
|
|
Register an audio backend playback handler.
|
|
|
|
Multiple listeners may be registered simultaneously.
|
|
|
|
The listener is expected to implement the
|
|
:dbus:iface:`org.qemu.Display1.AudioOutListener` interface.
|
|
-->
|
|
<method name="RegisterOutListener">
|
|
<?if $(env.TARGETOS) == windows?>
|
|
<arg type="ay" name="listener" direction="in">
|
|
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
|
|
</arg>
|
|
<?else?>
|
|
<arg type="h" name="listener" direction="in"/>
|
|
<?endif?>
|
|
</method>
|
|
|
|
<!--
|
|
RegisterInListener:
|
|
@listener: a Unix socket FD, for peer-to-peer D-Bus communication.
|
|
|
|
Register an audio backend record handler.
|
|
|
|
Multiple listeners may be registered simultaneously.
|
|
|
|
The listener is expected to implement the
|
|
:dbus:iface:`org.qemu.Display1.AudioInListener` interface.
|
|
-->
|
|
<method name="RegisterInListener">
|
|
<?if $(env.TARGETOS) == windows?>
|
|
<arg type="ay" name="listener" direction="in">
|
|
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
|
|
</arg>
|
|
<?else?>
|
|
<arg type="h" name="listener" direction="in"/>
|
|
<?endif?>
|
|
</method>
|
|
|
|
<!--
|
|
Interfaces:
|
|
|
|
This property lists extra interfaces provided by the
|
|
/org/qemu/Display1/Audio object, and can be used to detect
|
|
the capabilities with which they are communicating.
|
|
|
|
Unlike the standard D-Bus Introspectable interface, querying this
|
|
property does not require parsing XML.
|
|
|
|
(earlier version of the display interface do not provide this property)
|
|
-->
|
|
<property name="Interfaces" type="as" access="read"/>
|
|
</interface>
|
|
|
|
<!--
|
|
org.qemu.Display1.AudioOutListener:
|
|
|
|
This client-side interface must be available on
|
|
``/org/qemu/Display1/AudioOutListener`` when registering the peer-to-peer
|
|
connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterOutListener`.
|
|
-->
|
|
<interface name="org.qemu.Display1.AudioOutListener">
|
|
<!--
|
|
Init:
|
|
@id: the stream ID.
|
|
@bits: PCM bits per sample.
|
|
@is_signed: whether the PCM data is signed.
|
|
@is_float: PCM floating point format.
|
|
@freq: the PCM frequency in Hz.
|
|
@nchannels: the number of channels.
|
|
@bytes_per_frame: the bytes per frame.
|
|
@bytes_per_second: the bytes per second.
|
|
@be: whether using big-endian format.
|
|
|
|
Initializes a PCM playback stream.
|
|
-->
|
|
<method name="Init">
|
|
<arg name="id" type="t" direction="in"/>
|
|
<arg name="bits" type="y" direction="in"/>
|
|
<arg name="is_signed" type="b" direction="in"/>
|
|
<arg name="is_float" type="b" direction="in"/>
|
|
<arg name="freq" type="u" direction="in"/>
|
|
<arg name="nchannels" type="y" direction="in"/>
|
|
<arg name="bytes_per_frame" type="u" direction="in"/>
|
|
<arg name="bytes_per_second" type="u" direction="in"/>
|
|
<arg name="be" type="b" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
Fini:
|
|
@id: the stream ID.
|
|
|
|
Finish & close a playback stream.
|
|
-->
|
|
<method name="Fini">
|
|
<arg name="id" type="t" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
SetEnabled:
|
|
@id: the stream ID.
|
|
|
|
Resume or suspend the playback stream.
|
|
-->
|
|
<method name="SetEnabled">
|
|
<arg name="id" type="t" direction="in"/>
|
|
<arg name="enabled" type="b" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
SetVolume:
|
|
@id: the stream ID.
|
|
@mute: whether the stream is muted.
|
|
@volume: the volume per-channel.
|
|
|
|
Set the stream volume and mute state (volume without unit, 0-255).
|
|
-->
|
|
<method name="SetVolume">
|
|
<arg name="id" type="t" direction="in"/>
|
|
<arg name="mute" type="b" direction="in"/>
|
|
<arg name="volume" type="ay" direction="in">
|
|
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
|
|
</arg>
|
|
</method>
|
|
|
|
<!--
|
|
Write:
|
|
@id: the stream ID.
|
|
@data: the PCM data.
|
|
|
|
PCM stream to play.
|
|
-->
|
|
<method name="Write">
|
|
<arg name="id" type="t" direction="in"/>
|
|
<arg type="ay" name="data" direction="in">
|
|
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
|
|
</arg>
|
|
</method>
|
|
|
|
<!--
|
|
Interfaces:
|
|
|
|
This property lists extra interfaces provided by the
|
|
/org/qemu/Display1/AudioOutListener object, and can be used to detect
|
|
the capabilities with which they are communicating.
|
|
|
|
Unlike the standard D-Bus Introspectable interface, querying this
|
|
property does not require parsing XML.
|
|
|
|
(earlier version of the display interface do not provide this property)
|
|
-->
|
|
<property name="Interfaces" type="as" access="read"/>
|
|
</interface>
|
|
|
|
<!--
|
|
org.qemu.Display1.AudioInListener:
|
|
|
|
This client-side interface must be available on
|
|
``/org/qemu/Display1/AudioInListener`` when registering the peer-to-peer
|
|
connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterInListener`.
|
|
-->
|
|
<interface name="org.qemu.Display1.AudioInListener">
|
|
<!--
|
|
Init:
|
|
@id: the stream ID.
|
|
@bits: PCM bits per sample.
|
|
@is_signed: whether the PCM data is signed.
|
|
@is_float: PCM floating point format.
|
|
@freq: the PCM frequency in Hz.
|
|
@nchannels: the number of channels.
|
|
@bytes_per_frame: the bytes per frame.
|
|
@bytes_per_second: the bytes per second.
|
|
@be: whether using big-endian format.
|
|
|
|
Initializes a PCM record stream.
|
|
-->
|
|
<method name="Init">
|
|
<arg name="id" type="t" direction="in"/>
|
|
<arg name="bits" type="y" direction="in"/>
|
|
<arg name="is_signed" type="b" direction="in"/>
|
|
<arg name="is_float" type="b" direction="in"/>
|
|
<arg name="freq" type="u" direction="in"/>
|
|
<arg name="nchannels" type="y" direction="in"/>
|
|
<arg name="bytes_per_frame" type="u" direction="in"/>
|
|
<arg name="bytes_per_second" type="u" direction="in"/>
|
|
<arg name="be" type="b" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
Fini:
|
|
@id: the stream ID.
|
|
|
|
Finish & close a record stream.
|
|
-->
|
|
<method name="Fini">
|
|
<arg name="id" type="t" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
SetEnabled:
|
|
@id: the stream ID.
|
|
|
|
Resume or suspend the record stream.
|
|
-->
|
|
<method name="SetEnabled">
|
|
<arg name="id" type="t" direction="in"/>
|
|
<arg name="enabled" type="b" direction="in"/>
|
|
</method>
|
|
|
|
<!--
|
|
SetVolume:
|
|
@id: the stream ID.
|
|
@mute: whether the stream is muted.
|
|
@volume: the volume per-channel.
|
|
|
|
Set the stream volume and mute state (volume without unit, 0-255).
|
|
-->
|
|
<method name="SetVolume">
|
|
<arg name="id" type="t" direction="in"/>
|
|
<arg name="mute" type="b" direction="in"/>
|
|
<arg name="volume" type="ay" direction="in">
|
|
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
|
|
</arg>
|
|
</method>
|
|
|
|
<!--
|
|
Read:
|
|
@id: the stream ID.
|
|
@size: the amount to read, in bytes.
|
|
@data: the recorded data (which may be less than requested).
|
|
|
|
Read "size" bytes from the record stream.
|
|
-->
|
|
<method name="Read">
|
|
<arg name="id" type="t" direction="in"/>
|
|
<arg name="size" type="t" direction="in"/>
|
|
<arg type="ay" name="data" direction="out">
|
|
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
|
|
</arg>
|
|
</method>
|
|
|
|
<!--
|
|
Interfaces:
|
|
|
|
This property lists extra interfaces provided by the
|
|
/org/qemu/Display1/AudioInListener object, and can be used to detect
|
|
the capabilities with which they are communicating.
|
|
|
|
Unlike the standard D-Bus Introspectable interface, querying this
|
|
property does not require parsing XML.
|
|
|
|
(earlier version of the display interface do not provide this property)
|
|
-->
|
|
<property name="Interfaces" type="as" access="read"/>
|
|
</interface>
|
|
|
|
<!--
|
|
org.qemu.Display1.Chardev:
|
|
|
|
Character devices may be available on ``/org/qemu/Display1/Chardev_$id``.
|
|
|
|
They may be used for different kind of streams, which are identified via
|
|
their FQDN :dbus:prop:`Name`.
|
|
|
|
.. _dbus-chardev-fqdn:
|
|
|
|
Here are some known reserved kind names (the ``org.qemu`` prefix is
|
|
reserved by QEMU):
|
|
|
|
org.qemu.console.serial.0
|
|
A serial console stream.
|
|
|
|
org.qemu.monitor.hmp.0
|
|
A QEMU HMP human monitor.
|
|
|
|
org.qemu.monitor.qmp.0
|
|
A QEMU QMP monitor.
|
|
|
|
org.qemu.usbredir
|
|
A usbredir stream.
|
|
-->
|
|
<interface name="org.qemu.Display1.Chardev">
|
|
<!--
|
|
Register:
|
|
@stream: a Unix FD to redirect the stream to.
|
|
|
|
Register a file-descriptor for the stream handling.
|
|
|
|
The current handler, if any, will be replaced.
|
|
-->
|
|
<method name="Register">
|
|
<?if $(env.TARGETOS) == windows?>
|
|
<arg type="ay" name="listener" direction="in">
|
|
<annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/>
|
|
</arg>
|
|
<?else?>
|
|
<arg type="h" name="stream" direction="in"/>
|
|
<?endif?>
|
|
</method>
|
|
|
|
<!--
|
|
SendBreak:
|
|
|
|
Send a break event to the character device.
|
|
-->
|
|
<method name="SendBreak"/>
|
|
|
|
<!--
|
|
Name:
|
|
|
|
The FQDN name to identify the kind of stream. See :ref:`reserved
|
|
names<dbus-chardev-fqdn>`.
|
|
-->
|
|
<property name="Name" type="s" access="read"/>
|
|
|
|
<!--
|
|
FEOpened:
|
|
|
|
Whether the front-end side is opened.
|
|
-->
|
|
<property name="FEOpened" type="b" access="read"/>
|
|
|
|
<!--
|
|
Echo:
|
|
|
|
Whether the input should be echo'ed (for serial streams).
|
|
-->
|
|
<property name="Echo" type="b" access="read"/>
|
|
|
|
<!--
|
|
Owner:
|
|
|
|
The D-Bus unique name of the registered handler.
|
|
-->
|
|
<property name="Owner" type="s" access="read"/>
|
|
|
|
<!--
|
|
Interfaces:
|
|
|
|
This property lists extra interfaces provided by the
|
|
``/org/qemu/Display1/Chardev_$i`` object, and can be used to detect
|
|
the capabilities with which they are communicating.
|
|
|
|
Unlike the standard D-Bus Introspectable interface, querying this
|
|
property does not require parsing XML.
|
|
|
|
(earlier version of the display interface do not provide this property)
|
|
-->
|
|
<property name="Interfaces" type="as" access="read"/>
|
|
</interface>
|
|
</node>
|