From dd5c39d2a6d50c23da9a8605cdd31d2c64696bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Wed, 9 Sep 2015 09:34:51 +0200 Subject: [PATCH] Implement release for wl_data_device Callback added to server and client calls release instead of destroy. --- src/wayland/datadevice_interface.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/wayland/datadevice_interface.cpp b/src/wayland/datadevice_interface.cpp index 487f315367..5bb4922aaa 100644 --- a/src/wayland/datadevice_interface.cpp +++ b/src/wayland/datadevice_interface.cpp @@ -57,13 +57,15 @@ private: void setSelection(DataSourceInterface *dataSource); static void startDragCallback(wl_client *client, wl_resource *resource, wl_resource *source, wl_resource *origin, wl_resource *icon, uint32_t serial); static void setSelectionCallback(wl_client *client, wl_resource *resource, wl_resource *source, uint32_t serial); + static void releaseCallback(wl_client *client, wl_resource *resource); static const struct wl_data_device_interface s_interface; }; const struct wl_data_device_interface DataDeviceInterface::Private::s_interface = { startDragCallback, - setSelectionCallback + setSelectionCallback, + releaseCallback }; DataDeviceInterface::Private::Private(SeatInterface *seat, DataDeviceInterface *q, DataDeviceManagerInterface *manager, wl_resource *parentResource) @@ -103,6 +105,14 @@ void DataDeviceInterface::Private::setSelectionCallback(wl_client *client, wl_re cast(resource)->setSelection(DataSourceInterface::get(source)); } +void DataDeviceInterface::Private::releaseCallback(wl_client *client, wl_resource *resource) +{ + Q_UNUSED(client); + Private *p = reinterpret_cast(wl_resource_get_user_data(resource)); + wl_resource_destroy(resource); + p->q->deleteLater(); +} + void DataDeviceInterface::Private::setSelection(DataSourceInterface *dataSource) { Q_Q(DataDeviceInterface);