Implement release for wl_data_device

Callback added to server and client calls release instead of destroy.
This commit is contained in:
Martin Gräßlin 2015-09-09 09:34:51 +02:00
parent 7cd58b27fa
commit dd5c39d2a6

View file

@ -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<Private>(resource)->setSelection(DataSourceInterface::get(source));
}
void DataDeviceInterface::Private::releaseCallback(wl_client *client, wl_resource *resource)
{
Q_UNUSED(client);
Private *p = reinterpret_cast<Private*>(wl_resource_get_user_data(resource));
wl_resource_destroy(resource);
p->q->deleteLater();
}
void DataDeviceInterface::Private::setSelection(DataSourceInterface *dataSource)
{
Q_Q(DataDeviceInterface);