compositor: destroy all input binding objects on shutdown
authorPekka Paalanen <ppaalanen@gmail.com>
Mon, 2 Jan 2012 13:47:07 +0000 (15:47 +0200)
committerPekka Paalanen <ppaalanen@gmail.com>
Mon, 2 Jan 2012 13:47:07 +0000 (15:47 +0200)
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 <ppaalanen@gmail.com>
compositor/compositor.c
compositor/compositor.h
compositor/util.c

index c4ab9db..980098d 100644 (file)
@@ -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)
index 8611b40..fa47489 100644 (file)
@@ -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,
index 370edbc..4ce1774 100644 (file)
@@ -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,