Marc-André Lureau
b97a76d035
ui/vc: move cursor_timer initialization to QemuTextConsole class
...
The timer is only relevant when a text console exists.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-27-marcandre.lureau@redhat.com >
2023-09-04 13:53:03 +04:00
Marc-André Lureau
cfde05d15b
ui/console: allocate ui_timer in QemuConsole
...
Although at this point only QemuGraphicConsole have hw_ops that
implements ui_info() callback, it makes sense to keep the code in the
base QemuConsole, to simplify conditions for the caller.
As of now, the code didn't reach a NULL timer because dpy_set_ui_info()
checks if dpy_ui_info_supported() (hw_ops->ui_info != NULL), which is
false for text_console_ops. This is a bit fragile, let simply allocate
and free the timer in the base class.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-26-marcandre.lureau@redhat.com >
2023-09-04 13:52:48 +04:00
Marc-André Lureau
7fa4b8041b
ui/console: update the head from unused QemuConsole
...
When recycling unused QemuConsole, we should still set the associated
head number for correct information and lookups.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-25-marcandre.lureau@redhat.com >
2023-09-04 13:52:16 +04:00
Marc-André Lureau
f9411aaebd
ui/console: specialize console_lookup_unused()
...
graphics_console_init() is expected to return a graphic console.
The function doesn't need to be exported.
We are going to specialize further QemuGraphicConsole & QemuTextConsole.
The two will not be interchangeable anymore.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-24-marcandre.lureau@redhat.com >
2023-09-04 13:48:31 +04:00
Marc-André Lureau
34b7751574
ui/console: remove new_console()
...
The constructor helper isn't of much used now.
"head" is only specified for graphic console (and default to 0), and we
are going to move it to QemuGraphicConsole next.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-23-marcandre.lureau@redhat.com >
2023-09-04 13:48:19 +04:00
Marc-André Lureau
ba0ec5c293
ui/console: register the console from qemu_console_init()
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-22-marcandre.lureau@redhat.com >
2023-09-04 13:48:10 +04:00
Marc-André Lureau
c105d60f7f
ui/console: instantiate a specific console type
...
This will allow to move code/data to the specific console types.
Replace console_type_t with object type check.
QemuConsole can be abstract.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-21-marcandre.lureau@redhat.com >
2023-09-04 13:47:58 +04:00
Marc-André Lureau
b208f745a8
ui/console: introduce different console objects
...
Boilerplate code to introduce different object types for the different
console types.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-20-marcandre.lureau@redhat.com >
2023-09-04 13:47:39 +04:00
Marc-André Lureau
098d57e7c0
ui/console: change new_console() to use object initialization
...
Object construction should be done in respective object instance and
class handlers.
Introduce qemu_console_register() to split out the registration logic.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-19-marcandre.lureau@redhat.com >
2023-09-04 13:47:36 +04:00
Marc-André Lureau
e265917c77
ui/console: use OBJECT_DEFINE_TYPE for QemuConsole
...
The following patch will move some object initialization to the
corresponding handlers.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-18-marcandre.lureau@redhat.com >
2023-09-04 13:38:06 +04:00
Marc-André Lureau
6505fd8d23
ui/vc: move VCCharDev specific fields out of QemuConsole
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-17-marcandre.lureau@redhat.com >
2023-09-04 13:37:48 +04:00
Marc-André Lureau
4c946b7f97
ui/vc: pass VCCharDev to VC-specific functions
...
Even though they actually use more of QemuConsole at this point, it
makes it clearer those functions are only used from the chardev
implementation.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-16-marcandre.lureau@redhat.com >
2023-09-04 13:37:11 +04:00
Marc-André Lureau
d7c634aadf
ui/vc: fold text_update_xy()
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-15-marcandre.lureau@redhat.com >
2023-09-04 13:36:42 +04:00
Marc-André Lureau
3be82c6a3a
ui/vc: replace variable with static text attributes default
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-14-marcandre.lureau@redhat.com >
2023-09-04 13:36:32 +04:00
Marc-André Lureau
8c63667b25
ui/vc: move VCChardev declaration at the top
...
To allow easier refactoring in following patches.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-13-marcandre.lureau@redhat.com >
2023-09-04 12:38:20 +04:00
Marc-André Lureau
6657e41cde
ui/vc: VC always has a DisplayState now
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-12-marcandre.lureau@redhat.com >
2023-09-04 12:37:59 +04:00
Marc-André Lureau
dc6984bdc3
ui/console: new_console() cannot fail
...
There is no code path that could allow a NULL return there.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-11-marcandre.lureau@redhat.com >
2023-09-04 12:37:54 +04:00
Marc-André Lureau
2fd319cff0
ui/console: get the DisplayState from new_console()
...
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 >
2023-09-04 12:37:45 +04:00
Marc-André Lureau and Patchew Applier
cbcf0fa8fd
ui/console: drop have_gfx
...
All usages have been removed.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-9-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau and Patchew Applier
bc9b8bc93c
ui/console: call dpy_gfx_update() regardless of have_gfx
...
The function will handle the case when no listeners are gfx, without
extra meaningful cost.
This allows to get rid of DisplayState dependency in VC implementation.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-8-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau and Patchew Applier
074b24094f
ui/console: console_select() regardless of have_gfx
...
Even if we don't have a gfx listener, we should call
displaychangelistener_display_console() which handle that case correctly.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-7-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau and Patchew Applier
177422789b
ui/vc: drop have_text
...
If there are no "text" listener, the callback will simply be ignored.
The rest of text handling can be done cheaply.
This allows to remove some dependency on DisplayState from VC
implementation.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-6-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau and Patchew Applier
f1f7a1e2cf
ui/vc: replace vc_chr_write() with generic qemu_chr_write()
...
We shouldn't call the callback directly, but use the chardev API, unless
there is a clear reason.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230830093843.3531473-5-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau and Patchew Applier
4f2c765ba6
ui/qmp: move screendump to ui-qmp-cmds.c
...
console.c unit is over-crowded. This code is specific to the handling of
the QMP screendump command, so move it in ui-qmp-cmds.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-4-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Dongwon Kim and Marc-André Lureau
0d0be87659
virtio-gpu: replace the surface with null surface when resetting
...
The primary guest scanout shows the booting screen right after reboot
but additional guest displays (i.e. max_ouptuts > 1) will keep displaying
the old frames until the guest virtio gpu driver gets initialized, which
could cause some confusion. A better way is to to replace the surface with
a place holder that tells the display is not active during the reset of
virtio-gpu device.
And to immediately update the surface with the place holder image after
the switch, displaychangelistener_gfx_switch needs to be called with
'update == TRUE' in dpy_gfx_replace_surface when the new surface is NULL.
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Marc-André Lureau <marcandre.lureau@redhat.com >
Cc: Vivek Kasireddy <vivek.kasireddy@intel.com >
Signed-off-by: Dongwon Kim <dongwon.kim@intel.com >
Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Message-ID: <20230627224451.11739-1-dongwon.kim@intel.com >
2023-07-17 15:20:56 +04:00