Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
ui/vc: fold text_console_do_init() in vc_chr_open()
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230830093843.3531473-31-marcandre.lureau@redhat.com>
  • Loading branch information
elmarco committed Sep 4, 2023
1 parent 58d5870 commit 98ee9da
Showing 1 changed file with 31 additions and 49 deletions.
80 changes: 31 additions & 49 deletions ui/console.c
Expand Up @@ -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);
Expand Down Expand Up @@ -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,
Expand All @@ -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;
Expand All @@ -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)
Expand Down

0 comments on commit 98ee9da

Please sign in to comment.