From db9bf1e81827c2940cb423a6cb73cee3f1cb156c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Tue, 3 Jan 2012 22:43:36 -0500 Subject: [PATCH] data-device: Fix a few bugs in the commit to drop ref-counting Did not test that change. --- src/data-device.c | 7 +++++-- src/xserver-launcher.c | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/data-device.c b/src/data-device.c index 2072284a..74667774 100644 --- a/src/data-device.c +++ b/src/data-device.c @@ -106,15 +106,16 @@ weston_data_source_send_offer(struct weston_data_source *source, offer->resource.object.id = 0; offer->resource.object.interface = &wl_data_offer_interface; offer->resource.object.implementation = - (void (**)(void)) &source->offer_interface; + (void (**)(void)) source->offer_interface; offer->resource.data = offer; + wl_list_init(&offer->resource.destroy_listener_list); offer->source = source; offer->source_destroy_listener.func = destroy_offer_data_source; wl_list_insert(&source->resource.destroy_listener_list, &offer->source_destroy_listener.link); - wl_client_add_resource(source->resource.client, &offer->resource); + wl_client_add_resource(target->client, &offer->resource); wl_resource_post_event(target, WL_DATA_DEVICE_DATA_OFFER, &offer->resource); @@ -398,6 +399,8 @@ create_data_source(struct wl_client *client, source->resource.object.implementation = (void (**)(void)) &data_source_interface; source->resource.data = source; + wl_list_init(&source->resource.destroy_listener_list); + source->offer_interface = &data_offer_interface; source->cancel = data_source_cancel; diff --git a/src/xserver-launcher.c b/src/xserver-launcher.c index 85e22134..486e7642 100644 --- a/src/xserver-launcher.c +++ b/src/xserver-launcher.c @@ -243,7 +243,8 @@ static void data_offer_receive(struct wl_client *client, struct wl_resource *resource, const char *mime_type, int32_t fd) { - struct weston_wm *wm = resource->data; + struct weston_data_offer *offer = resource->data; + struct weston_wm *wm = offer->source->resource.data; if (strcmp(mime_type, "text/plain;charset=utf-8") == 0) { /* Get data for the utf8_string target */