diff options
author | Matthias Clasen <mclasen@redhat.com> | 2013-03-30 01:11:39 -0400 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2013-04-01 17:40:14 -0400 |
commit | c63a59b802f0393dab8e77d028616da1aab2c287 (patch) | |
tree | 3f43d2c29ac7972a3a758ab8f4792b371326862d /protocol | |
parent | e38f433313e7c13960fb06f2b761f324010b8d64 (diff) |
docs: Improve wl_surface protocol docs
Use NULL consistently. And add some more information in a few
places.
Diffstat (limited to 'protocol')
-rw-r--r-- | protocol/wayland.xml | 123 |
1 files changed, 69 insertions, 54 deletions
diff --git a/protocol/wayland.xml b/protocol/wayland.xml index a3599f0..3e674f3 100644 --- a/protocol/wayland.xml +++ b/protocol/wayland.xml @@ -874,48 +874,54 @@ <interface name="wl_surface" version="2"> <description summary="an onscreen surface"> - A surface. This is an image that is displayed on the screen. + A surface is a rectangular area that is displayed on the screen. It has a location, size and pixel contents. + + Surfaces are also used for some special purposes, e.g. as + cursor images for pointers, drag icons, etc. </description> <request name="destroy" type="destructor"> <description summary="delete surface"> - Deletes the surface and invalidates its object id. + Deletes the surface and invalidates its object ID. </description> </request> <request name="attach"> <description summary="set the surface contents"> - Set the contents of a buffer into this surface. The x and y - arguments specify the location of the new pending buffer's upper - left corner, relative to the current buffer's upper left corner. In - other words, the x and y, and the width and height of the wl_buffer - together define in which directions the surface's size changes. + Set a buffer as the content of this surface. + + The x and y arguments specify the location of the new pending + buffer's upper left corner, relative to the current buffer's + upper left corner. In other words, the x and y, and the width + and height of the wl_buffer together define in which directions + the surface's size changes. Surface contents are double-buffered state, see wl_surface.commit. The initial surface contents are void; there is no content. - wl_surface.attach assigns the given wl_buffer as the pending wl_buffer. - wl_surface.commit makes the pending wl_buffer the new + wl_surface.attach assigns the given wl_buffer as the pending + wl_buffer. wl_surface.commit makes the pending wl_buffer the new surface contents, and the size of the surface becomes the size of - the wl_buffer. After commit, there is no pending buffer until the - next attach. + the wl_buffer, as described above. After commit, there is no + pending buffer until the next attach. Committing a pending wl_buffer allows the compositor to read the - pixels in the wl_buffer. The compositor may access the pixels at any - time after the wl_surface.commit request. When the compositor will - not access the pixels anymore, it will send the wl_buffer.release - event. Only after receiving wl_buffer.release, the client may re-use - the wl_buffer. A wl_buffer, that has been attached and then replaced - by another attach instead of committed, will not receive a release - event, and is not used by the compositor. - - Destroying the wl_buffer after wl_buffer.release does not change the - surface contents. However, if the client destroys the wl_buffer - before receiving wl_buffer.release, the surface contents become - undefined immediately. - - Only if wl_surface.attach is sent with a nil wl_buffer, the + pixels in the wl_buffer. The compositor may access the pixels at + any time after the wl_surface.commit request. When the compositor + will not access the pixels anymore, it will send the + wl_buffer.release event. Only after receiving wl_buffer.release, + the client may re-use the wl_buffer. A wl_buffer that has been + attached and then replaced by another attach instead of committed + will not receive a release event, and is not used by the + compositor. + + Destroying the wl_buffer after wl_buffer.release does not change + the surface contents. However, if the client destroys the + wl_buffer before receiving wl_buffer.release, the surface + contents become undefined immediately. + + Only if wl_surface.attach is sent with a NULL wl_buffer, the following wl_surface.commit will remove the surface content. </description> @@ -928,18 +934,20 @@ <description summary="mark part of the surface damaged"> This request is used to describe the regions where the pending buffer is different from the current surface contents, and where - the surface therefore needs to be repainted. The pending buffer must - be set by wl_surface.attach before sending damage. The compositor - ignores the parts of the damage that fall outside of the surface. + the surface therefore needs to be repainted. The pending buffer + must be set by wl_surface.attach before sending damage. The + compositor ignores the parts of the damage that fall outside of + the surface. Damage is double-buffered state, see wl_surface.commit. The initial value for pending damage is empty: no damage. - wl_surface.damage adds pending damage: the new pending damage is the - union of old pending damage and the given rectangle. - wl_surface.commit assigns pending damage as the current damage, and - clears pending damage. The server will clear the current damage as - it repaints the surface. + wl_surface.damage adds pending damage: the new pending damage + is the union of old pending damage and the given rectangle. + + wl_surface.commit assigns pending damage as the current damage, + and clears pending damage. The server will clear the current + damage as it repaints the surface. </description> <arg name="x" type="int"/> @@ -972,11 +980,14 @@ <request name="set_opaque_region"> <description summary="set opaque region"> This request sets the region of the surface that contains - opaque content. The opaque region is an optimization hint for - the compositor that lets it optimize out redrawing of content - behind opaque regions. Setting an opaque region is not - required for correct behaviour, but marking transparent - content as opaque will result in repaint artifacts. + opaque content. + + The opaque region is an optimization hint for the compositor + that lets it optimize out redrawing of content behind opaque + regions. Setting an opaque region is not required for correct + behaviour, but marking transparent content as opaque will result + in repaint artifacts. + The compositor ignores the parts of the opaque region that fall outside of the surface. @@ -984,11 +995,11 @@ wl_surface.set_opaque_region changes the pending opaque region. wl_surface.commit copies the pending region to the current region. - Otherwise the pending and current regions are never changed. + Otherwise, the pending and current regions are never changed. The initial value for opaque region is empty. Setting the pending opaque region has copy semantics, and the wl_region object can be - destroyed immediately. A nil wl_region causes the pending opaque + destroyed immediately. A NULL wl_region causes the pending opaque region to be set to empty. </description> @@ -998,10 +1009,11 @@ <request name="set_input_region"> <description summary="set input region"> This request sets the region of the surface that can receive - pointer and touch events. Input events happening outside of - this region will try the next surface in the server surface - stack. The compositor ignores the parts of the input region that - fall outside of the surface. + pointer and touch events. + + Input events happening outside of this region will try the next + surface in the server surface stack. The compositor ignores the + parts of the input region that fall outside of the surface. Input region is double-buffered state, see wl_surface.commit. @@ -1011,10 +1023,11 @@ except cursor and icon surfaces are special cases, see wl_pointer.set_cursor and wl_data_device.start_drag. - The initial value for input region is infinite. That means the whole - surface will accept input. Setting the pending input region has copy - semantics, and the wl_region object can be destroyed immediately. A - nil wl_region causes the input region to be set to infinite. + The initial value for input region is infinite. That means the + whole surface will accept input. Setting the pending input region + has copy semantics, and the wl_region object can be destroyed + immediately. A NULL wl_region causes the input region to be set + to infinite. </description> <arg name="region" type="object" interface="wl_region" allow-null="true"/> @@ -1044,18 +1057,20 @@ <event name="enter"> <description summary="surface enters an output"> - This is emitted whenever a surface's creation, movement, or resizing - results in some part of it being within the scanout region of an - output. + This is emitted whenever a surface's creation, movement, or resizing + results in some part of it being within the scanout region of an + output. + + Note that a surface may be overlapping with zero or more outputs. </description> <arg name="output" type="object" interface="wl_output"/> </event> <event name="leave"> <description summary="surface leaves an output"> - This is emitted whenever a surface's creation, movement, or resizing - results in it no longer having any part of it within the scanout region - of an output. + This is emitted whenever a surface's creation, movement, or resizing + results in it no longer having any part of it within the scanout region + of an output. </description> <arg name="output" type="object" interface="wl_output"/> </event> |