diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2023-08-30 13:38:22 +0400 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2023-09-12 10:37:02 +0400 |
commit | f7ce755df8102515aea0ba0e1f7414a6b4ed7403 (patch) | |
tree | d3378ded0bba03180bc0af1b3690cadc7aa0c7de /ui | |
parent | ff174c67dbe29ee2792cc020e077a0fff8af501c (diff) | |
download | qemu-f7ce755df8102515aea0ba0e1f7414a6b4ed7403.zip qemu-f7ce755df8102515aea0ba0e1f7414a6b4ed7403.tar.gz qemu-f7ce755df8102515aea0ba0e1f7414a6b4ed7403.tar.bz2 |
ui/vc: preliminary QemuTextConsole changes before split
Those changes will help to split console.c unit in the following commit.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Diffstat (limited to 'ui')
-rw-r--r-- | ui/console.c | 52 |
1 files changed, 35 insertions, 17 deletions
diff --git a/ui/console.c b/ui/console.c index 4ff9f8b..d9ac371 100644 --- a/ui/console.c +++ b/ui/console.c @@ -174,7 +174,7 @@ static QEMUTimer *cursor_timer; static void dpy_refresh(DisplayState *s); static DisplayState *get_alloc_displaystate(void); -static void text_console_update_cursor(void *opaque); +static void qemu_text_console_update_cursor(void *opaque); static bool displaychangelistener_has_dmabuf(DisplayChangeListener *dcl); static bool console_compatible_with(QemuConsole *con, DisplayChangeListener *dcl, Error **errp); @@ -1065,6 +1065,13 @@ static void displaychangelistener_display_console(DisplayChangeListener *dcl, } } +static void +qemu_text_console_select(QemuTextConsole *c) +{ + dpy_text_resize(QEMU_CONSOLE(c), c->width, c->height); + qemu_text_console_update_cursor(NULL); +} + void console_select(unsigned int index) { DisplayChangeListener *dcl; @@ -1084,8 +1091,7 @@ void console_select(unsigned int index) } if (QEMU_IS_TEXT_CONSOLE(s)) { - dpy_text_resize(s, QEMU_TEXT_CONSOLE(s)->width, QEMU_TEXT_CONSOLE(s)->height); - text_console_update_cursor(NULL); + qemu_text_console_select(QEMU_TEXT_CONSOLE(s)); } } } @@ -1135,19 +1141,12 @@ static void kbd_send_chars(QemuTextConsole *s) } /* called when an ascii key is pressed */ -void qemu_text_console_put_keysym(QemuTextConsole *s, int keysym) +static void qemu_text_console_handle_keysym(QemuTextConsole *s, int keysym) { uint8_t buf[16], *q; int c; uint32_t num_free; - if (!s) { - if (!QEMU_IS_TEXT_CONSOLE(active_console)) { - return; - } - s = QEMU_TEXT_CONSOLE(active_console); - } - switch(keysym) { case QEMU_KEY_CTRL_UP: console_scroll(s, -1); @@ -1192,6 +1191,18 @@ void qemu_text_console_put_keysym(QemuTextConsole *s, int keysym) } } +void qemu_text_console_put_keysym(QemuTextConsole *s, int keysym) +{ + if (!s) { + if (!QEMU_IS_TEXT_CONSOLE(active_console)) { + return; + } + s = QEMU_TEXT_CONSOLE(active_console); + } + + qemu_text_console_handle_keysym(s, keysym); +} + static const int qcode_to_keysym[Q_KEY_CODE__MAX] = { [Q_KEY_CODE_UP] = QEMU_KEY_UP, [Q_KEY_CODE_DOWN] = QEMU_KEY_DOWN, @@ -1395,7 +1406,7 @@ qemu_text_console_class_init(ObjectClass *oc, void *data) { if (!cursor_timer) { cursor_timer = timer_new_ms(QEMU_CLOCK_REALTIME, - text_console_update_cursor, NULL); + qemu_text_console_update_cursor, NULL); } } @@ -1701,7 +1712,7 @@ void register_displaychangelistener(DisplayChangeListener *dcl) if (QEMU_IS_GRAPHIC_CONSOLE(con)) { dcl_set_graphic_cursor(dcl, QEMU_GRAPHIC_CONSOLE(con)); } - text_console_update_cursor(NULL); + qemu_text_console_update_cursor(NULL); } void update_displaychangelistener(DisplayChangeListener *dcl, @@ -2388,6 +2399,13 @@ bool qemu_console_is_multihead(DeviceState *dev) return false; } + +static const char * +qemu_text_console_get_label(QemuTextConsole *c) +{ + return c->chr ? c->chr->label : NULL; +} + char *qemu_console_get_label(QemuConsole *con) { if (QEMU_IS_GRAPHIC_CONSOLE(con)) { @@ -2411,9 +2429,9 @@ char *qemu_console_get_label(QemuConsole *con) } return g_strdup("VGA"); } else if (QEMU_IS_TEXT_CONSOLE(con)) { - QemuTextConsole *c = QEMU_TEXT_CONSOLE(con); - if (c->chr && c->chr->label) { - return g_strdup(c->chr->label); + const char *label = qemu_text_console_get_label(QEMU_TEXT_CONSOLE(con)); + if (label) { + return g_strdup(label); } } @@ -2513,7 +2531,7 @@ int qemu_invalidate_text_consoles(void) return count; } -static void text_console_update_cursor(void *opaque) +static void qemu_text_console_update_cursor(void *opaque) { cursor_visible_phase = !cursor_visible_phase; |