[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 09/67] ui/console: get the DisplayState from new_console()
From: |
marcandre . lureau |
Subject: |
[PATCH 09/67] ui/console: get the DisplayState from new_console() |
Date: |
Wed, 30 Aug 2023 13:37:43 +0400 |
From: Marc-André Lureau <marcandre.lureau@redhat.com>
There is no obvious reason to defer text console initialization. We can
simply take the global display state in new_console().
This simplify somewhat the code to allow moving the VC to a separate unit.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
ui/console.c | 26 ++++++++------------------
1 file changed, 8 insertions(+), 18 deletions(-)
diff --git a/ui/console.c b/ui/console.c
index fc1836782d..ba79c735b7 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -143,7 +143,7 @@ static QTAILQ_HEAD(, QemuConsole) consoles =
static bool cursor_visible_phase;
static QEMUTimer *cursor_timer;
-static void text_console_do_init(Chardev *chr, DisplayState *ds);
+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);
@@ -1249,9 +1249,10 @@ static void text_console_update(void *opaque,
console_ch_t *chardata)
}
}
-static QemuConsole *new_console(DisplayState *ds, console_type_t console_type,
+static QemuConsole *new_console(console_type_t console_type,
uint32_t head)
{
+ DisplayState *ds = get_alloc_displaystate();
Object *obj;
QemuConsole *s;
int i;
@@ -2049,13 +2050,7 @@ DisplayState *init_displaystate(void)
gchar *name;
QemuConsole *con;
- get_alloc_displaystate();
QTAILQ_FOREACH(con, &consoles, next) {
- if (con->console_type != GRAPHIC_CONSOLE &&
- con->ds == NULL) {
- text_console_do_init(con->chr, display_state);
- }
-
/* Hook up into the qom tree here (not in new_console()), once
* all QemuConsoles are created and the order / numbering
* doesn't change any more */
@@ -2085,10 +2080,8 @@ QemuConsole *graphic_console_init(DeviceState *dev,
uint32_t head,
int width = 640;
int height = 480;
QemuConsole *s;
- DisplayState *ds;
DisplaySurface *surface;
- ds = get_alloc_displaystate();
s = qemu_console_lookup_unused();
if (s) {
trace_console_gfx_reuse(s->index);
@@ -2096,7 +2089,7 @@ QemuConsole *graphic_console_init(DeviceState *dev,
uint32_t head,
height = qemu_console_get_height(s, 0);
} else {
trace_console_gfx_new();
- s = new_console(ds, GRAPHIC_CONSOLE, head);
+ s = new_console(GRAPHIC_CONSOLE, head);
s->ui_timer = timer_new_ms(QEMU_CLOCK_REALTIME,
dpy_set_ui_info_timer, s);
}
@@ -2405,7 +2398,7 @@ static const GraphicHwOps text_console_ops = {
.text_update = text_console_update,
};
-static void text_console_do_init(Chardev *chr, DisplayState *ds)
+static void text_console_do_init(Chardev *chr)
{
VCChardev *drv = VC_CHARDEV(chr);
QemuConsole *s = drv->console;
@@ -2413,7 +2406,6 @@ static void text_console_do_init(Chardev *chr,
DisplayState *ds)
int g_height = 24 * FONT_HEIGHT;
fifo8_create(&s->out_fifo, 16);
- s->ds = ds;
s->y_displayed = 0;
s->y_base = 0;
@@ -2482,9 +2474,9 @@ static void vc_chr_open(Chardev *chr,
trace_console_txt_new(width, height);
if (width == 0 || height == 0) {
- s = new_console(NULL, TEXT_CONSOLE, 0);
+ s = new_console(TEXT_CONSOLE, 0);
} else {
- s = new_console(NULL, TEXT_CONSOLE_FIXED_SIZE, 0);
+ s = new_console(TEXT_CONSOLE_FIXED_SIZE, 0);
s->scanout.kind = SCANOUT_SURFACE;
s->surface = qemu_create_displaysurface(width, height);
}
@@ -2497,9 +2489,7 @@ static void vc_chr_open(Chardev *chr,
s->chr = chr;
drv->console = s;
- if (display_state) {
- text_console_do_init(chr, display_state);
- }
+ text_console_do_init(chr);
/* console/chardev init sometimes completes elsewhere in a 2nd
* stage, so defer OPENED events until they are fully initialized
--
2.41.0
- Re: [PATCH 04/67] ui/vc: replace vc_chr_write() with generic qemu_chr_write(), (continued)
- [PATCH 05/67] ui/vc: drop have_text, marcandre . lureau, 2023/08/30
- [PATCH 06/67] ui/console: console_select() regardless of have_gfx, marcandre . lureau, 2023/08/30
- [PATCH 07/67] ui/console: call dpy_gfx_update() regardless of have_gfx, marcandre . lureau, 2023/08/30
- [PATCH 08/67] ui/console: drop have_gfx, marcandre . lureau, 2023/08/30
- [PATCH 09/67] ui/console: get the DisplayState from new_console(),
marcandre . lureau <=
- [PATCH 10/67] ui/console: new_console() cannot fail, marcandre . lureau, 2023/08/30
- [PATCH 11/67] ui/vc: VC always has a DisplayState now, marcandre . lureau, 2023/08/30
- [PATCH 12/67] ui/vc: move VCChardev declaration at the top, marcandre . lureau, 2023/08/30
- [PATCH 13/67] ui/vc: replace variable with static text attributes default, marcandre . lureau, 2023/08/30
- [PATCH 14/67] ui/vc: fold text_update_xy(), marcandre . lureau, 2023/08/30
- [PATCH 15/67] ui/vc: pass VCCharDev to VC-specific functions, marcandre . lureau, 2023/08/30