diff mbox

[3/8] console: add information retrival wrappers

Message ID 1384926761-9962-4-git-send-email-airlied@gmail.com
State New
Headers show

Commit Message

Dave Airlie Nov. 20, 2013, 5:52 a.m. UTC
From: Dave Airlie <airlied@redhat.com>

We need to know how many graphics consoles are registered in the UI
code so it knows how many windows it should prepare for etc, also
so that it could potentially warn for cases it can't handle.

We also need to know the console index so we can add it to the list.
(maybe we don't).

Signed-off-by: Dave Airlie <airlied@redhat.com>
---
 include/ui/console.h |  3 +++
 ui/console.c         | 12 ++++++++++++
 2 files changed, 15 insertions(+)

Comments

Gerd Hoffmann Nov. 20, 2013, 11:12 a.m. UTC | #1
Hi,

> +int qemu_get_console_index(QemuConsole *con);

Makes sense to have that.  There are other retrival wrappers already
(qemu_console_is_*).  I'd like to see the new one placed next to the
others, and follow the name convention (i.e. use
qemu_console_get_index).

> +int qemu_get_number_graphical_consoles(void);

Hmm, what is bad with qemu_console_is_graphic?  Patch #5 uses it to loop
over the gfx consoles.  As the code doesn't need to know the number of
consoles in advance you can do this instead (like spice):

    for (i = 0;; i++) {
        con = qemu_console_lookup_by_index(i);
        if (!con || !qemu_console_is_graphic(con)) {
            break;
        }
        [ ... ]
    }

cheers,
  Gerd
diff mbox

Patch

diff --git a/include/ui/console.h b/include/ui/console.h
index 5731081..be304fe 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -306,6 +306,9 @@  void qemu_console_copy(QemuConsole *con, int src_x, int src_y,
 DisplaySurface *qemu_console_surface(QemuConsole *con);
 DisplayState *qemu_console_displaystate(QemuConsole *console);
 
+int qemu_get_console_index(QemuConsole *con);
+int qemu_get_number_graphical_consoles(void);
+
 typedef CharDriverState *(VcHandler)(ChardevVC *vc);
 
 CharDriverState *vc_init(ChardevVC *vc);
diff --git a/ui/console.c b/ui/console.c
index c20e336..4248a6f 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -175,6 +175,7 @@  static DisplayState *display_state;
 static QemuConsole *active_console;
 static QemuConsole *consoles[MAX_CONSOLES];
 static int nb_consoles = 0;
+static int nb_graphics_consoles = 0;
 
 static void text_console_do_init(CharDriverState *chr, DisplayState *ds);
 static void dpy_refresh(DisplayState *s);
@@ -1247,6 +1248,7 @@  static QemuConsole *new_console(DisplayState *ds, console_type_t console_type)
         s->index = i;
         consoles[i] = s;
         nb_consoles++;
+        nb_graphics_consoles++;
     }
     return s;
 }
@@ -1873,6 +1875,16 @@  DisplayState *qemu_console_displaystate(QemuConsole *console)
     return console->ds;
 }
 
+int qemu_get_console_index(QemuConsole *console)
+{
+    return console->index;
+}
+
+int qemu_get_number_graphical_consoles(void)
+{
+    return nb_graphics_consoles;
+}
+
 PixelFormat qemu_different_endianness_pixelformat(int bpp)
 {
     PixelFormat pf;