NULL,
id, input_method);
- if (input_method->input_method_binding == NULL) {
- resource->destroy = unbind_input_method;
- input_method->input_method_binding = resource;
+ if (input_method->input_method_binding != NULL) {
+ wl_resource_post_error(resource, WL_DISPLAY_ERROR_INVALID_OBJECT,
+ "interface object already bound");
+ wl_resource_destroy(resource);
+ return;
+ }
- text_backend->input_method.binding = resource;
+ if (text_backend->input_method.client != client) {
+ wl_resource_post_error(resource, WL_DISPLAY_ERROR_INVALID_OBJECT,
+ "permission to bind desktop_shell denied");
+ wl_resource_destroy(resource);
return;
}
- wl_resource_post_error(resource, WL_DISPLAY_ERROR_INVALID_OBJECT,
- "interface object already bound");
- wl_resource_destroy(resource);
+ resource->destroy = unbind_input_method;
+ input_method->input_method_binding = resource;
+
+ text_backend->input_method.binding = resource;
}
static void