Hi,
This series improves handling of dynamic consoles in ui/ (commit
9588d67e72 "console: minimal hotplug suport" added basic unplug &
replug). It allows for better hotplug of vfio-pci display devices or
bochs-display (the other device supporting hotplug today), with GTK and
D-Bus backends.
As usual, the first patches are various preliminary cleanups and fixes I
hit while developping the rest, they could be merged earlier. I improved
the display cleanup to replace the scattered atexit() handler, making
leaks more visible to sanitizers.
Then console ADDED/REMOVED notifications are added, so display backends
can react to hotplug. The GTK code is rework a bit to allow easier
hotplug events handling. Finally, D-Bus supports is implemented with a
qtest to exercise it.
thanks
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
Marc-André Lureau (32):
ui/gtk: fix bad widget realize on non-GFX VC
build-sys: build with -fno-omit-frame-pointer with ASAN
irq: add per-IRQ observer to fix qemu_irq_intercept_in leak
scripts/lsan_suppressions: suppress fontconfig leaks
vfio/pci: close display console during unrealize, not finalize
glib-compat: add fallback for g_clear_fd/g_autofd
ui/dbus: remove mouse handler on dispose
ui/qmp: keep a reference of console across yield
ui: stop ui timer when closing
ui/console: init gl_unblock_timer in qemu_console_init
ui/spice: remove dead spice_displays
ui/spice: add cleanup on shutdown
ui: add display cleanup infrastructure
ui/curses: implement display cleanup
ui/sdl2: implement display cleanup
ui/spice-app: implement display cleanup
ui/egl: implement display and EGL cleanup
ui/cocoa: implement display cleanup
ui/dbus: implement display cleanup
ui/gtk: implement display cleanup
ui/console: add console event notifier infrastructure
ui/console: fire console ADDED/REMOVED notifications
ui/console-vc: fire ADDED/REMOVED notifications
ui/gtk: convert VirtualConsole storage from fixed array to GPtrArray
ui/gtk: move global display settings out of per-console init
ui/gtk: fix tab re-insertion order on window close
ui/gtk: centralize console menu and shortcut management
ui/gtk: handle console hotplug/unplug events
ui/console: register console in QOM tree dynamically
ui/console: unregister console from QOM tree on close
ui/dbus: handle console hotplug/unplug events
tests/qtest: add D-Bus display hotplug test
meson.build | 2 +
hw/vfio/pci.h | 1 +
include/glib-compat.h | 29 ++++
include/hw/core/irq.h | 1 +
include/ui/console.h | 20 +++
include/ui/egl-helpers.h | 1 +
include/ui/gtk.h | 6 +-
include/ui/qemu-spice-module.h | 1 +
include/ui/qemu-spice.h | 9 +-
ui/dbus.h | 3 +
hw/core/irq.c | 10 +-
hw/vfio/display.c | 30 ++--
hw/vfio/pci.c | 1 +
system/qtest.c | 3 -
system/runstate.c | 4 +-
tests/qtest/dbus-display-test.c | 101 ++++++++++-
ui/console-vc.c | 13 ++
ui/console.c | 71 +++++++-
ui/curses.c | 17 +-
ui/dbus-console.c | 9 +
ui/dbus.c | 106 ++++++++++--
ui/egl-headless.c | 31 ++++
ui/egl-helpers.c | 19 +++
ui/gtk-clipboard.c | 15 ++
ui/gtk.c | 369 +++++++++++++++++++++++++++++++---------
ui/sdl2.c | 23 ++-
ui/spice-app.c | 10 +-
ui/spice-core.c | 25 ++-
ui/spice-display.c | 52 ++++++
ui/spice-input.c | 52 ++++--
ui/spice-module.c | 5 +
ui/ui-qmp-cmds.c | 3 +
scripts/lsan_suppressions.txt | 15 +-
ui/cocoa.m | 19 ++-
ui/meson.build | 4 +-
35 files changed, 901 insertions(+), 179 deletions(-)
---
base-commit: 2db91528542672cf0db78b3f2cc0e22b36302b38
change-id: 20260529-b4-ui-909bfa695735
Best regards,
--
Marc-André Lureau <marcandre.lureau@redhat.com>