@samitouri / QOSamiQemu / commits / 4d1f3ca6df

hw/arm: keep QemuInputHandlerState in musicpal

Track the input handled state, and dispose it on unrealize. Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>

Marc-André Lureau committed Jun 9, 2026 at 01:10 UTC 4d1f3ca6dfd3e8fd2fde997ece0c20f7d9aa4da0
1 file changed +12 -1
hw/arm/musicpal.c
+12 -1
@@ -1062,6 +1062,7 @@ struct musicpal_key_state {
1062 SysBusDevice parent_obj;
1063 /*< public >*/
1064
1065 + QemuInputHandlerState *hs;
1066 uint32_t pressed_keys;
1067 qemu_irq out[8];
1068 };
@@ -1158,7 +1159,16 @@ static const QemuInputHandler musicpal_key_handler = {
1159
1160 static void musicpal_key_realize(DeviceState *dev, Error **errp)
1161 {
1161 - qemu_input_handler_register(dev, &musicpal_key_handler);
1162 + musicpal_key_state *s = MUSICPAL_KEY(dev);
1163 +
1164 + s->hs = qemu_input_handler_register(dev, &musicpal_key_handler);
1165 +}
1166 +
1167 +static void musicpal_key_unrealize(DeviceState *dev)
1168 +{
1169 + musicpal_key_state *s = MUSICPAL_KEY(dev);
1170 +
1171 + g_clear_pointer(&s->hs, qemu_input_handler_unregister);
1172 }
1173
1174 static const VMStateDescription musicpal_key_vmsd = {
@@ -1177,6 +1187,7 @@ static void musicpal_key_class_init(ObjectClass *klass, const void *data)
1187
1188 dc->vmsd = &musicpal_key_vmsd;
1189 dc->realize = musicpal_key_realize;
1190 + dc->unrealize = musicpal_key_unrealize;
1191 }
1192
1193 static const TypeInfo musicpal_key_info = {