eis: fix an error when the seat is removed twice
Previous sequence reproducible with the eis-demo-server and ei-demo-client:
- ctrl+c the client
- eis client dispatch fails with an rc < 0 due to the socket being closed
- eis calls eis_client_disconnect() which calls eis_seat_removed()
- that triggers an event for
SEAT_UNBIND
- seat is set to REMOVE
- that triggers an event for
- eis-demo-server gets the
SEAT_UNBIND
event and (correctly) calls eis_seat_remove() since it doesn't know the client is disconnected yet. That is due to the library unwinding the state transparently.
Fix this by splitting out the calls: eis_drop_seat() is the internally used one that sets it to a new state of REMOVED_INTERNALLY, and then eis_seat_remove merely updates the state.
Fixes #10 (closed)