On Feb 17, 2015, at 4:44 AM, Gerd Hoffmann wrote: > Add a new function to get a nice label for a given QemuConsole. > Drop the labeling code in gtk.c and use the new function instead. > > Signed-off-by: Gerd Hoffmann <kra...@redhat.com> > --- > include/ui/console.h | 1 + > ui/console.c | 15 +++++++++++++++ > ui/gtk.c | 12 +----------- > 3 files changed, 17 insertions(+), 11 deletions(-) > > diff --git a/include/ui/console.h b/include/ui/console.h > index 8a4d671..d4439a5 100644 > --- a/include/ui/console.h > +++ b/include/ui/console.h > @@ -309,6 +309,7 @@ QemuConsole *qemu_console_lookup_by_device(DeviceState > *dev, uint32_t head); > bool qemu_console_is_visible(QemuConsole *con); > bool qemu_console_is_graphic(QemuConsole *con); > bool qemu_console_is_fixedsize(QemuConsole *con); > +char *qemu_console_get_label(QemuConsole *con); > int qemu_console_get_index(QemuConsole *con); > uint32_t qemu_console_get_head(QemuConsole *con); > QemuUIInfo *qemu_console_get_ui_info(QemuConsole *con); > diff --git a/ui/console.c b/ui/console.c > index 87574a7..b64a73e 100644 > --- a/ui/console.c > +++ b/ui/console.c > @@ -1788,6 +1788,21 @@ bool qemu_console_is_fixedsize(QemuConsole *con) > return con && (con->console_type != TEXT_CONSOLE); > } > > +char *qemu_console_get_label(QemuConsole *con) > +{ > + if (con->console_type == GRAPHIC_CONSOLE) { > + if (con->device) { > + return g_strdup(object_get_typename(con->device)); > + } > + return g_strdup("VGA"); > + } else { > + if (con->chr && con->chr->label) { > + return g_strdup(con->chr->label); > + } > + return g_strdup_printf("vc%d", con->index); > + } > +} > + > int qemu_console_get_index(QemuConsole *con) > { > if (con == NULL) { > diff --git a/ui/gtk.c b/ui/gtk.c > index b271ee4..f22d835 100644 > --- a/ui/gtk.c > +++ b/ui/gtk.c > @@ -1702,17 +1702,7 @@ static GSList *gd_vc_gfx_init(GtkDisplayState *s, > VirtualConsole *vc, > QemuConsole *con, int idx, > GSList *group, GtkWidget *view_menu) > { > - Object *obj; > - > - obj = object_property_get_link(OBJECT(con), "device", NULL); > - if (obj) { > - vc->label = g_strdup_printf("%s", object_get_typename(obj)); > - } else if (qemu_console_is_graphic(con)) { > - vc->label = g_strdup_printf("VGA"); > - } else { > - vc->label = g_strdup_printf("vc%d", idx); > - } > - > + vc->label = qemu_console_get_label(con); > vc->s = s; > vc->gfx.scale_x = 1.0; > vc->gfx.scale_y = 1.0; > -- > 1.8.3.1 >
Thanks for this code. Is this how I should display the Serial console? void myDisplaySerialConsole() { QemuConsole *con; char *name; int index = 0; con = qemu_console_lookup_by_index(0); while(con != NULL) { name = qemu_console_get_label(con); /* If we found the console */ if (strstr(name, "Serial")) { console_select(index); break; } index++; con = qemu_console_lookup_by_index(index); } }