<div dir="ltr"><div><div>This seems more complex than is needed.<br><br></div>My impression is that there are a non-zero set of version<5 compositors that implement the new behaviour. Therefore a client that relies on the incorrect behavior is broken even if it requests a version < 5, as it will fail with some compositors. I think you should completely remove any text about "it may act this way" as it is just confusing.<br><br></div>I also think that any such text will encourage *some* compositor to work the old way, irregardless of what version number is claims. This will then lead to some clients relying on the old behaviour. If these clients are at all popular it will pretty much force all compositors to implement the old behavior, making all this text irrelevant.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 3, 2015 at 5:01 PM, Jonas Ådahl <span dir="ltr"><<a href="mailto:jadahl@gmail.com" target="_blank">jadahl@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Fri, Dec 04, 2015 at 10:34:34AM +1000, Peter Hutterer wrote:<br>
> Also applies to touch/keyboard<br>
><br>
> Signed-off-by: Peter Hutterer <<a href="mailto:peter.hutterer@who-t.net">peter.hutterer@who-t.net</a>><br>
> ---<br>
> Changes to v1:<br>
> - make it clear that from the next version onwards sending events to an<br>
>   earlier wl_pointer object is a no-no.<br>
><br>
>  protocol/wayland.xml | 36 +++++++++++++++++++++++++++++++++---<br>
>  1 file changed, 33 insertions(+), 3 deletions(-)<br>
><br>
> diff --git a/protocol/wayland.xml b/protocol/wayland.xml<br>
> index 7ca5049..471c1fe 100644<br>
> --- a/protocol/wayland.xml<br>
> +++ b/protocol/wayland.xml<br>
> @@ -1396,6 +1396,30 @@<br>
>       This is emitted whenever a seat gains or loses the pointer,<br>
>       keyboard or touch capabilities.  The argument is a capability<br>
>       enum containing the complete set of capabilities this seat has.<br>
> +<br>
> +     When the pointer capability is added, a client may create a<br>
> +     wl_pointer object using the wl_seat.get_pointer request. This object<br>
> +     will receive pointer events until the capability is removed in the<br>
> +     future.<br>
> +<br>
> +     When the pointer capability is removed, a client should destroy the<br>
> +     wl_pointer objects associated with the seat where the capability was<br>
> +     removed, using the wl_pointer.release request. No further pointer<br>
> +     events will be received on these objects.<br>
> +<br>
> +     If a seat regains the pointer capability and a client has a pointer<br>
> +     object obtained previously, that object may start sending pointer<br>
> +     events. This behavior was implemented in some compositors supporting<br>
> +     version 5 or less of the wl_seat interface and is considered a<br>
<br>
</div></div>5 -> 4<br>
<span class=""><br>
> +     misinterpretation of the intended behavior.<br>
<br>
</span>tricycleshed: This newline will be ignored when displayed as HTML, so I<br>
don't think it that good to rely on such formatting.<br>
<span class=""><br>
> +     This behavior must not be relied upon by the client. A compositor<br>
> +     implementing version 6 or later of the wl_seat or wl_pointer<br>
<br>
</span>6 -> 5<br>
<span class=""><br>
> +     interface must not send events to a wl_pointer object created<br>
> +     before the most recent event notifying the client of an added<br>
> +     pointer capability.<br>
<br>
<br>
</span>This to me reads like we are now aiming to break those clients, as if<br>
they happen to connect to a newer compositor supporting version >= 5<br>
of wl_seat will not continue supporting the old behaviour. Was that the<br>
conclusion drawn?<br>
<br>
If so is the case, the text sounds correct to me, but I think it could be<br>
made to sound more obvious that the behaviour is not supported any more.<br>
<br>
        In some compositors only supporting version 4 or less of the<br>
        wl_seat, if a seat regains the pointer capability and a client<br>
        has a pointer object obtained previously, that object may start<br>
        sending pointer events. This behaviour is considered a<br>
        misinterpretation and must not be relied upon by the client. A<br>
        compositor implementing version 5 or later of the wl_seat or<br>
        wl_pointer interface must not send events to a wl_pointer object<br>
        created before the most recent event notifying the client of an<br>
        added pointer capability.<br>
<br>
That way its more up front that its old unsupported behaviour.<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
Jonas<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
> +<br>
> +     The above behavior also applies to wl_keyboard and wl_touch with the<br>
> +     keyboard and touch capabilities, respectively.<br>
>        </description><br>
>        <arg name="capabilities" type="uint" enum="capability"/><br>
>      </event><br>
> @@ -1406,7 +1430,9 @@<br>
>       for this seat.<br>
><br>
>       This request only takes effect if the seat has the pointer<br>
> -     capability.<br>
> +     capability, or has had the pointer capability in the past.<br>
> +     It is a protocol violation to issue this request on a seat that has<br>
> +     never had the pointer capability.<br>
>        </description><br>
>        <arg name="id" type="new_id" interface="wl_pointer"/><br>
>      </request><br>
> @@ -1417,7 +1443,9 @@<br>
>       for this seat.<br>
><br>
>       This request only takes effect if the seat has the keyboard<br>
> -     capability.<br>
> +     capability, or has had the keyboard capability in the past.<br>
> +     It is a protocol violation to issue this request on a seat that has<br>
> +     never had the keyboard capability.<br>
>        </description><br>
>        <arg name="id" type="new_id" interface="wl_keyboard"/><br>
>      </request><br>
> @@ -1428,7 +1456,9 @@<br>
>       for this seat.<br>
><br>
>       This request only takes effect if the seat has the touch<br>
> -     capability.<br>
> +     capability, or has had the touch capability in the past.<br>
> +     It is a protocol violation to issue this request on a seat that has<br>
> +     never had the touch capability.<br>
>        </description><br>
>        <arg name="id" type="new_id" interface="wl_touch"/><br>
>      </request><br>
> --<br>
> 2.5.0<br>
><br>
</div></div></blockquote></div><br></div>