コード例 #1
0
ファイル: evdev.c プロジェクト: jeremyz/libinput
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);
}
コード例 #2
0
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;
	}
}
コード例 #3
0
ファイル: evdev.c プロジェクト: anderco/weston
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);
}