On Wed, Oct 31, 2018 at 11:59:34AM +0200, Pekka Paalanen wrote: > On Mon, 15 Oct 2018 17:16:59 +0300 > Alexandros Frantzis <alexandros.frant...@collabora.com> wrote:
... > > > > The main scenario is an early exit from some code using this > > object, in which case it will be easier to correctly synchronize proper > > destruction of any user data used by the zwp_buffer_release_v1 listener, > > when having an explicit destroy request. > > > > This isn't particular to this protocol though, it's a general > > (theoretical) concern of mine with the destroy-on-event pattern. But if > > this has worked well for wp_presentation_feedback, perhaps it's not a big > > deal. > > Hi Alf, > > I'm not sure what you mean with that concern. > > When an event destroys a protocol object, the compositor will > unconditionally destroy the wl_resource right after sending the event. > That means the server-side request listener cannot receive any messages > anymore, so any user data would be destroyed at the same time anyway. > > On client side, regardless of whether there is destroy request or not, > the client will destroy the wl_proxy. The request would only let the > compositor know that the protocol object is no more. Regardless of a > destroy request, the client side will automatically ignore any events > to the destroyed wl_proxy. That ignoring is what makes client initiated > object destruction safe in the first place. > > When the client destroys the wl_proxy, it can also free any user data > associated with it, because that will guarantee that the listeners > cannot be called anymore. > > If we have a destructor event, and the client destroys the wl_proxy > before that event is sent, then the event will simply be ignored. Once > the compositor sends the event, then both client and compositor again > agree that the protocol object no longer exists. > > wl_display has a "secret" event that tells libwayland-client when the > server has destroyed the protocol object, which makes all the above > work. > > > Thanks, > pq Hi Pekka, thanks for the detailed explanation. I was misunderstanding how destroy-on-event is expected to work. I'll update the protocol to use destroy-on-event in v5. Thanks, Alexandros _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel