void evdev_device_destroy(struct evdev_device *device) { struct evdev_dispatch *dispatch; if (device->seat_caps & EVDEV_SEAT_POINTER) { device->base.device_interface->unregister_capability( LIBINPUT_SEAT_CAP_POINTER, device->base.device_interface_data); } if (device->seat_caps & EVDEV_SEAT_KEYBOARD) { device->base.device_interface->unregister_capability( LIBINPUT_SEAT_CAP_KEYBOARD, device->base.device_interface_data); } if (device->seat_caps & EVDEV_SEAT_TOUCH) { device->base.device_interface->unregister_capability( LIBINPUT_SEAT_CAP_TOUCH, device->base.device_interface_data); } dispatch = device->dispatch; if (dispatch) dispatch->interface->destroy(dispatch); if (device->mtdev) mtdev_close_delete(device->mtdev); close(device->fd); free(device->devname); free(device->devnode); free(device); }
static void m_cleanup() { XCloseDisplay(m_dpy); m_dpy = NULL; m_sample_file.close(); if (m_dev) { mtdev_close_delete(m_dev); m_dev = NULL; } if (m_fd) { close(m_fd); m_fd = -1; } }
void evdev_device_destroy(struct evdev_device *device) { struct evdev_dispatch *dispatch; dispatch = device->dispatch; if (dispatch) dispatch->interface->destroy(dispatch); wl_event_source_remove(device->source); wl_list_remove(&device->link); if (device->mtdev) mtdev_close_delete(device->mtdev); close(device->fd); free(device->devname); free(device->devnode); free(device); }