On Fri, 22 Aug 2014 19:17:55 +0530
[email protected] wrote:

> From: kabeer <[email protected]>
> 
> window: use data_device interface destructor
> data-device: implement data_device_release destructor
> 
> Signed-off-by: kabeer <[email protected]>
> ---
>  clients/window.c  |    2 +-
>  src/data-device.c |    6 ++++++
>  2 files changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/clients/window.c b/clients/window.c
> index 5d64022..001cfb8 100644
> --- a/clients/window.c
> +++ b/clients/window.c
> @@ -5049,7 +5049,7 @@ input_destroy(struct input *input)
>               data_offer_destroy(input->selection_offer);
>  
>       if (input->data_device)
> -             wl_data_device_destroy(input->data_device);
> +             wl_data_device_release(input->data_device);

You should check the interface version here, that the release request
is actually implemented in the compositor. You need to store the
version when you bind to the wl_data_device_manager global, and check
it here.

>  
>       if (input->display->seat_version >= 3) {
>               if (input->pointer)
> diff --git a/src/data-device.c b/src/data-device.c
> index 75fc60c..9dca58b 100644
> --- a/src/data-device.c
> +++ b/src/data-device.c
> @@ -761,10 +761,16 @@ data_device_set_selection(struct wl_client *client,
>                                 wl_resource_get_user_data(source_resource),
>                                 serial);
>  }
> +static void
> +data_device_release(struct wl_client *client, struct wl_resource *resource)
> +{
> +       wl_resource_destroy(resource);
> +}
>  
>  static const struct wl_data_device_interface data_device_interface = {
>       data_device_start_drag,
>       data_device_set_selection,
> +     data_device_release
>  };
>  
>  static void

You are missing all the interface version bumps. wl_data_device_manager
needs to be advertised with the new version in the compositor. In the
client, the advertised version needs to be checked, and bound with
min(advertised_version, my_supported_version).

All this is to let things still work if the compositor does not
implement the new version. Someone might be running the Weston demos on
some other compositor.


Thanks,
pq
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to