From 4d1f3ca6dfd3e8fd2fde997ece0c20f7d9aa4da0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 9 Jun 2026 01:10:33 +0400 Subject: [PATCH] hw/arm: keep QemuInputHandlerState in musicpal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Track the input handled state, and dispose it on unrealize. Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Marc-André Lureau --- hw/arm/musicpal.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index e2630243eb..69e83bdd97 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -1062,6 +1062,7 @@ struct musicpal_key_state { SysBusDevice parent_obj; /*< public >*/ + QemuInputHandlerState *hs; uint32_t pressed_keys; qemu_irq out[8]; }; @@ -1158,7 +1159,16 @@ static const QemuInputHandler musicpal_key_handler = { static void musicpal_key_realize(DeviceState *dev, Error **errp) { - qemu_input_handler_register(dev, &musicpal_key_handler); + musicpal_key_state *s = MUSICPAL_KEY(dev); + + s->hs = qemu_input_handler_register(dev, &musicpal_key_handler); +} + +static void musicpal_key_unrealize(DeviceState *dev) +{ + musicpal_key_state *s = MUSICPAL_KEY(dev); + + g_clear_pointer(&s->hs, qemu_input_handler_unregister); } static const VMStateDescription musicpal_key_vmsd = { @@ -1177,6 +1187,7 @@ static void musicpal_key_class_init(ObjectClass *klass, const void *data) dc->vmsd = &musicpal_key_vmsd; dc->realize = musicpal_key_realize; + dc->unrealize = musicpal_key_unrealize; } static const TypeInfo musicpal_key_info = {