client: print discarded events in debug log
authorManuel Stoeckl <code@mstoeckl.com>
Sun, 27 Sep 2020 01:14:16 +0000 (21:14 -0400)
committerSimon Ser <contact@emersion.fr>
Tue, 20 Jul 2021 09:20:38 +0000 (09:20 +0000)
commitada25fbd526dec116026cb2567a912b47890ad05
tree750876704312eb5338d14c32a3db4eace7e9ed4b
parent13ccd1c4db4c3f26354530c3212b35462a002e06
client: print discarded events in debug log

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.

Signed-off-by: Manuel Stoeckl <code@mstoeckl.com>
src/connection.c
src/wayland-client.c
src/wayland-private.h
src/wayland-server.c