<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 18, 2014 at 2:26 AM, Pekka Paalanen <span dir="ltr"><<a href="mailto:ppaalanen@gmail.com" target="_blank">ppaalanen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Wed, 17 Sep 2014 22:35:40 +0200<br>
Jonas Ådahl <<a href="mailto:jadahl@gmail.com">jadahl@gmail.com</a>> wrote:<br>
<br>
> On Wed, Sep 17, 2014 at 11:16:06PM +0300, Giulio Camuffo wrote:<br>
> > 2014-09-17 23:11 GMT+03:00 Jonas Ådahl <<a href="mailto:jadahl@gmail.com">jadahl@gmail.com</a>>:<br>
> > > On Wed, Sep 17, 2014 at 10:56:13PM +0300, Giulio Camuffo wrote:<br>
> > >> I haven't looked at the implementation yet, just at the protocol, but<br>
> > >> isn't _wl_pointer_lock.lock_pointer() returning a new wl_pointer a<br>
> > >> problem? Objects should have a unique factory interface, or else the<br>
> > >> version of the interface can't be determined.<br>
> > ><br>
> > > Is it really? In the implementation below, the wl_pointer object gets<br>
> > > the same version as the wl_pointer object that is locked. It is also<br>
> > > specified in the last paragraph of _wl_pointer_lock.lock_pointer.<br>
> ><br>
> > Mmh, then maybe it is fine. I'm not convinced actually, but I'm too<br>
> > tired now. :)<br>
<br>
</span>No, it's not fine. You cannot define exceptions to the versioning rules<br>
in a protocol spec. We have common code in libwayland handling all<br>
runtime versioning, and you just cannot implement any exceptions.<br></blockquote><div><br></div><div>Technically, those haven't been merged yet... So, technically, we could have it inherit the version from the wl_pointer.  That said, I think we'll regret if we do.  Even if we did do that, it would cause problems, not because we couldn't update wl_pointer, but because we really couldn't update wl_pointer_lock.  All in all, it's a bad plan.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
> > > Also, this would not be the first interface that creates objects that<br>
> > > other interface do as well. For example wl_shm_pool.create_buffer and<br>
> > > wl_drm.create_buffer both create wl_buffer's.<br>
> ><br>
> > Yes, indeed wl_buffer and wl_callback version can't be increased, afaik.<br>
<br>
</span>wl_buffer and wl_callback are indeed the special cases, the version of<br>
these interfaces can never be bumped, which means they are frozen for<br>
all eternity. That is somewhat of a design mistake. You definitely do<br>
not want to be repeating that mistake.<br>
<span class=""><br>
> Then, another example, (of a non-final protoc though):<br>
> wl_input_method_context.grab_keyboard vs wl_seat.get_keyboard, both<br>
> creating wl_keyboard objects.<br>
<br>
</span>I think that is a protocol design bug. wl_keyboard in core is already at<br>
version 4, but you can only create wl_keyboard version 1 via<br>
wl_input_method_context. You cannot bump wl_input_method_context<br>
version without starting to get wl_keyboards of higher version. The<br>
actual problem comes, when you bump input-method interface version<br>
beyond what is currently the highest version of wl_seat, and then<br>
someone adds a new thing to wl_keyboard. Input-method would start<br>
dealing out wl_keyboard automatically with the new wl_keyboard thing<br>
without clients or servers ever implementing the support for the new<br>
thing.<br>
<br>
Thanks for pointing it out, bug filed:<br>
<a href="https://bugs.freedesktop.org/show_bug.cgi?id=84034" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=84034</a><br></blockquote><div><br></div><div>Fortunately, that's stuck in weston for now.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks,<br>
pq<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
wayland-devel mailing list<br>
<a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
</div></div></blockquote></div><br></div></div>