Open emersion opened 5 years ago
Another consequence of server created objects racing with the client's object map is that when the server destroys object and creates new ones immediately after, it will send the client "new objects" with object ids that the client still has pointing to the old objects because it hasn't had a chance to remove them from its own object map when the new objects are demarshalled. Thus, the client aborts.
wlr-protocols has migrated to gitlab.freedesktop.org. This issue has been moved to:
https://gitlab.freedesktop.org/wlroots/wlr-protocols/-/issues/62
When plugging out an output, this sequence of events can happen (and happens in practice, see https://github.com/emersion/kanshi/issues/55):
zwlr_output_head_v1.finished
and destroys the object immediately. Compositor also sends azwlr_output_manager_v1.done
event with a fresh serial to apply the changes.zwlr_output_configuration_v1
with an (outdated) serial. It issues azwlr_output_configuration_v1.enable_head
request with the object that has just been destroyed by the compositor.wl_display@1: error 1: invalid arguments for zwlr_output_configuration_v1@5.enable_head
.This is a race in the protocol itself. The only thing I can think of to fix it is to stop destroying immediately the
zwlr_output_head_v1
objects. Instead, let the client issue adestroy
request.