diff options
Diffstat (limited to 'src/wayland-server.c')
-rw-r--r-- | src/wayland-server.c | 15 |
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) { |