wl_data_device interface does not have a destructor defined in the protocol, which means that the server cannot know if a client destroys a wl_data_device object. This leaks the server-side resource.
To make things worse, wl_data_device.data_offer *event* creates a new wl_data_offer protocol object.
If a client has destroyed a wl_data_device, the server will not know about it, and will keep sending data_offer events as appropriate. As the client does not track the wl_data_device object anymore, those events will be ignored in the client. This means that in the server, wl_data_offer objects just keep piling up, as the server cannot destroy them on its own.
If possible, we should add destructor protocol to wl_data_device interface.
Author: kabeer khan <firstname.lastname@example.org>
Date: Mon Oct 13 10:34:26 2014 +0530
Protocol : Added destructor to wl_data_device interface
in Wayland, and implementations in Weston.