protocol: specify behavior of get_pointer when capabilities change

Also applies to touch/keyboard

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
This commit is contained in:
Peter Hutterer 2015-12-07 15:43:35 +10:00 committed by Bryce Harrington
parent 3384f69ecf
commit 87321d0f2f

View file

@ -1396,6 +1396,27 @@
This is emitted whenever a seat gains or loses the pointer, This is emitted whenever a seat gains or loses the pointer,
keyboard or touch capabilities. The argument is a capability keyboard or touch capabilities. The argument is a capability
enum containing the complete set of capabilities this seat has. enum containing the complete set of capabilities this seat has.
When the pointer capability is added, a client may create a
wl_pointer object using the wl_seat.get_pointer request. This object
will receive pointer events until the capability is removed in the
future.
When the pointer capability is removed, a client should destroy the
wl_pointer objects associated with the seat where the capability was
removed, using the wl_pointer.release request. No further pointer
events will be received on these objects.
In some compositors, if a seat regains the pointer capability and a
client has a previously obtained wl_pointer object of version 4 or
less, that object may start sending pointer events again. This
behavior is considered a misinterpretation of the intended behavior
and must not be relied upon by the client. wl_pointer objects of
version 5 or later must not send events if created before the most
recent event notifying the client of an added pointer capability.
The above behavior also applies to wl_keyboard and wl_touch with the
keyboard and touch capabilities, respectively.
</description> </description>
<arg name="capabilities" type="uint" enum="capability"/> <arg name="capabilities" type="uint" enum="capability"/>
</event> </event>
@ -1406,7 +1427,9 @@
for this seat. for this seat.
This request only takes effect if the seat has the pointer This request only takes effect if the seat has the pointer
capability. capability, or has had the pointer capability in the past.
It is a protocol violation to issue this request on a seat that has
never had the pointer capability.
</description> </description>
<arg name="id" type="new_id" interface="wl_pointer"/> <arg name="id" type="new_id" interface="wl_pointer"/>
</request> </request>
@ -1417,7 +1440,9 @@
for this seat. for this seat.
This request only takes effect if the seat has the keyboard This request only takes effect if the seat has the keyboard
capability. capability, or has had the keyboard capability in the past.
It is a protocol violation to issue this request on a seat that has
never had the keyboard capability.
</description> </description>
<arg name="id" type="new_id" interface="wl_keyboard"/> <arg name="id" type="new_id" interface="wl_keyboard"/>
</request> </request>
@ -1428,7 +1453,9 @@
for this seat. for this seat.
This request only takes effect if the seat has the touch This request only takes effect if the seat has the touch
capability. capability, or has had the touch capability in the past.
It is a protocol violation to issue this request on a seat that has
never had the touch capability.
</description> </description>
<arg name="id" type="new_id" interface="wl_touch"/> <arg name="id" type="new_id" interface="wl_touch"/>
</request> </request>