protocol: define error codes for role reassignment
authorPekka Paalanen <pekka.paalanen@collabora.co.uk>
Wed, 1 Oct 2014 09:52:22 +0000 (12:52 +0300)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Wed, 8 Oct 2014 10:09:56 +0000 (13:09 +0300)
On the interfaces where it was missing:
- wl_data_device
- wl_shell
- wl_pointer
add an error code for requests that set a wl_surface role when the
wl_surface already has a different role.

This is needed for compositors to appropriately report wl_surface
role violations.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
Acked-by: Jason Ekstrand <jason.ekstrand@intel.com>
protocol/wayland.xml

index 3645208..762482e 100644 (file)
       A wl_data_device provides access to inter-client data transfer
       mechanisms such as copy-and-paste and drag-and-drop.
     </description>
+
+    <enum name="error">
+      <entry name="role" value="0" summary="given wl_surface has another role"/>
+    </enum>
+
     <request name="start_drag">
       <description summary="start drag-and-drop operation">
        This request asks the compositor to start a drag-and-drop
        hotspot, but subsequent wl_surface.attach request can move the
        relative position. Attach requests must be confirmed with
        wl_surface.commit as usual. The icon surface is given the role of
-       a drag-and-drop icon.
+       a drag-and-drop icon. If the icon surface already has another role,
+       it raises a protocol error.
 
        The current and pending input regions of the icon wl_surface are
        cleared, and wl_surface.set_input_region is ignored until the
       a basic surface.
     </description>
 
+    <enum name="error">
+      <entry name="role" value="0" summary="given wl_surface has another role"/>
+    </enum>
+
     <request name="get_shell_surface">
       <description summary="create a shell surface from a surface">
        Create a shell surface for an existing surface. This gives
-       the wl_surface the role of a shell surface.
+       the wl_surface the role of a shell surface. If the wl_surface
+       already has another role, it raises a protocol error.
 
        Only one shell surface can be associated with a given surface.
       </description>
       and scrolling.
     </description>
 
+    <enum name="error">
+      <entry name="role" value="0" summary="given wl_surface has another role"/>
+    </enum>
+
     <request name="set_cursor">
       <description summary="set the pointer surface">
        Set the pointer surface, i.e., the surface that contains the
        pointer image (cursor). This request gives the surface the role
-       of a cursor.
+       of a cursor. If the surface already has another role, it raises
+       a protocol error.
 
        The cursor actually changes only if the pointer
        focus for this device is one of the requesting client's surfaces