static void input_connected(struct XenDevice *xendev) { struct XenInput *in = container_of(xendev, struct XenInput, c.xendev); if (xenstore_read_fe_int(xendev, "request-abs-pointer", &in->abs_pointer_wanted) == -1) { in->abs_pointer_wanted = 0; } if (xenstore_read_fe_int(xendev, "request-raw-pointer", &in->raw_pointer_wanted) == -1) { in->raw_pointer_wanted = 0; } if (in->raw_pointer_wanted && in->abs_pointer_wanted == 0) { xen_pv_printf(xendev, 0, "raw pointer set without abs pointer"); } if (in->qkbd) { qemu_input_handler_unregister(in->qkbd); } if (in->qmou) { qemu_input_handler_unregister(in->qmou); } trace_xenfb_input_connected(xendev, in->abs_pointer_wanted); in->qkbd = qemu_input_handler_register((DeviceState *)in, &xenfb_keyboard); in->qmou = qemu_input_handler_register((DeviceState *)in, in->abs_pointer_wanted ? &xenfb_abs_mouse : &xenfb_rel_mouse); if (in->raw_pointer_wanted) { qemu_input_handler_activate(in->qkbd); qemu_input_handler_activate(in->qmou); } }
static void input_disconnect(struct XenDevice *xendev) { struct XenInput *in = container_of(xendev, struct XenInput, c.xendev); if (in->qkbd) { qemu_input_handler_unregister(in->qkbd); in->qkbd = NULL; } if (in->qmou) { qemu_input_handler_unregister(in->qmou); in->qmou = NULL; } common_unbind(&in->c); }
static void wctablet_chr_finalize(Object *obj) { TabletChardev *tablet = WCTABLET_CHARDEV(obj); qemu_input_handler_unregister(tablet->hs); g_free(tablet); }
static void msmouse_chr_free(struct CharDriverState *chr) { MouseState *mouse = chr->opaque; qemu_input_handler_unregister(mouse->hs); g_free(mouse); }
static void virtio_input_hid_unrealize(DeviceState *dev, Error **errp) { VirtIOInputHID *vhid = VIRTIO_INPUT_HID(dev); qemu_input_handler_unregister(vhid->hs); }