From: Marc-André Lureau Date: Mon, 8 Jun 2026 21:10:33 +0000 (+0400) Subject: hw/arm: keep QemuInputHandlerState in musicpal X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4d1f3ca6dfd3e8fd2fde997ece0c20f7d9aa4da0;p=thirdparty%2Fqemu.git hw/arm: keep QemuInputHandlerState in musicpal Track the input handled state, and dispose it on unrealize. Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Marc-André Lureau --- 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 = {