All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <aliguori@us.ibm.com>
To: Gerd Hoffmann <kraxel@redhat.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 22/23] gtk: show a window for each graphical QemuConsole
Date: Wed, 20 Mar 2013 08:04:32 -0500	[thread overview]
Message-ID: <87d2uu6x3z.fsf@codemonkey.ws> (raw)
In-Reply-To: <1363772625-9182-23-git-send-email-kraxel@redhat.com>

Gerd Hoffmann <kraxel@redhat.com> writes:

> Multihead support:  For each graphical console we'll create a gtk
> window, so with multiple graphics cards installed you get a gtk window
> for each.  vte tabs are attached to the console #0 window.

This is neat but I'm not sure if the user experience is right.

Each window would have independent grab.  Each window would have
independent full screen.

I'm not sure there's an obviously right solution but it's worth
discussing.  I do like the idea of having two windows but perhaps we
should make the second window have a no menu bar with a title that
indicates that it's a secondary display?

Regards,

Anthony Liguori

> ---
>  ui/gtk.c |   40 +++++++++++++++++++++++++++-------------
>  1 file changed, 27 insertions(+), 13 deletions(-)
>
> diff --git a/ui/gtk.c b/ui/gtk.c
> index 512e974..1c86054 100644
> --- a/ui/gtk.c
> +++ b/ui/gtk.c
> @@ -159,8 +159,6 @@ typedef struct GtkDisplayState
>      bool external_pause_update;
>  } GtkDisplayState;
>  
> -static GtkDisplayState *global_state;
> -
>  /** Utility Functions **/
>  
>  static bool gd_is_grab_active(GtkDisplayState *s)
> @@ -1210,7 +1208,7 @@ static void gd_connect_signals(GtkDisplayState *s)
>                       G_CALLBACK(gd_leave_event), s);
>  }
>  
> -static void gd_create_menus(GtkDisplayState *s)
> +static void gd_create_menus(GtkDisplayState *s, bool vtetabs)
>  {
>      GtkStockItem item;
>      GtkAccelGroup *accel_group;
> @@ -1302,11 +1300,13 @@ static void gd_create_menus(GtkDisplayState *s)
>      gtk_accel_map_add_entry("<QEMU>/View/VGA", GDK_KEY_1, GDK_CONTROL_MASK | GDK_MOD1_MASK);
>      gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), s->vga_item);
>  
> -    for (i = 0; i < nb_vcs; i++) {
> -        VirtualConsole *vc = &s->vc[i];
> +    if (vtetabs) {
> +        for (i = 0; i < nb_vcs; i++) {
> +            VirtualConsole *vc = &s->vc[i];
>  
> -        group = gd_vc_init(s, vc, i, group);
> -        s->nb_vcs++;
> +            group = gd_vc_init(s, vc, i, group);
> +            s->nb_vcs++;
> +        }
>      }
>  
>      separator = gtk_separator_menu_item_new();
> @@ -1336,14 +1336,13 @@ static const DisplayChangeListenerOps dcl_ops = {
>      .dpy_cursor_define = gd_cursor_define,
>  };
>  
> -void gtk_display_init(DisplayState *ds)
> +static void gtk_display_init_one(DisplayState *ds, QemuConsole *con,
> +                                 bool vtetabs)
>  {
>      GtkDisplayState *s = g_malloc0(sizeof(*s));
>  
> -    gtk_init(NULL, NULL);
> -
>      s->dcl.ops = &dcl_ops;
> -    s->dcl.con = qemu_console_lookup_by_index(0);
> +    s->dcl.con = con;
>  
>      s->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
>  #if GTK_CHECK_VERSION(3, 2, 0)
> @@ -1371,7 +1370,7 @@ void gtk_display_init(DisplayState *ds)
>  
>      gtk_notebook_append_page(GTK_NOTEBOOK(s->notebook), s->drawing_area, gtk_label_new("VGA"));
>  
> -    gd_create_menus(s);
> +    gd_create_menus(s, vtetabs);
>  
>      gd_connect_signals(s);
>  
> @@ -1400,6 +1399,21 @@ void gtk_display_init(DisplayState *ds)
>      gtk_widget_show_all(s->window);
>  
>      register_displaychangelistener(ds, &s->dcl);
> +}
>  
> -    global_state = s;
> +void gtk_display_init(DisplayState *ds)
> +{
> +    QemuConsole *con;
> +    int i = 0;
> +
> +    gtk_init(NULL, NULL);
> +
> +    con = qemu_console_lookup_by_index(i++);
> +    gtk_display_init_one(ds, con, true);
> +    while ((con = qemu_console_lookup_by_index(i++)) != NULL) {
> +        if (!qemu_console_is_graphic(con)) {
> +            break;
> +        }
> +        gtk_display_init_one(ds, con, false);
> +    }
>  }
> -- 
> 1.7.9.7

  reply	other threads:[~2013-03-20 13:05 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-20  9:43 [Qemu-devel] [PATCH v2 00/23] console: overhaul continued Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 01/23] exynos4210_fimd.c: fix display resize bug introduced after console revamp Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 02/23] hw/vmware_vga.c: fix screen " Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 03/23] pixman: add qemu_pixman_color() Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 04/23] pixman: render vgafont glyphs into pixman images Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 05/23] console: use pixman for fill+blit Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 06/23] console: use pixman for font rendering Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 07/23] console: switch color_table_rgb to pixman_color_t Gerd Hoffmann
     [not found]   ` <514A01CD.1020106@gmail.com>
2013-03-20 19:25     ` Igor Mitsyanko
2013-03-21  4:49   ` Søren Sandmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 08/23] console: add trace events Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 09/23] console: displaystate init revamp Gerd Hoffmann
     [not found]   ` <514A0478.3090908@gmail.com>
