Implement release for wl_data_device
Callback added to server and client calls release instead of destroy.
This commit is contained in:
parent
7cd58b27fa
commit
dd5c39d2a6
1 changed files with 11 additions and 1 deletions
|
@ -57,13 +57,15 @@ private:
|
||||||
void setSelection(DataSourceInterface *dataSource);
|
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 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 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;
|
static const struct wl_data_device_interface s_interface;
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct wl_data_device_interface DataDeviceInterface::Private::s_interface = {
|
const struct wl_data_device_interface DataDeviceInterface::Private::s_interface = {
|
||||||
startDragCallback,
|
startDragCallback,
|
||||||
setSelectionCallback
|
setSelectionCallback,
|
||||||
|
releaseCallback
|
||||||
};
|
};
|
||||||
|
|
||||||
DataDeviceInterface::Private::Private(SeatInterface *seat, DataDeviceInterface *q, DataDeviceManagerInterface *manager, wl_resource *parentResource)
|
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));
|
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)
|
void DataDeviceInterface::Private::setSelection(DataSourceInterface *dataSource)
|
||||||
{
|
{
|
||||||
Q_Q(DataDeviceInterface);
|
Q_Q(DataDeviceInterface);
|
||||||
|
|
Loading…
Reference in a new issue