Skip to content

Commit

Permalink
ui/console: get the DisplayState from new_console()
Browse files Browse the repository at this point in the history
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>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20230830093843.3531473-10-marcandre.lureau@redhat.com>
  • Loading branch information
elmarco committed Sep 4, 2023
1 parent cbcf0fa commit 2fd319c
Showing 1 changed file with 8 additions and 19 deletions.
27 changes: 8 additions & 19 deletions ui/console.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -1249,9 +1249,9 @@ static void text_console_update(void *opaque, console_ch_t *chardata)
}
}

static QemuConsole *new_console(DisplayState *ds, console_type_t console_type,
uint32_t head)
static QemuConsole *new_console(console_type_t console_type, uint32_t head)
{
DisplayState *ds = get_alloc_displaystate();
Object *obj;
QemuConsole *s;
int i;
Expand Down Expand Up @@ -2049,13 +2049,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 */
Expand Down Expand Up @@ -2085,18 +2079,16 @@ 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);
width = qemu_console_get_width(s, 0);
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);
}
Expand Down Expand Up @@ -2405,15 +2397,14 @@ 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;
int g_width = 80 * FONT_WIDTH;
int g_height = 24 * FONT_HEIGHT;

fifo8_create(&s->out_fifo, 16);
s->ds = ds;

s->y_displayed = 0;
s->y_base = 0;
Expand Down Expand Up @@ -2482,9 +2473,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);
}
Expand All @@ -2497,9 +2488,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
Expand Down

0 comments on commit 2fd319c

Please sign in to comment.