<div dir="ltr"><div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jun 8, 2016 at 5:40 PM Arnaud Vrac <<a href="mailto:avrac@freebox.fr">avrac@freebox.fr</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The input method implementation only exposes a wl_keyboard object with<br>
version 1, which does not include a destructor. The input method has no<br>
way to notify the server that the object has been destroyed.<br>
<br>
Implement version 3 of wl_keyboard which adds the release destructor to<br>
fix this.<br>
---<br>
 src/text-backend.c | 15 +++++++++++++--<br>
 1 file changed, 13 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/src/text-backend.c b/src/text-backend.c<br>
index 5a09f12..aa19ae9 100644<br>
--- a/src/text-backend.c<br>
+++ b/src/text-backend.c<br>
@@ -664,6 +664,16 @@ static const struct weston_keyboard_grab_interface input_method_context_grab = {<br>
 };<br>
<br>
 static void<br>
+keyboard_release(struct wl_client *client, struct wl_resource *resource)<br>
+{<br>
+       wl_resource_destroy(resource);<br>
+}<br>
+<br>
+static const struct wl_keyboard_interface keyboard_interface = {<br>
+       keyboard_release<br>
+};<br>
+<br>
+static void<br>
 input_method_context_grab_keyboard(struct wl_client *client,<br>
                                   struct wl_resource *resource,<br>
                                   uint32_t id)<br>
@@ -674,8 +684,9 @@ input_method_context_grab_keyboard(struct wl_client *client,<br>
        struct weston_seat *seat = context->input_method->seat;<br>
        struct weston_keyboard *keyboard = weston_seat_get_keyboard(seat);<br>
<br>
-       cr = wl_resource_create(client, &wl_keyboard_interface, 1, id);<br>
-       wl_resource_set_implementation(cr, NULL, context, unbind_keyboard);<br>
+       cr = wl_resource_create(client, &wl_keyboard_interface, 3, id);<br>
+       wl_resource_set_implementation(cr, &keyboard_interface,<br>
+                                      context, unbind_keyboard);<br>
<br>
        context->keyboard = cr;<br>
<br>
--<br>
2.7.4<br>
<br></blockquote><div><br></div>In an update to the input-method protocol we need to remove the wl_keyboard from the protocol anyways (<a href="https://bugs.freedesktop.org/show_bug.cgi?id=84034">https://bugs.freedesktop.org/show_bug.cgi?id=84034</a>). But that should be fine for now.<div><br></div><div><div><span style="color:rgb(33,33,33);font-family:"helvetica neue",helvetica,arial,sans-serif;font-size:13px;line-height:1.5">Reviewed-by:</span><span class="inbox-inbox-inbox-inbox-inbox-inbox-Apple-converted-space" style="color:rgb(33,33,33);font-family:"helvetica neue",helvetica,arial,sans-serif;font-size:13px;line-height:1.5"> Jan Arne Petersen <<a href="mailto:janarne@gmail.com">janarne@gmail.com</a>></span></div></div><br class="inbox-inbox-Apple-interchange-newline"><div> </div></div></div></div>