commit a8a080fbe498cea54d2b3455d1ed6dae201da0c1
parent 795ea1fe9fcbe5deba1be4431c56ffe7bb6c5128
Author: Michael Forney <mforney@mforney.org>
Date: Tue, 13 May 2014 20:17:42 -0700
{seat,keyboard,pointer}: Support protocol version 3
Diffstat:
3 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/libswc/keyboard.c b/libswc/keyboard.c
@@ -158,6 +158,15 @@ void keyboard_set_focus(struct keyboard * keyboard,
input_focus_set(&keyboard->focus, view);
}
+static void release(struct wl_client * client, struct wl_resource * resource)
+{
+ wl_resource_destroy(resource);
+}
+
+static struct wl_keyboard_interface keyboard_implementation = {
+ .release = &release,
+};
+
static void unbind(struct wl_resource * resource)
{
struct keyboard * keyboard = wl_resource_get_user_data(resource);
@@ -170,8 +179,9 @@ struct wl_resource * keyboard_bind(struct keyboard * keyboard,
{
struct wl_resource * client_resource;
- client_resource = wl_resource_create(client, &wl_keyboard_interface, 1, id);
- wl_resource_set_implementation(client_resource, NULL, keyboard, &unbind);
+ client_resource = wl_resource_create(client, &wl_keyboard_interface, 3, id);
+ wl_resource_set_implementation(client_resource, &keyboard_implementation,
+ keyboard, &unbind);
input_focus_add_resource(&keyboard->focus, client_resource);
/* Subtract one to remove terminating NULL character. */
diff --git a/libswc/pointer.c b/libswc/pointer.c
@@ -311,8 +311,14 @@ static void set_cursor(struct wl_client * client,
}
}
+static void release(struct wl_client * client, struct wl_resource * resource)
+{
+ wl_resource_destroy(resource);
+}
+
static struct wl_pointer_interface pointer_implementation = {
- .set_cursor = &set_cursor
+ .set_cursor = &set_cursor,
+ .release = &release,
};
static void unbind(struct wl_resource * resource)
@@ -327,7 +333,7 @@ struct wl_resource * pointer_bind(struct pointer * pointer,
{
struct wl_resource * client_resource;
- client_resource = wl_resource_create(client, &wl_pointer_interface, 1, id);
+ client_resource = wl_resource_create(client, &wl_pointer_interface, 3, id);
wl_resource_set_implementation(client_resource, &pointer_implementation,
pointer, &unbind);
input_focus_add_resource(&pointer->focus, client_resource);
diff --git a/libswc/seat.c b/libswc/seat.c
@@ -372,7 +372,7 @@ bool swc_seat_initialize(const char * seat_name)
goto error0;
}
- seat.global = wl_global_create(swc.display, &wl_seat_interface, 2,
+ seat.global = wl_global_create(swc.display, &wl_seat_interface, 3,
NULL, &bind_seat);
if (!seat.global)