2013-03-20 19:27     ` Igor Mitsyanko
2013-03-21  7:42       ` Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 10/23] console: rename vga_hw_*, add QemuConsole param Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 11/23] console: give each QemuConsole its own DisplaySurface Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 12/23] console: simplify screendump Gerd Hoffmann
2013-03-20  9:43   ` Gerd Hoffmann
     [not found]   ` <514A08C4.9040103@gmail.com>
2013-03-20 19:28     ` [Qemu-devel] " Igor Mitsyanko
2013-03-20  9:43 ` [Qemu-devel] [PATCH 13/23] console: zap g_width + g_height Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 14/23] console: move gui_update+gui_setup_refresh from vl.c into console.c Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 15/23] console: make DisplayState private to console.c Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 16/23] console: add GraphicHwOps Gerd Hoffmann
2013-03-20  9:43   ` Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 17/23] console: gui timer fixes Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 18/23] xen: re-enable refresh interval reporting for xenfb Gerd Hoffmann
2013-03-20  9:43   ` Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 19/23] console: add qemu_console_is_* Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 20/23] console: allow pinning displaychangelisteners to consoles Gerd Hoffmann
2013-03-20  9:43 ` [Qemu-devel] [PATCH 21/23] gtk: custom cursor support Gerd Hoffmann
2013-03-20 12:59   ` Anthony Liguori
2013-03-20 15:15     ` Gerd Hoffmann
2013-03-20 17:13       ` Anthony Liguori
2013-03-20  9:43 ` [Qemu-devel] [PATCH 22/23] gtk: show a window for each graphical QemuConsole Gerd Hoffmann
2013-03-20 13:04   ` Anthony Liguori [this message]
2013-03-20 15:22     ` Gerd Hoffmann
     [not found]   ` <514A0C75.4070802@gmail.com>
2013-03-20 19:29     ` Igor Mitsyanko
2013-03-20 20:06   ` Peter Maydell
2013-03-21  7:52     ` Gerd Hoffmann
2013-03-21  8:51       ` Gerd Hoffmann
2013-03-21 10:55         ` Peter Maydell
2013-03-21 14:43           ` Gerd Hoffmann
2013-03-21 18:25             ` Anthony Liguori
2013-03-22 11:19               ` Peter Maydell
2013-03-20  9:43 ` [Qemu-devel] [PATCH 23/23] qxl: register QemuConsole for secondary cards Gerd Hoffmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87d2uu6x3z.fsf@codemonkey.ws \
    --to=aliguori@us.ibm.com \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.