On 19/07/2021 23.41, Dongwon Kim wrote:
With "detach-all=on" for display, all VCs are detached from the beginning.
This is useful when there are multiple displays assigned to a guest OS.
Can you elaborate? (i.e. why is it useful? Do you just want to avoid having
multiple things opened at startup? Or is there a different reason?)
Signed-off-by: Dongwon Kim <dongwon....@intel.com>
Signed-off-by: Khairul Anuar Romli <khairul.anuar.ro...@intel.com>
---
qapi/ui.json | 4 +++-
ui/gtk.c | 7 +++++++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/qapi/ui.json b/qapi/ui.json
index 1052ca9c38..ff14bb2f46 100644
--- a/qapi/ui.json
+++ b/qapi/ui.json
@@ -1141,6 +1141,7 @@
# @show-cursor: Force showing the mouse cursor (default: off).
# (since: 5.0)
# @gl: Enable OpenGL support (default: off).
+# @detach-all: Detatch all VirtualConsoles from beginning (default: off).
Needs a comment à la "(since: 6.2)" at the end (like the one after
"show-cursor" some lines earlier.
#
# Since: 2.12
#
@@ -1150,7 +1151,8 @@
'*full-screen' : 'bool',
'*window-close' : 'bool',
'*show-cursor' : 'bool',
- '*gl' : 'DisplayGLMode' },
+ '*gl' : 'DisplayGLMode',
+ '*detach-all' : 'bool' },
If this is for GTK only, shouldn't this rather go into DisplayGTK instead?
Or will this be also useful for other display types later?
Thomas
'discriminator' : 'type',
'data' : { 'gtk' : 'DisplayGTK',
'curses' : 'DisplayCurses',
diff --git a/ui/gtk.c b/ui/gtk.c
index ce885d2ca3..a07e5a049e 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -2211,6 +2211,7 @@ static void gtk_display_init(DisplayState *ds,
DisplayOptions *opts)
GdkDisplay *window_display;
GtkIconTheme *theme;
char *dir;
+ int i;
if (!gtkinit) {
fprintf(stderr, "gtk initialization failed\n");
@@ -2290,6 +2291,12 @@ static void gtk_display_init(DisplayState *ds,
DisplayOptions *opts)
gtk_menu_item_activate(GTK_MENU_ITEM(s->grab_on_hover_item));
}
gd_clipboard_init(s);
+
+ if (opts->detach_all) {
+ for (i = 0; i < s->nb_vcs - 1; i++) {
+ gtk_menu_item_activate(GTK_MENU_ITEM(s->untabify_item));
+ }
+ }
}
static void early_gtk_display_init(DisplayOptions *opts)