diff mbox series

ui/console: allow display device to be labeled with given id

Message ID 4C23C17B8E87E74E906A25A3254A03F4018FC0021E@SHASXM06.verisilicon.com (mailing list archive)
State New, archived
Headers show
Series ui/console: allow display device to be labeled with given id | expand

Commit Message

Wen, Jianxian May 26, 2022, 7:08 a.m. UTC
The update makes it easier to find and specify devices.
They can only be found by device type name without the id field,
for example, devices of the same type have the same label.
The update also adds a head field,
which is useful for devices that support multiple heads,
such as virtio-gpu.

Signed-off-by: Jianxian Wen <jianxian.wen@verisilicon.com>
Signed-off-by: Lu Gao <lu.gao@verisilicon.com>
---
How to reproduce it:
    -display gtk \
    -device bochs-display,id=bochs0 \
    -device bochs-display,id=bochs1 \
    -device virtio-gpu,max_outputs=2 \
    -device virtio-gpu,max_outputs=2,id=vgpu1

 ui/console.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Comments

Gerd Hoffmann June 9, 2022, 9:33 a.m. UTC | #1
On Thu, May 26, 2022 at 07:08:14AM +0000, Wen, Jianxian wrote:
> The update makes it easier to find and specify devices.
> They can only be found by device type name without the id field,
> for example, devices of the same type have the same label.
> The update also adds a head field,
> which is useful for devices that support multiple heads,
> such as virtio-gpu.

Can we make the head field conditional, so it's only done in case there
are actually multiple heads?  Both qxl and virtio-gpu have a max_outputs
property, so checking if that exists and is greater than 1 should work
for that.

take care,
  Gerd
diff mbox series

Patch

diff --git a/ui/console.c b/ui/console.c
index 36c80cd1de..d0226c765e 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -2323,7 +2323,16 @@  char *qemu_console_get_label(QemuConsole *con)
 {
     if (con->console_type == GRAPHIC_CONSOLE) {
         if (con->device) {
-            return g_strdup(object_get_typename(con->device));
+            DeviceState *dev;
+
+            dev = DEVICE(con->device);
+            if (dev->id) {
+                return g_strdup_printf("%s.%d", dev->id, con->head);
+            } else {
+                return g_strdup_printf("%s.%d",
+                                       object_get_typename(con->device),
+                                       con->head);
+            }
         }
         return g_strdup("VGA");
     } else {