From 4738f3b1ea433ad8a9ab8550e557e43efaa28362 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Mon, 2 Jan 2012 15:47:07 +0200 Subject: [PATCH] compositor: destroy all input binding objects on shutdown wlsc_binding_destroy() was not being called at all. Fix the leaks by introducing a function that destroys a whole list of bindings, instead of individually saving an extra pointer to the binding object and calling wlsc_binding_destroy() separately on each. Signed-off-by: Pekka Paalanen --- compositor/compositor.c | 2 ++ compositor/compositor.h | 3 +++ compositor/util.c | 9 +++++++++ 3 files changed, 14 insertions(+) diff --git a/compositor/compositor.c b/compositor/compositor.c index c4ab9db..980098d 100644 --- a/compositor/compositor.c +++ b/compositor/compositor.c @@ -2022,6 +2022,8 @@ wlsc_compositor_shutdown(struct wlsc_compositor *ec) /* Destroy all outputs associated with this compositor */ wl_list_for_each_safe(output, next, &ec->output_list, link) output->destroy(output); + + wlsc_binding_list_destroy_all(&ec->binding_list); } static int on_term_signal(int signal_number, void *data) diff --git a/compositor/compositor.h b/compositor/compositor.h index 8611b40..fa47489 100644 --- a/compositor/compositor.h +++ b/compositor/compositor.h @@ -355,6 +355,9 @@ void wlsc_binding_destroy(struct wlsc_binding *binding); void +wlsc_binding_list_destroy_all(struct wl_list *list); + +void wlsc_compositor_run_binding(struct wlsc_compositor *compositor, struct wlsc_input_device *device, uint32_t time, diff --git a/compositor/util.c b/compositor/util.c index 370edbc..4ce1774 100644 --- a/compositor/util.c +++ b/compositor/util.c @@ -283,6 +283,15 @@ wlsc_binding_destroy(struct wlsc_binding *binding) } WL_EXPORT void +wlsc_binding_list_destroy_all(struct wl_list *list) +{ + struct wlsc_binding *binding, *tmp; + + wl_list_for_each_safe(binding, tmp, list, link) + wlsc_binding_destroy(binding); +} + +WL_EXPORT void wlsc_compositor_run_binding(struct wlsc_compositor *compositor, struct wlsc_input_device *device, uint32_t time, -- 2.7.4