Skip to content

Match pointer/keyboard/touch lifespan to Seat lifespan

PointerInterface is a "Server-managed multicasting resource". As in we have one QObject, managed by the server, but internally it represents multiple resources from various clients.

We cannot control the lifespan of those resources, they may persist long after we stop having these capabilities on the seat.

If we delete our pointer object when we stop advertising a pointer capability we have race conditions with clients calling release, or potentially even having a seat_get_pointer in flight.

It's easier and safer just to have PointerInterface last as long as the Seat. If we don't have a mouse no-one should try to bind, and even if they did or remained bound long after we stop having a mouse it won't do any harm as there are no mouse events to broadcast.

(cherry picked from commit e0c66d42)

Merge request reports