On Wed, 14 May 2014 19:12:20 +0100
Neil Roberts <n...@linux.intel.com> wrote:

> After looking at it a bit more I don't think we can really make
> the automatic zombie idea work. The trouble is that
> libwayland-server would need to know when the client has
> destroyed the proxy in order to destroy the zombie resource.
> However the destroy semantics are interface-dependent so only an
> implementation of the interface can know when the resource is
> really destroyed.
> 
> The wl_output interface doesn't currently have a destructor so in
> this particular case it's even worse. I guess if a client binds
> to an output then the resource for it has to leak until the
> client disconnects.
> 
> Assuming we later add a release request to wl_output (I think we
> should) then I think we would still need to make the zombie
> handling specific to the output implementation in Weston. We
> can't just set the implementation to NULL because then nothing
> would destroy the resource when the release request is called.

I think you are totally right.

> Perhaps the best thing to do would be to make Weston swap out the
> interface for a simple one that only waits for the release event
> when an output is unplugged. We would also have to do this for
> pointers, keyboards and touch devices. This could end up with
> quite a lot of code because you have to double up all of the
> implementations. We also have to be aware of these zombie objects
> if we ever add any more requests that can refer to these objects
> because they would have to check if the object is a zombie and
> skip the request.

Right.

> If there's ever a Wayland 2.0 I think it would be good to make all
> interfaces implicitly have a destructor which is handled outside
> of the protocol description. I can't think of an interface that
> shouldn't have a destructor. Even with wl_callback which is
> defined to be destroyed when it is signalled it might make sense
> to allow the client to destroy the callback early if it's no
> longer interested.

Yeah, I think there are ways to make it work, if we could change
it. Another idea would be to annotate destructors and allow both
requests and events to be destructors.

I think I have suggested this before, but we could start collecting
a Wayland protocol extension designer's cook book: rules of thumb
(e.g. always define destructor protocol unless it is explicitly not
right), design patterns (inert objects, factory interfaces...),
where and how to define errors etc.


Thanks,
pq
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to