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);
|
||||
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);
|
||||
|
|
Loading…
Reference in a new issue