summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorWen, Jianxian2022-06-15 08:35:14 +0200
committerGerd Hoffmann2022-07-01 12:33:51 +0200
commit839a482695616c87c7663062f60b7afe48d023a7 (patch)
tree6b415f7ea7d08a2cbd491d347d09f041188c3850 /ui
parentConvert fw_cfg.rst to reStructuredText syntax (diff)
downloadqemu-839a482695616c87c7663062f60b7afe48d023a7.tar.gz
qemu-839a482695616c87c7663062f60b7afe48d023a7.tar.xz
qemu-839a482695616c87c7663062f60b7afe48d023a7.zip
ui/console: allow display device to be labeled with given id
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> Message-Id: <4C23C17B8E87E74E906A25A3254A03F4018FC045B0@SHASXM06.verisilicon.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'ui')
-rw-r--r--ui/console.c41
1 files changed, 40 insertions, 1 deletions
diff --git a/ui/console.c b/ui/console.c
index 9331b85203..e139f7115e 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -2313,11 +2313,50 @@ bool qemu_console_is_gl_blocked(QemuConsole *con)
return con->gl_block;
}
+bool qemu_console_is_multihead(DeviceState *dev)
+{
+ QemuConsole *con;
+ Object *obj;
+ uint32_t f = 0xffffffff;
+ uint32_t h;
+
+ QTAILQ_FOREACH(con, &consoles, next) {
+ obj = object_property_get_link(OBJECT(con),
+ "device", &error_abort);
+ if (DEVICE(obj) != dev) {
+ continue;
+ }
+
+ h = object_property_get_uint(OBJECT(con),
+ "head", &error_abort);
+ if (f == 0xffffffff) {
+ f = h;
+ } else if (h != f) {
+ return true;
+ }
+ }
+ return false;
+}
+
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;
+ bool multihead;
+
+ dev = DEVICE(con->device);
+ multihead = qemu_console_is_multihead(dev);
+ if (multihead) {
+ return g_strdup_printf("%s.%d", dev->id ?
+ dev->id :
+ object_get_typename(con->device),
+ con->head);
+ } else {
+ return g_strdup_printf("%s", dev->id ?
+ dev->id :
+ object_get_typename(con->device));
+ }
}
return g_strdup("VGA");
} else {