Skip to content

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()).

Merge request reports