summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wayland-server.c15
-rw-r--r--src/wayland-server.h3
2 files changed, 18 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)
{
diff --git a/src/wayland-server.h b/src/wayland-server.h
index 5176a09..968c654 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_release(struct wl_input_device *device);
+
+void
wl_input_device_set_pointer_focus(struct wl_input_device *device,
struct wl_surface *surface,
uint32_t time,