[PATCH weston 3/4] data-device: Update current action even if source version is old
Mike Blumenkrantz
michael.blumenkrantz at gmail.com
Thu Apr 21 15:36:28 UTC 2016
On Wed, Apr 20, 2016 at 11:11 PM Jonas Ådahl <jadahl at gmail.com> wrote:
> If the version of the source object is old enough to not have
> wl_data_source.set_actions() the current action would never be updated
> since source->set_actions would never be set.
>
> To fix this, instead of checking whether source->set_actions before
> proceeding with updating the current action, just always update the
> action when we know all parts are valid dnd data device objects.
>
> Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
> ---
> src/data-device.c | 22 ++++++++++++----------
> 1 file changed, 12 insertions(+), 10 deletions(-)
>
> diff --git a/src/data-device.c b/src/data-device.c
> index 862a4e0..f04f030 100644
> --- a/src/data-device.c
> +++ b/src/data-device.c
> @@ -160,7 +160,7 @@ data_offer_update_action(struct weston_data_offer
> *offer)
> {
> uint32_t action;
>
> - if (!offer->source || !offer->source->actions_set)
> + if (!offer->source)
> return;
>
> action = data_offer_choose_action(offer);
> @@ -293,7 +293,7 @@ destroy_offer_data_source(struct wl_listener
> *listener, void *data)
> offer->source = NULL;
> }
>
> -static struct wl_resource *
> +static struct weston_data_offer *
> weston_data_source_send_offer(struct weston_data_source *source,
> struct wl_resource *target)
> {
> @@ -331,9 +331,8 @@ weston_data_source_send_offer(struct
> weston_data_source *source,
>
> source->offer = offer;
> source->accepted = false;
> - data_offer_update_action(offer);
>
> - return offer->resource;
> + return offer;
> }
>
> static void
> @@ -533,11 +532,13 @@ weston_drag_set_focus(struct weston_drag *drag,
>
> if (drag->data_source) {
> drag->data_source->accepted = false;
> - offer_resource =
> weston_data_source_send_offer(drag->data_source,
> - resource);
> - if (offer_resource == NULL)
> + offer = weston_data_source_send_offer(drag->data_source,
> resource);
> + if (offer == NULL)
> return;
>
> + data_offer_update_action(offer);
> +
> + offer_resource = offer->resource;
> if (wl_resource_get_version (offer_resource) >=
> WL_DATA_OFFER_SOURCE_ACTIONS_SINCE_VERSION) {
> wl_data_offer_send_source_actions (offer_resource,
> @@ -1095,7 +1096,8 @@ destroy_selection_data_source(struct wl_listener
> *listener, void *data)
> WL_EXPORT void
> weston_seat_send_selection(struct weston_seat *seat, struct wl_client
> *client)
> {
> - struct wl_resource *data_device, *offer;
> + struct weston_data_offer *offer;
> + struct wl_resource *data_device;
>
> wl_resource_for_each(data_device, &seat->drag_resource_list) {
> if (wl_resource_get_client(data_device) != client)
> @@ -1103,8 +1105,8 @@ weston_seat_send_selection(struct weston_seat *seat,
> struct wl_client *client)
>
> if (seat->selection_data_source) {
> offer =
> weston_data_source_send_offer(seat->selection_data_source,
> -
> data_device);
> - wl_data_device_send_selection(data_device, offer);
> + data_device);
>
Trying to mix in whitespace changes to throw off your reviewers is
certainly a valid strategy.
> + wl_data_device_send_selection(data_device,
> offer->resource);
> } else {
> wl_data_device_send_selection(data_device, NULL);
> }
> --
> 2.5.5
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel
Reviewed-By: Mike Blumenkrantz <zmike at osg.samsung.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20160421/ec47d150/attachment.html>
More information about the wayland-devel
mailing list