Commit 2755847f authored by Pekka Paalanen's avatar Pekka Paalanen Committed by Kristian Høgsberg
Browse files

server: add wl_input_device_release()



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's avatarPekka Paalanen <ppaalanen@gmail.com>

krh: Edited to rename function to *_release()
parent d6465c5b
......@@ -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_release(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)
{
......
......@@ -222,6 +222,9 @@ wl_resource_destroy(struct wl_resource *resource, uint32_t time);
void
wl_input_device_init(struct wl_input_device *device);
void
wl_input_device_release(struct wl_input_device *device);
void
wl_input_device_set_pointer_focus(struct wl_input_device *device,
struct wl_surface *surface,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment