summaryrefslogtreecommitdiff
path: root/src/wayland-server.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/wayland-server.c')
-rw-r--r--src/wayland-server.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/wayland-server.c b/src/wayland-server.c
index 89e8a81..54a684c 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_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)
{