On 2026/05/29 20:16, Marc-André Lureau wrote:
Add dbus_cleanup() to unparent the D-Bus display object, ensuring
proper teardown before user_creatable_cleanup() runs.

"[PATCH 07/32] ui/dbus: remove mouse handler on dispose" removes the mouse handler, but the LED event handler still remains.

Regards,
Akihiko Odaki


Signed-off-by: Marc-André Lureau <[email protected]>
---
  ui/dbus-console.c |  3 +++
  ui/dbus.c         | 13 +++++++++++++
  2 files changed, 16 insertions(+)

diff --git a/ui/dbus-console.c b/ui/dbus-console.c
index 0813a08f85e..0048951a7ab 100644
--- a/ui/dbus-console.c
+++ b/ui/dbus-console.c
@@ -151,6 +151,9 @@ dbus_display_console_dispose(GObject *object)
      DBusDisplayConsole *ddc = DBUS_DISPLAY_CONSOLE(object);
qemu_console_unregister_listener(&ddc->dcl);
+    if (ddc->dcl.con) {
+        qemu_console_set_display_gl_ctx(ddc->dcl.con, NULL);
+    }
      qemu_remove_mouse_mode_change_notifier(&ddc->mouse_mode_notifier);
      g_clear_object(&ddc->iface_touch);
      g_clear_object(&ddc->iface_mouse);
diff --git a/ui/dbus.c b/ui/dbus.c
index e02a94df2f3..b23cb44c535 100644
--- a/ui/dbus.c
+++ b/ui/dbus.c
@@ -615,10 +615,23 @@ static const TypeInfo dbus_display_info = {
      }
  };
+static void
+dbus_cleanup(void)
+{
+    Object *o;
+
+    o = object_resolve_path_component(object_get_objects_root(),
+                                      "dbus-display");
+    if (o) {
+        object_unparent(o);
+    }
+}
+
  static QemuDisplay qemu_display_dbus = {
      .type       = DISPLAY_TYPE_DBUS,
      .early_init = early_dbus_init,
      .init       = dbus_init,
+    .cleanup    = dbus_cleanup,
      .vc         = "vc",
  };


Reply via email to