Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
ui/dbus: introduce "Interfaces" properties
This property is similar to ``org.freedesktop.DBus.Interfaces`` property
on the bus interface: it's an array of strings listing the extra
interfaces and capabilities available, in a convenient way.

Most interfaces are implicit, as they are required. For
``org/qemu/Display1_$id``, we can list the Keyboard And Mouse
interfaces. Those could be optional.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230606115658.677673-9-marcandre.lureau@redhat.com>
  • Loading branch information
elmarco committed Jun 27, 2023
1 parent 306d758 commit 439e016
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 2 deletions.
7 changes: 7 additions & 0 deletions ui/dbus-console.c
Expand Up @@ -537,6 +537,12 @@ dbus_display_console_new(DBusDisplay *display, QemuConsole *con)
char device_addr[256] = "";
DBusDisplayConsole *ddc;
int idx, i;
const char *interfaces[] = {
"org.qemu.Display1.Keyboard",
"org.qemu.Display1.Mouse",
"org.qemu.Display1.MultiTouch",
NULL
};

assert(display);
assert(con);
Expand All @@ -561,6 +567,7 @@ dbus_display_console_new(DBusDisplay *display, QemuConsole *con)
"width", qemu_console_get_width(con, 0),
"height", qemu_console_get_height(con, 0),
"device-address", device_addr,
"interfaces", interfaces,
NULL);
g_object_connect(ddc->iface,
"swapped-signal::handle-register-listener",
Expand Down
118 changes: 116 additions & 2 deletions ui/dbus-display1.xml
Expand Up @@ -26,6 +26,20 @@
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>

<!--
Expand Down Expand Up @@ -127,12 +141,27 @@
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 in implemented on ``/org/qemu/Display1/Console_$id`` (see
This interface is optionally implemented on
``/org/qemu/Display1/Console_$id`` (see
:dbus:iface:`~org.qemu.Display1.Console`).
-->
<interface name="org.qemu.Display1.Keyboard">
Expand Down Expand Up @@ -171,7 +200,8 @@
<!--
org.qemu.Display1.Mouse:
This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see
This interface is optionally implemented on
``/org/qemu/Display1/Console_$id`` (see
:dbus:iface:`~org.qemu.Display1.Console` documentation).
.. _dbus-button-values:
Expand Down Expand Up @@ -425,6 +455,20 @@
<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>

<!--
Expand Down Expand Up @@ -522,6 +566,20 @@
<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>

<!--
Expand Down Expand Up @@ -571,6 +629,20 @@
<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>

<!--
Expand Down Expand Up @@ -657,6 +729,20 @@
<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>

<!--
Expand Down Expand Up @@ -745,6 +831,20 @@
<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>

<!--
Expand Down Expand Up @@ -826,5 +926,19 @@
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>

0 comments on commit 439e016

Please sign in to comment.