wayland: Remove zombie ClientConnection from Display later
Otherwise it's theoretically possible to create a new ClientConnection object for the zombie wl_client when its resources are being destroyed. For example
- process early wl_client destroy notification
- the ClientConnection objects gets removed from the client list in Display
- process wl_resource objects getting destroyed
- if some code calls display->getConnection(zombie_client), it's going to reintroduce the client in the client list
- process late wl_client destroy notification, it's going to destroy the original and the clone ClientConnection object
This change prevents reintoducing a clone client object, by keeping the
original for a bit longer until it's actually destroyed. In the future though,
it would be great to kill the client lists in Display and ClientConnection,
and just use static_cast<ClientConnection *>(wl_client_get_user_data())
.
(cherry picked from commit 442648ed)