Skip to content

client: print discarded events in debug log

M. Stoeckl requested to merge mstoeckl/wayland:client-dropped-message into main

Before this patch, setting WAYLAND_DEBUG=1 or WAYLAND_DEBUG=client made a program log all requests sent and events that it processes. However, some events received are not processed. This can happen when a Wayland server sends an event to an object that does not exist, or was recently destroyed by the client program (either before the event was decoded, or after being decoded but before being dispatched.)

This commit prints all discarded messages in the debug log, producing lines like:

[1234567.890] discarded [unknown]@42.[event 0](0 fd, 12 byte)
[1234567.890] discarded wl_callback@3.done(34567)
[1234567.890] discarded [zombie]@13.[event 1](3 fd, 8 byte)

The first indicates an event to an object that does not exist; the second, an event to an object that was deleted after decoding, but before dispatch; the third, an event to an object that left a 'zombie' marker behind to indicate which events have associated file descriptors.

This change partly addresses issue #176, by ensuring that we can see all events ignored by a client program. Of the three event types given in the commit message, I've tested the first with Sway and Dolphin (the file manager), the second with the test program in issue #176, and the third with libwayland's display-test test.

Edited by M. Stoeckl

Merge request reports