On Wed, Jun 8, 2016 at 5:40 PM Arnaud Vrac <[email protected]> wrote: > The input method implementation only exposes a wl_keyboard object with > version 1, which does not include a destructor. The input method has no > way to notify the server that the object has been destroyed. > > Implement version 3 of wl_keyboard which adds the release destructor to > fix this. > --- > src/text-backend.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/src/text-backend.c b/src/text-backend.c > index 5a09f12..aa19ae9 100644 > --- a/src/text-backend.c > +++ b/src/text-backend.c > @@ -664,6 +664,16 @@ static const struct weston_keyboard_grab_interface > input_method_context_grab = { > }; > > static void > +keyboard_release(struct wl_client *client, struct wl_resource *resource) > +{ > + wl_resource_destroy(resource); > +} > + > +static const struct wl_keyboard_interface keyboard_interface = { > + keyboard_release > +}; > + > +static void > input_method_context_grab_keyboard(struct wl_client *client, > struct wl_resource *resource, > uint32_t id) > @@ -674,8 +684,9 @@ input_method_context_grab_keyboard(struct wl_client > *client, > struct weston_seat *seat = context->input_method->seat; > struct weston_keyboard *keyboard = weston_seat_get_keyboard(seat); > > - cr = wl_resource_create(client, &wl_keyboard_interface, 1, id); > - wl_resource_set_implementation(cr, NULL, context, unbind_keyboard); > + cr = wl_resource_create(client, &wl_keyboard_interface, 3, id); > + wl_resource_set_implementation(cr, &keyboard_interface, > + context, unbind_keyboard); > > context->keyboard = cr; > > -- > 2.7.4 > > In an update to the input-method protocol we need to remove the wl_keyboard from the protocol anyways ( https://bugs.freedesktop.org/show_bug.cgi?id=84034). But that should be fine for now.
Reviewed-by: Jan Arne Petersen <[email protected]>
_______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
