protocol: allow immediate wl_buffer.destroy if not re-used
authorSimon Ser <contact@emersion.fr>
Wed, 26 May 2021 10:07:17 +0000 (12:07 +0200)
committerSimon Ser <contact@emersion.fr>
Fri, 11 Jun 2021 14:05:27 +0000 (14:05 +0000)
commit3e897faa29d13bef6f9af31d4f2e89a526e60f4c
tree93e1d89eb6f99d4b9d80761d1f93e993b0380a8b
parentba0c63dee86cf94272c7763d711695fe3af0f210
protocol: allow immediate wl_buffer.destroy if not re-used

Allow wl_buffer objects to be destroyed without having to wait for
wl_buffer.release if the underlying storage isn't going to be
re-used.

The main motivation for this is to avoid glitches when a client is
torn down. When a client disconnects, all of its objects are destroyed
in arbitrary order. However some compositors will still need to
access the destroyed buffer's underlying storage afterwards, e.g. for
visual effects (fade-out) or for atomic layout updates (wait for other
clients to commit a new buffer before hiding the buffer).

It's still incorrect for clients to destroy a wl_buffer and mutate
the underlying storage without waiting for wl_buffer.release.

Signed-off-by: Simon Ser <contact@emersion.fr>
Closes: https://gitlab.freedesktop.org/wayland/wayland/-/issues/185
protocol/wayland.xml