#include #include #include #include #include #include void wlr_tablet_init(struct wlr_tablet *tablet, const struct wlr_tablet_impl *impl, const char *name) { wlr_input_device_init(&tablet->base, WLR_INPUT_DEVICE_TABLET_TOOL, NULL, name); tablet->base.tablet = tablet; tablet->impl = impl; wl_signal_init(&tablet->events.axis); wl_signal_init(&tablet->events.proximity); wl_signal_init(&tablet->events.tip); wl_signal_init(&tablet->events.button); wl_array_init(&tablet->paths); } void wlr_tablet_destroy(struct wlr_tablet *tablet) { if (!tablet) { return; } char **path_ptr; wl_array_for_each(path_ptr, &tablet->paths) { free(*path_ptr); } wl_array_release(&tablet->paths); wlr_input_device_finish(&tablet->base); if (tablet->impl && tablet->impl->destroy) { tablet->impl->destroy(tablet); } else { free(tablet); } }