diff mbox series

[30/67] ui/vc: fold text_console_do_init() in vc_chr_open()

Message ID 20230830093843.3531473-31-marcandre.lureau@redhat.com
State New
Headers show
Series Make pixman an optional dependency | expand

Commit Message

Marc-André Lureau Aug. 30, 2023, 9:38 a.m. UTC
From: Marc-André Lureau <marcandre.lureau@redhat.com>

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 ui/console.c | 80 ++++++++++++++++++++--------------------------------
 1 file changed, 31 insertions(+), 49 deletions(-)

Comments

Daniel P. Berrangé Sept. 1, 2023, 2:34 p.m. UTC | #1
On Wed, Aug 30, 2023 at 01:38:04PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  ui/console.c | 80 ++++++++++++++++++++--------------------------------
>  1 file changed, 31 insertions(+), 49 deletions(-)

> @@ -2612,12 +2570,36 @@ static void vc_chr_open(Chardev *chr,
>      s->chr = chr;
>      drv->console = s;
>  
> -    text_console_do_init(chr);
> +    fifo8_create(&s->out_fifo, 16);
>  
> -    /* console/chardev init sometimes completes elsewhere in a 2nd
> -     * stage, so defer OPENED events until they are fully initialized
> -     */
> -    *be_opened = false;
> +    s->total_height = DEFAULT_BACKSCROLL;
> +    if (QEMU_CONSOLE(s)->scanout.kind != SCANOUT_SURFACE) {
> +        if (active_console && active_console->scanout.kind == SCANOUT_SURFACE) {
> +            g_width = qemu_console_get_width(active_console, g_width);
> +            g_height = qemu_console_get_height(active_console, g_height);
> +        }
> +        QEMU_CONSOLE(s)->surface = qemu_create_displaysurface(g_width, g_height);
> +        QEMU_CONSOLE(s)->scanout.kind = SCANOUT_SURFACE;
> +    }
> +
> +    QEMU_CONSOLE(s)->hw_ops = &text_console_ops;
> +    QEMU_CONSOLE(s)->hw = s;

It feels like it would be worth having a local variable

"QemuConsole *c = QEMU_CONSOLE(s)"

to replace the many repeated casts.

Appreciate you merely moved existing code though, so either way

  Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
diff mbox series

Patch

diff --git a/ui/console.c b/ui/console.c
index 9d884ba02f..22505d093f 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -187,7 +187,6 @@  static QTAILQ_HEAD(, QemuConsole) consoles =
 static bool cursor_visible_phase;
 static QEMUTimer *cursor_timer;
 
-static void text_console_do_init(Chardev *chr);
 static void dpy_refresh(DisplayState *s);
 static DisplayState *get_alloc_displaystate(void);
 static void text_console_update_cursor_timer(void);
@@ -2534,49 +2533,6 @@  static const GraphicHwOps text_console_ops = {
     .text_update = text_console_update,
 };
 
-static void text_console_do_init(Chardev *chr)
-{
-    VCChardev *drv = VC_CHARDEV(chr);
-    QemuTextConsole *s = drv->console;
-    int g_width = 80 * FONT_WIDTH;
-    int g_height = 24 * FONT_HEIGHT;
-
-    fifo8_create(&s->out_fifo, 16);
-
-    s->y_displayed = 0;
-    s->y_base = 0;
-    s->total_height = DEFAULT_BACKSCROLL;
-    s->x = 0;
-    s->y = 0;
-    if (QEMU_CONSOLE(s)->scanout.kind != SCANOUT_SURFACE) {
-        if (active_console && active_console->scanout.kind == SCANOUT_SURFACE) {
-            g_width = qemu_console_get_width(active_console, g_width);
-            g_height = qemu_console_get_height(active_console, g_height);
-        }
-        QEMU_CONSOLE(s)->surface = qemu_create_displaysurface(g_width, g_height);
-        QEMU_CONSOLE(s)->scanout.kind = SCANOUT_SURFACE;
-    }
-
-    QEMU_CONSOLE(s)->hw_ops = &text_console_ops;
-    QEMU_CONSOLE(s)->hw = s;
-
-    /* set current text attributes to default */
-    drv->t_attrib = TEXT_ATTRIBUTES_DEFAULT;
-    text_console_resize(s);
-
-    if (chr->label) {
-        char *msg;
-
-        drv->t_attrib.bgcol = QEMU_COLOR_BLUE;
-        msg = g_strdup_printf("%s console\r\n", chr->label);
-        qemu_chr_write(chr, (uint8_t *)msg, strlen(msg), true);
-        g_free(msg);
-        drv->t_attrib = TEXT_ATTRIBUTES_DEFAULT;
-    }
-
-    qemu_chr_be_event(chr, CHR_EVENT_OPENED);
-}
-
 static void vc_chr_open(Chardev *chr,
                         ChardevBackend *backend,
                         bool *be_opened,
@@ -2587,6 +2543,8 @@  static void vc_chr_open(Chardev *chr,
     QemuTextConsole *s;
     unsigned width = 0;
     unsigned height = 0;
+    int g_width = 80 * FONT_WIDTH;
+    int g_height = 24 * FONT_HEIGHT;
 
     if (vc->has_width) {
         width = vc->width;
@@ -2612,12 +2570,36 @@  static void vc_chr_open(Chardev *chr,
     s->chr = chr;
     drv->console = s;
 
-    text_console_do_init(chr);
+    fifo8_create(&s->out_fifo, 16);
 
-    /* console/chardev init sometimes completes elsewhere in a 2nd
-     * stage, so defer OPENED events until they are fully initialized
-     */
-    *be_opened = false;
+    s->total_height = DEFAULT_BACKSCROLL;
+    if (QEMU_CONSOLE(s)->scanout.kind != SCANOUT_SURFACE) {
+        if (active_console && active_console->scanout.kind == SCANOUT_SURFACE) {
+            g_width = qemu_console_get_width(active_console, g_width);
+            g_height = qemu_console_get_height(active_console, g_height);
+        }
+        QEMU_CONSOLE(s)->surface = qemu_create_displaysurface(g_width, g_height);
+        QEMU_CONSOLE(s)->scanout.kind = SCANOUT_SURFACE;
+    }
+
+    QEMU_CONSOLE(s)->hw_ops = &text_console_ops;
+    QEMU_CONSOLE(s)->hw = s;
+
+    /* set current text attributes to default */
+    drv->t_attrib = TEXT_ATTRIBUTES_DEFAULT;
+    text_console_resize(s);
+
+    if (chr->label) {
+        char *msg;
+
+        drv->t_attrib.bgcol = QEMU_COLOR_BLUE;
+        msg = g_strdup_printf("%s console\r\n", chr->label);
+        qemu_chr_write(chr, (uint8_t *)msg, strlen(msg), true);
+        g_free(msg);
+        drv->t_attrib = TEXT_ATTRIBUTES_DEFAULT;
+    }
+
+    *be_opened = true;
 }
 
 void qemu_console_resize(QemuConsole *s, int width, int height)