[PATCH 1/2] server: add wl_input_device_fini()

Pekka Paalanen ppaalanen at gmail.com
Tue Jan 3 06:32:40 PST 2012


Add a clean-up function for destroying all objects created in
wl_input_device_init(). Can be used to fix memory leaks reported by
Valgrind in the demos.

The init function was also missing an explicit initialisation of the
'keys' array. Add the explicit array init, although it is redundant with
the zeroing of the whole struct.

Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
---
 src/wayland-server.c |   15 +++++++++++++++
 src/wayland-server.h |    3 +++
 2 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/src/wayland-server.c b/src/wayland-server.c
index 89e8a81..0b81706 100644
--- a/src/wayland-server.c
+++ b/src/wayland-server.c
@@ -411,6 +411,7 @@ wl_input_device_init(struct wl_input_device *device)
 {
 	memset(device, 0, sizeof *device);
 	wl_list_init(&device->resource_list);
+	wl_array_init(&device->keys);
 	device->pointer_focus_listener.func = lose_pointer_focus;
 	device->keyboard_focus_listener.func = lose_keyboard_focus;
 
@@ -418,6 +419,20 @@ wl_input_device_init(struct wl_input_device *device)
 	device->y = 100;
 }
 
+WL_EXPORT void
+wl_input_device_fini(struct wl_input_device *device)
+{
+	if (device->keyboard_focus_resource)
+		wl_list_remove(&device->keyboard_focus_listener.link);
+
+	if (device->pointer_focus_resource)
+		wl_list_remove(&device->pointer_focus_listener.link);
+
+	/* XXX: What about device->resource_list? */
+
+	wl_array_release(&device->keys);
+}
+
 static struct wl_resource *
 find_resource_for_surface(struct wl_list *list, struct wl_surface *surface)
 {
diff --git a/src/wayland-server.h b/src/wayland-server.h
index 5176a09..f62c860 100644
--- a/src/wayland-server.h
+++ b/src/wayland-server.h
@@ -223,6 +223,9 @@ void
 wl_input_device_init(struct wl_input_device *device);
 
 void
+wl_input_device_fini(struct wl_input_device *device);
+
+void
 wl_input_device_set_pointer_focus(struct wl_input_device *device,
 				  struct wl_surface *surface,
 				  uint32_t time,
-- 
1.7.3.4



More information about the wayland-devel mailing list