compositor: add wlsc_input_device_fini()
authorPekka Paalanen <ppaalanen@gmail.com>
Mon, 2 Jan 2012 13:31:01 +0000 (15:31 +0200)
committerPekka Paalanen <ppaalanen@gmail.com>
Tue, 3 Jan 2012 08:51:54 +0000 (10:51 +0200)
Add a function for destroying all objects allocated in
wlsc_input_device_init().

This patch depends on "server: add wl_input_device_fini()" commit in the
Wayland core.

Compositor backends could now call wlsc_input_device_fini() to fix some
memory leaks.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
compositor/compositor.c
compositor/compositor.h

index b993c1e..c3211e5 100644 (file)
@@ -1677,6 +1677,18 @@ wlsc_input_device_init(struct wlsc_input_device *device,
        device->selection_data_source = NULL;
 }
 
+WL_EXPORT void
+wlsc_input_device_fini(struct wlsc_input_device *device)
+{
+       wl_list_remove(&device->link);
+       /* The global object is destroyed at wl_display_destroy() time. */
+
+       if (device->sprite)
+               destroy_surface(&device->sprite->surface.resource);
+
+       wl_input_device_fini(&device->input_device);
+}
+
 static void
 bind_output(struct wl_client *client,
            void *data, uint32_t version, uint32_t id)
index fa47489..e289054 100644 (file)
@@ -408,6 +408,9 @@ wlsc_input_device_init(struct wlsc_input_device *device,
                       struct wlsc_compositor *ec);
 
 void
+wlsc_input_device_fini(struct wlsc_input_device *device);
+
+void
 wlsc_switcher_init(struct wlsc_compositor *compositor);
 
 enum {