<p dir="ltr">I think it would be a pain to do that, and might not be clear for wl_seat and wl_data_device. If you believe in it, all power to you.</p>
<div class="gmail_quote">On 22 Sep 2014 02:10, "Pekka Paalanen" <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Mon, 25 Aug 2014 08:59:51 +0300<br>
Pekka Paalanen <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>> wrote:<br>
<br>
> On Fri, 22 Aug 2014 10:48:02 -0700<br>
> Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
><br>
> > As I mentioned on IRC, I don't really like adding and using an enum value<br>
> > without bumping protocol version.  However, the only time we ever use it is<br>
> > to kill the client so the worst thing that can happen is that the client<br>
> > doesn't report the error correctly.  I think I'm ok with it.<br>
><br>
> Yeah, I don't see a problem in adding values to an error enum.<br>
><br>
> However, I do wonder if this is logical.<br>
><br>
> Let's say xdg_shell used this. A client issues request<br>
> xdg_shell@33.get_xdg_surface(wl_surface@20). There are quite likely<br>
> several other requests on wl_surface@20, and since I assume<br>
> get_xdg_surface will be raising a protocol error, there will also be an<br>
> earlier request on some other interface already giving a role to<br>
> wl_surface@20. And all these requests can be in the same burst.<br>
><br>
> Using the below enum value, the compositor would send the error on<br>
> wl_surface@20, but you don't know which interface call caused it.<br>
><br>
> Using an error enum value in xdg_shell, the compositor would be sending<br>
> the error on xdg_shell@33, but you don't know for which surface.<br>
><br>
> One solution to both "don't know"s is to add the missing information to<br>
> the error message for humans to see.<br>
><br>
> Both ways could work in practice, but this would be the first (legal)<br>
> case of sending the error on a different object than whose request<br>
> caused it to trigger.<br>
><br>
> It may make sense in this one case, but if we do it here, we generally<br>
> allow it everywhere, which I believe can bring confusion on what errors<br>
> can be raised where. It will no longer be true, that the possible<br>
> errors are the ones defined in the interface containing the request,<br>
> plus wl_display errors. You will be also adding all errors on all<br>
> argument objects to the set, per request.<br>
><br>
> That is why I am hesitant to commit this. I'm sure someone will find<br>
> a case where this would make something like writing language bindings<br>
> more difficult for him, even if it seems obscure or even silly to us.<br>
><br>
> It's not like we share e.g. pixel format enums between, say, wl_shm and<br>
> wl_drm, even though they are the same AFAIK, and there is a<br>
> considerable amount of duplication. (Yes, that is a bit different case,<br>
> because there we would be breaking also the namespacing.)<br>
><br>
><br>
> Thanks,<br>
> pq<br>
><br>
> > On Fri, Aug 22, 2014 at 10:37 AM, Jasper St. Pierre <<a href="mailto:jstpierre@mecheye.net">jstpierre@mecheye.net</a>><br>
> > wrote:<br>
> ><br>
> > > This will be used by implementations to send out errors if clients try<br>
> > > to set roles on surfaces that already have roles.<br>
> > > ---<br>
> > >  protocol/wayland.xml | 1 +<br>
> > >  1 file changed, 1 insertion(+)<br>
> > ><br>
> > > diff --git a/protocol/wayland.xml b/protocol/wayland.xml<br>
> > > index bb457bc..f6eb54d 100644<br>
> > > --- a/protocol/wayland.xml<br>
> > > +++ b/protocol/wayland.xml<br>
> > > @@ -983,6 +983,7 @@<br>
> > >        </description><br>
> > >        <entry name="invalid_scale" value="0" summary="buffer scale value<br>
> > > is invalid"/><br>
> > >        <entry name="invalid_transform" value="1" summary="buffer transform<br>
> > > value is invalid"/><br>
> > > +      <entry name="surface_has_existing_role" value="2" summary="the<br>
> > > surface passed already has a role"/><br>
> > >      </enum><br>
<br>
Hi,<br>
<br>
does anyone still want to defend this patch, or should we add "existing<br>
role" error definitions to all interfaces assigning roles instead?<br>
<br>
<br>
Thanks,<br>
pq<br>
</blockquote></div>