From fd80329c53ed00b9411095b60e9d0611c016ec03 Mon Sep 17 00:00:00 2001 From: Simon Zeni Date: Tue, 8 Feb 2022 11:20:44 -0500 Subject: [PATCH] interfaces/wlr_input_device: introduce wlr_input_device_finish This function releases the wlr_input_device allocated memory (it's name and it's output name), and signals its destroy event. --- include/wlr/interfaces/wlr_input_device.h | 7 +++++++ types/wlr_input_device.c | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/wlr/interfaces/wlr_input_device.h b/include/wlr/interfaces/wlr_input_device.h index 04d5644f..de527393 100644 --- a/include/wlr/interfaces/wlr_input_device.h +++ b/include/wlr/interfaces/wlr_input_device.h @@ -18,6 +18,13 @@ struct wlr_input_device_impl { void wlr_input_device_init(struct wlr_input_device *wlr_device, enum wlr_input_device_type type, const struct wlr_input_device_impl *impl, const char *name); + +/** + * Cleans up all of the provided wlr_input_device resources and signals the + * destroy event. + */ +void wlr_input_device_finish(struct wlr_input_device *wlr_device); + void wlr_input_device_destroy(struct wlr_input_device *dev); #endif diff --git a/types/wlr_input_device.c b/types/wlr_input_device.c index 7f9654e5..50afdaff 100644 --- a/types/wlr_input_device.c +++ b/types/wlr_input_device.c @@ -25,6 +25,17 @@ void wlr_input_device_init(struct wlr_input_device *dev, wl_signal_init(&dev->events.destroy); } +void wlr_input_device_finish(struct wlr_input_device *wlr_device) { + if (!wlr_device) { + return; + } + + wlr_signal_emit_safe(&wlr_device->events.destroy, wlr_device); + + free(wlr_device->name); + free(wlr_device->output_name); +} + void wlr_input_device_destroy(struct wlr_input_device *dev) { if (!dev) { return;