[PATCH weston 3/3] data-device: Check harder for selection/non-wayland sources

Carlos Garnacho carlosg at gnome.org
Mon Feb 1 19:28:16 UTC 2016


We're not always dealing with weston_data_sources that have a
wl_resource, or data_sources that belong to drag-and-drop. Check
harder for these on the drag-and-drop code paths triggered from
common code.

Signed-off-by: Carlos Garnacho <carlosg at gnome.org>
---
 src/data-device.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/data-device.c b/src/data-device.c
index 2cfdcfe..862a4e0 100644
--- a/src/data-device.c
+++ b/src/data-device.c
@@ -100,6 +100,9 @@ data_offer_destroy(struct wl_client *client, struct wl_resource *resource)
 static void
 data_source_notify_finish(struct weston_data_source *source)
 {
+	if (!source->actions_set)
+		return;
+
 	if (source->offer->in_ask &&
 	    wl_resource_get_version(source->resource) >=
 	    WL_DATA_SOURCE_ACTION_SINCE_VERSION) {
@@ -157,7 +160,7 @@ data_offer_update_action(struct weston_data_offer *offer)
 {
 	uint32_t action;
 
-	if (!offer->source)
+	if (!offer->source || !offer->source->actions_set)
 		return;
 
 	action = data_offer_choose_action(offer);
@@ -268,7 +271,8 @@ destroy_data_offer(struct wl_resource *resource)
 	if (wl_resource_get_version(offer->resource) <
 	    WL_DATA_OFFER_ACTION_SINCE_VERSION) {
 		data_source_notify_finish(offer->source);
-	} else if (wl_resource_get_version(offer->source->resource) >=
+	} else if (offer->source->resource &&
+		   wl_resource_get_version(offer->source->resource) >=
 		   WL_DATA_SOURCE_DND_FINISHED_SINCE_VERSION) {
 		wl_data_source_send_cancelled(offer->source->resource);
 	}
-- 
2.5.0



More information about the wayland-devel mailing list