hw/m68k: keep QemuInputHandlerState in next-kbd
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
44ed8188de963a8739b147471396cc2bc205a827
1 file changed
+10
-1
hw/m68k/next-kbd.c
+10
-1
@@ -65,6 +65,7 @@ typedef struct {
65
struct NextKBDState {
66
SysBusDevice sbd;
67
MemoryRegion mr;
68
+ QemuInputHandlerState *hs;
69
KBDQueue queue;
70
uint16_t shift;
71
};
@@ -304,7 +305,14 @@ static void nextkbd_realize(DeviceState *dev, Error **errp)
305
memory_region_init_io(&s->mr, OBJECT(dev), &kbd_ops, s, "next.kbd", 0x1000);
306
sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->mr);
307
307
- qemu_input_handler_register(dev, &nextkbd_handler);
308
+ s->hs = qemu_input_handler_register(dev, &nextkbd_handler);
309
+}
310
+
311
+static void nextkbd_unrealize(DeviceState *dev)
312
+{
313
+ NextKBDState *s = NEXTKBD(dev);
314
+
315
+ g_clear_pointer(&s->hs, qemu_input_handler_unregister);
316
}
317
318
static const VMStateDescription nextkbd_vmstate = {
@@ -319,6 +327,7 @@ static void nextkbd_class_init(ObjectClass *oc, const void *data)
327
set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
328
dc->vmsd = &nextkbd_vmstate;
329
dc->realize = nextkbd_realize;
330
+ dc->unrealize = nextkbd_unrealize;
331
device_class_set_legacy_reset(dc, nextkbd_reset);
332
}
333