Makefile.am | 4 configure.ac | 2 debian/changelog | 6 debian/control | 2 stable/presentation-time/README | 5 stable/presentation-time/presentation-time.xml | 274 ++++ unstable/pointer-constraints/pointer-constraints-unstable-v1.xml | 2 unstable/tablet/README | 4 unstable/tablet/tablet-unstable-v1.xml | 637 ++++++++++ 9 files changed, 933 insertions(+), 3 deletions(-)
New commits: commit cf68147c5303ac76b84d1300c038e46737f168b5 Author: Héctor Orón Martínez <zu...@debian.org> Date: Mon Apr 4 10:02:33 2016 +0200 Release Debian version wayland-protocols-1.3-1 Signed-off-by: Héctor Orón Martínez <zu...@debian.org> diff --git a/debian/changelog b/debian/changelog index 0df9651..f24c050 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +wayland-protocols (1.3-1) unstable; urgency=medium + + * New upstream release + + -- Héctor Orón Martínez <zu...@debian.org> Mon, 04 Apr 2016 09:58:48 +0200 + wayland-protocols (1.1-2) unstable; urgency=medium * d/control: build depend on wayland-scanner and pkg-config. commit 732dc1afa71ac8ce85dc0d2f748d336f3dc99b21 Author: Héctor Orón Martínez <zu...@debian.org> Date: Mon Apr 4 10:00:06 2016 +0200 d/control: bump standard version, no changes Signed-off-by: Héctor Orón Martínez <zu...@debian.org> diff --git a/debian/control b/debian/control index 45f3faa..6115ba3 100644 --- a/debian/control +++ b/debian/control @@ -8,7 +8,7 @@ Build-Depends: dh-autoreconf, libwayland-dev, pkg-config -Standards-Version: 3.9.6 +Standards-Version: 3.9.7 Homepage: http://wayland.freedesktop.org/ Vcs-Git: git://anonscm.debian.org/pkg-xorg/wayland/wayland-protocols.git Vcs-Browser: https://anonscm.debian.org/cgit/pkg-xorg/wayland/wayland-protocols.git commit 82bb922f5b497b06cab175d0281ef8d5e8009878 Author: Jonas Ådahl <jad...@gmail.com> Date: Thu Mar 10 15:02:29 2016 +0800 configure.ac: Bump version to 1.3 Signed-off-by: Jonas Ådahl <jad...@gmail.com> diff --git a/configure.ac b/configure.ac index 75317ff..5b48b1a 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ AC_PREREQ([2.64]) m4_define([wayland_protocols_major_version], [1]) -m4_define([wayland_protocols_minor_version], [2]) +m4_define([wayland_protocols_minor_version], [3]) m4_define([wayland_protocols_version], [wayland_protocols_major_version.wayland_protocols_minor_version]) commit 418915eeba5679832d6a7b50ece02482347056a4 Author: Jonas Ådahl <jad...@gmail.com> Date: Wed Mar 9 15:49:51 2016 +0800 Revert "xdg-shell: clarify xdg_surface creation semantics regarding buffers" This patch was intended to be part of the coming v6 version of the xdg_shell protocol. It is an semantically backward incompatible change, so it cannot be implemented in xdg_shell v5 without breaking compatibility with available clients. This reverts commit 275fd34023fabdcb487f2adf2fe80bda1e4bf0dc. diff --git a/unstable/xdg-shell/xdg-shell-unstable-v5.xml b/unstable/xdg-shell/xdg-shell-unstable-v5.xml index 0b99326..542491f 100644 --- a/unstable/xdg-shell/xdg-shell-unstable-v5.xml +++ b/unstable/xdg-shell/xdg-shell-unstable-v5.xml @@ -147,12 +147,14 @@ them, and associate metadata like title and app id. The client must call wl_surface.commit on the corresponding wl_surface - for the xdg_surface state to take effect. - - Creating an xdg_surface from a wl_surface which has a buffer attached or - committed is a client error, and any attempts by a client to attach or - manipulate a buffer prior to the first xdg_surface.configure call must - also be treated as errors. + for the xdg_surface state to take effect. Prior to committing the new + state, it can set up initial configuration, such as maximizing or setting + a window geometry. + + Even without attaching a buffer the compositor must respond to initial + committed configuration, for instance sending a configure event with + expected window geometry if the client maximized its surface during + initialization. For a surface to be mapped by the compositor the client must have committed both an xdg_surface state and a buffer. commit ca86a592c2663871644cbde43bb1eb01bb2fa372 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Wed Mar 9 16:10:48 2016 +1000 Add the tablet protocol Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Daniel Stone <dani...@collabora.com> Reviewed-by: Jonas Ådahl <jad...@gmail.com> diff --git a/Makefile.am b/Makefile.am index e0bd079..033789f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -7,6 +7,7 @@ unstable_protocols = \ unstable/xdg-shell/xdg-shell-unstable-v5.xml \ unstable/relative-pointer/relative-pointer-unstable-v1.xml \ unstable/pointer-constraints/pointer-constraints-unstable-v1.xml \ + unstable/tablet/tablet-unstable-v1.xml \ $(NULL) stable_protocols = \ diff --git a/unstable/tablet/README b/unstable/tablet/README new file mode 100644 index 0000000..7ba8e77 --- /dev/null +++ b/unstable/tablet/README @@ -0,0 +1,4 @@ +Tablet protocol + +Maintainers: +Peter Hutterer <peter.hutte...@who-t.net> diff --git a/unstable/tablet/tablet-unstable-v1.xml b/unstable/tablet/tablet-unstable-v1.xml new file mode 100644 index 0000000..8e3ab6f --- /dev/null +++ b/unstable/tablet/tablet-unstable-v1.xml @@ -0,0 +1,637 @@ +<?xml version="1.0" encoding="UTF-8"?> +<protocol name="tablet_unstable_v1"> + <copyright> + Copyright 2014 © Stephen "Lyude" Chandler Paul + Copyright 2015-2016 © Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial + portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + </copyright> + <description summary="Wayland protocol for graphics tablets"> + This description provides a high-level overview of the interplay between + the interfaces defined this protocol. For details, see the protocol + specification. + + More than one tablet may exist, and device-specifics matter. Tablets are + not represented by a single virtual device like wl_pointer. A client + binds to the tablet manager object which is just a proxy object. From + that, the client requests wp_tablet_manager.get_tablet_seat(wl_seat) + and that returns the actual interface that has all the tablets. With + this indirection, we can avoid merging wp_tablet into the actual wayland + protocol, a long-term benefit. + + The wp_tablet_seat sends a "tablet added" event for each tablet + connected. That event is followed by descriptive events about the + hardware; currently that includes events for name, vid/pid and + a wp_tablet.path event that describes a local path. This path can be + used to uniquely identify a tablet or get more information through + libwacom. Emulated or nested tablets can skip any of those, e.g. a + virtual tablet may not have a vid/pid. The sequence of descriptive + events is terminated by a wp_tablet.done event to signal that a client + may now finalize any initialization for that tablet. + + Events from tablets require a tool in proximity. Tools are also managed + by the tablet seat; a "tool added" event is sent whenever a tool is new + to the compositor. That event is followed by a number of descriptive + events about the hardware; currently that includes capabilities, + hardware id and serial number, and tool type. Similar to the tablet + interface, a wp_tablet_tool.done event is sent to terminate that initial + sequence. + + Any event from a tool happens on the wp_tablet_tool interface. When the + tool gets into proximity of the tablet, a proximity_in event is sent on + the wp_tablet_tool interface, listing the tablet and the surface. That + event is followed by a motion event with the coordinates. After that, + it's the usual motion, axis, button, etc. events. The protocol's + serialisation means events are grouped by wp_tablet_tool.frame events. + + Two special events (that don't exist in X) are down and up. They signal + "tip touching the surface". For tablets without real proximity + detection, the sequence is: proximity_in, motion, down, frame. + + When the tool leaves proximity, a proximity_out event is sent. If any + button is still down, a button release event is sent before this + proximity event. These button events are sent in the same frame as the + proximity event to signal to the client that the buttons were held when + the tool left proximity. + + If the tool moves out of the surface but stays in proximity (i.e. + between windows), compositor-specific grab policies apply. This usually + means that the proximity-out is delayed until all buttons are released. + + Moving a tool physically from one tablet to the other has no real effect + on the protocol, since we already have the tool object from the "tool + added" event. All the information is already there and the proximity + events on both tablets are all a client needs to reconstruct what + happened. + + Some extra axes are normalized, i.e. the client knows the range as + specified in the protocol (e.g. [0, 65535]), the granularity however is + unknown. The current normalized axes are pressure, distance, and slider. + + Other extra axes are in physical units as specified in the protocol. + The current extra axes with physical units are tilt, rotation and + wheel rotation. + + Since tablets work independently of the pointer controlled by the mouse, + the focus handling is independent too and controlled by proximity. + The wp_tablet_tool.set_cursor request sets a tool-specific cursor. + This cursor surface may be the same as the mouse cursor, and it may be + the same across tools but it is possible to be more fine-grained. For + example, a client may set different cursors for the pen and eraser. + + Tools are generally independent of tablets and it is + compositor-specific policy when a tool can be removed. Common approaches + will likely include some form of removing a tool when all tablets the + tool was used on are removed. + + Warning! The protocol described in this file is experimental and + backward incompatible changes may be made. Backward compatible changes + may be added together with the corresponding interface version bump. + Backward incompatible changes are done by bumping the version number in + the protocol and interface names and resetting the interface version. + Once the protocol is to be declared stable, the 'z' prefix and the + version number in the protocol and interface names are removed and the + interface version number is reset. + </description> + <interface name="zwp_tablet_manager_v1" version="1"> + <description summary="controller object for graphic tablet devices"> + An object that provides access to the graphics tablets available on this + system. All tablets are associated with a seat, to get access to the + actual tablets, use wp_tablet_manager.get_tablet_seat. + </description> + + <request name="get_tablet_seat"> + <description summary="get the tablet seat"> + Get the wp_tablet_seat object for the given seat. This object + provides access to all graphics tablets in this seat. + </description> + <arg name="tablet_seat" type="new_id" interface="zwp_tablet_seat_v1"/> + <arg name="seat" type="object" interface="wl_seat" summary="The wl_seat object to retrieve the tablets for" /> + </request> + + <request name="destroy" type="destructor"> + <description summary="release the memory for the tablet manager object"> + Destroy the wp_tablet_manager object. Objects created from this + object are unaffected and should be destroyed separately. + </description> + </request> + </interface> + + <interface name="zwp_tablet_seat_v1" version="1"> + <description summary="controller object for graphic tablet devices of a seat"> + An object that provides access to the graphics tablets available on this + seat. After binding to this interface, the compositor sends a set of + wp_tablet_seat.tablet_added and wp_tablet_seat.tool_added events. + </description> + + <request name="destroy" type="destructor"> + <description summary="release the memory for the tablet seat object"> + Destroy the wp_tablet_seat object. Objects created from this + object are unaffected and should be destroyed separately. + </description> + </request> + + <event name="tablet_added"> + <description summary="new device notification"> + This event is sent whenever a new tablet becomes available on this + seat. This event only provides the object id of the tablet, any + static information about the tablet (device name, vid/pid, etc.) is + sent through the wp_tablet interface. + </description> + <arg name="id" type="new_id" interface="zwp_tablet_v1" summary="the newly added graphics tablet"/> + </event> + + <event name="tool_added"> + <description summary="a new tool has been used with a tablet"> + This event is sent whenever a tool that has not previously been used + with a tablet comes into use. This event only provides the object id + of the tool; any static information about the tool (capabilities, + type, etc.) is sent through the wp_tablet_tool interface. + </description> + <arg name="id" type="new_id" interface="zwp_tablet_tool_v1" summary="the newly added tablet tool"/> + </event> + </interface> + + <interface name="zwp_tablet_tool_v1" version="1"> + <description summary="a physical tablet tool"> + An object that represents a physical tool that has been, or is + currently in use with a tablet in this seat. Each wp_tablet_tool + object stays valid until the client destroys it; the compositor + reuses the wp_tablet_tool object to indicate that the object's + respective physical tool has come into proximity of a tablet again. + + A wp_tablet_tool object's relation to a physical tool depends on the + tablet's ability to report serial numbers. If the tablet supports + this capability, then the object represents a specific physical tool + and can be identified even when used on multiple tablets. + + A tablet tool has a number of static characteristics, e.g. tool type, + hardware_serial and capabilities. These capabilities are sent in an + event sequence after the wp_tablet_seat.tool_added event before any + actual events from this tool. This initial event sequence is + terminated by a wp_tablet_tool.done event. + + Tablet tool events are grouped by wp_tablet_tool.frame events. + Any events received before a wp_tablet_tool.frame event should be + considered part of the same hardware state change. + </description> + + <request name="set_cursor"> + <description summary="set the tablet tool's surface"> + Sets the surface of the cursor used for this tool on the given + tablet. This request only takes effect if the tool is in proximity + of one of the requesting client's surfaces or the surface parameter + is the current pointer surface. If there was a previous surface set + with this request it is replaced. If surface is NULL, the cursor + image is hidden. + + The parameters hotspot_x and hotspot_y define the position of the + pointer surface relative to the pointer location. Its top-left corner + is always at (x, y) - (hotspot_x, hotspot_y), where (x, y) are the + coordinates of the pointer location, in surface local coordinates. + + On surface.attach requests to the pointer surface, hotspot_x and + hotspot_y are decremented by the x and y parameters passed to the + request. Attach must be confirmed by wl_surface.commit as usual. + + The hotspot can also be updated by passing the currently set pointer + surface to this request with new values for hotspot_x and hotspot_y. + + The current and pending input regions of the wl_surface are cleared, + and wl_surface.set_input_region is ignored until the wl_surface is no + longer used as the cursor. When the use as a cursor ends, the current + and pending input regions become undefined, and the wl_surface is + unmapped. + + This request gives the surface the role of a cursor. The role + assigned by this request is the same as assigned by + wl_pointer.set_cursor meaning the same surface can be + used both as a wl_pointer cursor and a wp_tablet cursor. If the + surface already has another role, it raises a protocol error + The surface may be used on multiple tablets and across multiple + seats. + </description> + <arg name="serial" type="uint" summary="serial of the enter event"/> + <arg name="surface" type="object" interface="wl_surface" allow-null="true"/> + <arg name="hotspot_x" type="int" summary="x coordinate in surface-relative coordinates"/> + <arg name="hotspot_y" type="int" summary="y coordinate in surface-relative coordinates"/> + </request> + + <request name="destroy" type="destructor"> + <description summary="destroy the tool object"> + This destroys the client's resource for this tool object. + </description> + </request> + + <enum name="type"> + <description summary="a physical tool type"> + Describes the physical type of a tool. The physical type of a tool + generally defines its base usage. + + The mouse tool represents a mouse-shaped tool that is not a relative + device but bound to the tablet's surface, providing absolute + coordinates. + + The lens tool is a mouse-shaped tool with an attached lens to + provide precision focus. + </description> + <entry name="pen" value="0x140" summary="Pen"/> + <entry name="eraser" value="0x141" summary="Eraser"/> + <entry name="brush" value="0x142" summary="Brush"/> + <entry name="pencil" value="0x143" summary="Pencil"/> + <entry name="airbrush" value="0x144" summary="Airbrush"/> + <entry name="finger" value="0x145" summary="Finger"/> + <entry name="mouse" value="0x146" summary="Mouse"/> + <entry name="lens" value="0x147" summary="Lens"/> + </enum> + + <event name="type"> + <description summary="tool type"> + The tool type is the high-level type of the tool and usually decides + the interaction expected from this tool. + + This event is sent in the initial burst of events before the + wp_tablet_tool.done event. + </description> + <arg name="tool_type" type="uint" enum="type" summary="the physical tool type"/> + </event> + + <event name="hardware_serial"> + <description summary="unique hardware serial number of the tool"> + If the physical tool can be identified by a unique 64-bit serial + number, this event notifies the client of this serial number. + + If multiple tablets are available in the same seat and the tool is + uniquely identifiable by the serial number, that tool may move + between tablets. + + Otherwise, if the tool has no serial number and this event is + missing, the tool is tied to the tablet it first comes into + proximity with. Even if the physical tool is used on multiple + tablets, separate wp_tablet_tool objects will be created, one per + tablet. + + This event is sent in the initial burst of events before the + wp_tablet_tool.done event. + </description> + <arg name="hardware_serial_hi" type="uint" summary="the unique serial number of the tool, most significant bits"/> + <arg name="hardware_serial_lo" type="uint" summary="the unique serial number of the tool, least significant bits"/> + </event> + + <event name="hardware_id_wacom"> + <description summary="hardware id notification in Wacom's format"> + This event notifies the client of a hardware id available on this tool. + + The hardware id is a device-specific 64-bit id that provides extra + information about the tool in use, beyond the wl_tool.type + enumeration. The format of the id is specific to tablets made by + Wacom Inc. For example, the hardware id of a Wacom Grip + Pen (a stylus) is 0x802. + + This event is sent in the initial burst of events before the + wp_tablet_tool.done event. + </description> + <arg name="hardware_id_hi" type="uint" summary="the hardware id, most significant bits"/> + <arg name="hardware_id_lo" type="uint" summary="the hardware id, least significant bits"/> + </event> + + <enum name="capability"> + <description summary="capability flags for a tool"> + Describes extra capabilities on a tablet. + + Any tool must provide x and y values, extra axes are + device-specific. + </description> + <entry name="tilt" value="1" summary="Tilt axes"/> + <entry name="pressure" value="2" summary="Pressure axis"/> + <entry name="distance" value="3" summary="Distance axis"/> + <entry name="rotation" value="4" summary="Z-rotation axis"/> + <entry name="slider" value="5" summary="Slider axis"/> + <entry name="wheel" value="6" summary="Wheel axis"/> + </enum> + + <event name="capability"> + <description summary="tool capability notification"> + This event notifies the client of any capabilities of this tool, + beyond the main set of x/y axes and tip up/down detection. + + One event is sent for each extra capability available on this tool. + + This event is sent in the initial burst of events before the + wp_tablet_tool.done event. + </description> + <arg name="capability" type="uint" enum="capability" summary="the capability"/> + </event> + + <event name="done"> + <description summary="tool description events sequence complete"> + This event signals the end of the initial burst of descriptive + events. A client may consider the static description of the tool to + be complete and finalize initialization of the tool. + </description> + </event> + + <event name="removed"> + <description summary="tool removed"> + This event is sent when the tool is removed from the system and will + send no further events. Should the physical tool comes back into + proximity later, a new wp_tablet_tool object will be created. + + It is compositor-dependent when a tool is removed. A compositor may + remove a tool on proximity out, tablet removal or any other reason. + A compositor may also keep a tool alive until shutdown. + + If the tool is currently in proximity, a proximity_out event will be + sent before the removed event. See wp_tablet_tool.proximity_out for + the handling of any buttons logically down. + + When this event is received, the client must wp_tablet_tool.destroy + the object. + </description> + </event> + + <event name="proximity_in"> + <description summary="proximity in event"> + Notification that this tool is focused on a certain surface. + + This event can be received when the tool has moved from one surface to + another, or when the tool has come back into proximity above the + surface. + + If any button is logically down when the tool comes into proximity, + the respective button event is sent after the proximity_in event but + within the same frame as the proximity_in event. + </description> + <arg name="serial" type="uint"/> + <arg name="tablet" type="object" interface="zwp_tablet_v1" summary="The tablet the tool is in proximity of"/> + <arg name="surface" type="object" interface="wl_surface" summary="The current surface the tablet tool is over"/> + </event> + + <event name="proximity_out"> + <description summary="proximity out event"> + Notification that this tool has either left proximity, or is no + longer focused on a certain surface. + + When the tablet tool leaves proximity of the tablet, button release + events are sent for each button that was held down at the time of + leaving proximity. These events are sent before the proximity_out + event but within the same wp_tablet.frame. + + If the tool stays within proximity of the tablet, but the focus + changes from one surface to another, a button release event may not + be sent until the button is actually released or the tool leaves the + proximity of the tablet. + </description> + </event> + + <event name="down"> + <description summary="tablet tool is making contact"> + Sent whenever the tablet tool comes in contact with the surface of the + tablet. + + If the tool is already in contact with the tablet when entering the + input region, the client owning said region will receive a + wp_tablet.proximity_in event, followed by a wp_tablet.down + event and a wp_tablet.frame event. + + Note that this event describes logical contact, not physical + contact. On some devices, a compositor may not consider a tool in + logical contact until a minimum physical pressure threshold is + exceeded. + </description> + <arg name="serial" type="uint"/> + </event> + + <event name="up"> + <description summary="tablet tool is no longer making contact"> + Sent whenever the tablet tool stops making contact with the surface of + the tablet, or when the tablet tool moves out of the input region + and the compositor grab (if any) is dismissed. + + If the tablet tool moves out of the input region while in contact + with the surface of the tablet and the compositor does not have an + ongoing grab on the surface, the client owning said region will + receive a wp_tablet.up event, followed by a wp_tablet.proximity_out + event and a wp_tablet.frame event. If the compositor has an ongoing + grab on this device, this event sequence is sent whenever the grab + is dismissed in the future. + + Note that this event describes logical contact, not physical + contact. On some devices, a compositor may not consider a tool out + of logical contact until physical pressure falls below a specific + threshold. + </description> + </event> + + <event name="motion"> + <description summary="motion event"> + Sent whenever a tablet tool moves. + </description> + <arg name="x" type="fixed" summary="surface-relative x coordinate"/> + <arg name="y" type="fixed" summary="surface-relative y coordinate"/> + </event> + + <event name="pressure"> + <description summary="pressure change event"> + Sent whenever the pressure axis on a tool changes. The value of this + event is normalized to a value between 0 and 65535. + + Note that pressure may be nonzero even when a tool not in logical + contact. See the down and up events for more details. + </description> + <arg name="pressure" type="uint" summary="The current pressure value"/> + </event> + + <event name="distance"> + <description summary="distance change event"> + Sent whenever the distance axis on a tool changes. The value of this + event is normalized to a value between 0 and 65535. + + Note that distance may be nonzero even when a tool is not in logical + contact. See the down and up events for more details. + </description> + <arg name="distance" type="uint" summary="The current distance value"/> + </event> + + <event name="tilt"> + <description summary="tilt change event"> + Sent whenever one or both of the tilt axes on a tool change. Each tilt + value is in 0.01 of a degree, relative to the z-axis of the tablet. + The angle is positive when the top of a tool tilts along the + positive x or y axis. + </description> + <arg name="tilt_x" type="int" summary="The current value of the X tilt axis"/> + <arg name="tilt_y" type="int" summary="The current value of the Y tilt axis"/> + </event> + + <event name="rotation"> + <description summary="z-rotation change event"> + Sent whenever the z-rotation axis on the tool changes. The + rotation value is in 0.01 of a degree clockwise from the tool's + logical neutral position. + </description> + <arg name="degrees" type="int" summary="The current rotation of the Z axis"/> + </event> + + <event name="slider"> + <description summary="Slider position change event"> + Sent whenever the slider position on the tool changes. The + value is normalized between -65535 and 65535, with 0 as the logical + neutral position of the slider. + + The slider is available on e.g. the Wacom Airbrush tool. + </description> + <arg name="position" type="int" summary="The current position of slider"/> + </event> + + <event name="wheel"> + <description summary="Wheel delta event"> + Sent whenever the wheel on the tool emits an event. This event + contains two values for the same axis change. The degrees value is + in 0.01 of a degree in the same orientation as the + wl_pointer.vertical_scroll axis. The clicks value is in discrete + logical clicks of the mouse wheel. This value may be zero if the + movement of the wheel was less than one logical click. + + Clients should choose either value and avoid mixing degrees and + clicks. The compositor may accumulate values smaller than a logical + click and emulate click events when a certain threshold is met. + Thus, wl_tablet_tool.wheel events with non-zero clicks values may + have different degrees values. + </description> + <arg name="degrees" type="int" summary="The wheel delta in 0.01 of a degree"/> + <arg name="clicks" type="int" summary="The wheel delta in discrete clicks"/> + </event> + + <enum name="button_state"> + <description summary="physical button state"> + Describes the physical state of a button which provoked the button event + </description> + <entry name="released" value="0" summary="button is not pressed"/> + <entry name="pressed" value="1" summary="button is pressed"/> + </enum> + + <event name="button"> + <description summary="button event"> + Sent whenever a button on the tool is pressed or released. + + If a button is held down when the tool moves in or out of proximity, + button events are generated by the compositor. See + wp_tablet_tool.proximity_in and wp_tablet_tool.proximity_out for + details. + </description> + + <arg name="serial" type="uint"/> + <arg name="button" type="uint" summary="The button whose state has changed"/> + <arg name="state" type="uint" enum="button_state" summary="Whether the button was pressed or released"/> + </event> + + <event name="frame"> + <description summary="frame event"> + Marks the end of a series of axis and/or button updates from the + tablet. The wayland protocol requires axis updates to be sent + sequentially, however all events within a frame should be considered + one hardware event. + </description> + <arg name="time" type="uint" summary="The time of the event with millisecond granularity"/> + </event> + + <enum name="error"> + <entry name="role" value="0" summary="given wl_surface has another role"/> + </enum> + </interface> + + <interface name="zwp_tablet_v1" version="1"> + <description summary="graphics tablet device"> + The wp_tablet interface represents one graphics tablet device. The + tablet interface itself does not generate events; all events are + generated by wp_tablet_tool objects when in proximity above a tablet. + + A tablet has a number of static characteristics, e.g. device name and + pid/vid. These capabilities are sent in an event sequence after the + wp_tablet_seat.tablet_added event. This initial event sequence is + terminated by a wp_tablet.done event. + </description> + + <request name="destroy" type="destructor"> + <description summary="destroy the tablet object"> + This destroys the client's resource for this tablet object. + </description> + </request> + + <event name="name"> + <description summary="tablet device name"> + This event is sent in the initial burst of events before the + wp_tablet.done event. + </description> + <arg name="name" type="string" summary="the device name"/> + </event> + + <event name="id"> + <description summary="tablet device USB vendor/product id"> + This event is sent in the initial burst of events before the + wp_tablet.done event. + </description> + <arg name="vid" type="uint" summary="USB vendor id"/> + <arg name="pid" type="uint" summary="USB product id"/> + </event> + + <event name="path"> + <description summary="path to the device"> + A system-specific device path that indicates which device is behind + this wp_tablet. This information may be used to gather additional + information about the device, e.g. through libwacom. + + A device may have more than one device path, if so, multiple + wp_tablet.path events are sent. A device may be emulated and not + have a device path, in that case this event will not be sent. + + The format of the path is unspecified, it may be a device node, a + sysfs path, or some other identifier. It is up to the client to + identify the string provided. + + This event is sent in the initial burst of events before the + wp_tablet.done event. + </description> + <arg name="path" type="string" summary="path to local device"/> + </event> + + <event name="done"> + <description summary="tablet description events sequence complete"> + This event is sent immediately to signal the end of the initial + burst of descriptive events. A client may consider the static + description of the tablet to be complete and finalize initialization + of the tablet. + </description> + </event> + + <event name="removed"> + <description summary="tablet removed event"> + Sent when the tablet has been removed from the system. When a tablet + is removed, some tools may be removed. + + When this event is received, the client must wp_tablet.destroy + the object. + </description> + </event> + </interface> +</protocol> commit 275fd34023fabdcb487f2adf2fe80bda1e4bf0dc Author: Mike Blumenkrantz <zm...@samsung.com> Date: Wed Dec 2 20:06:46 2015 -0500 xdg-shell: clarify xdg_surface creation semantics regarding buffers this change ensures that the client will set its initial state before performing any drawing, ensuring that there is no mismatch when creating a surface with a non-default state (eg. maximize, fullscreen, ...) looking at the following event flows: 1) wl_surface.attach, wl_surface.commit, xdg_shell.get_xdg_surface 2) wl_surface.attach, xdg_shell.get_xdg_surface, wl_surface.commit 3) xdg_shell.get_xdg_surface, wl_surface.commit, xdg_surface.configure, wl_surface.attach, wl_surface.commit only 3) is now valid, while 1) and 2) will trigger errors as a result of handling buffers prior to creating the xdg surface Reviewed-by: Jasper St. Pierre <jstpie...@mecheye.net> Signed-off-by: Mike Blumenkrantz <zm...@osg.samsung.com> Signed-off-by: Jonas Ådahl <jad...@gmail.com> Reviewed-by: Bryce Harrington <br...@osg.samsung.com> diff --git a/unstable/xdg-shell/xdg-shell-unstable-v5.xml b/unstable/xdg-shell/xdg-shell-unstable-v5.xml index 542491f..0b99326 100644 --- a/unstable/xdg-shell/xdg-shell-unstable-v5.xml +++ b/unstable/xdg-shell/xdg-shell-unstable-v5.xml @@ -147,14 +147,12 @@ them, and associate metadata like title and app id. The client must call wl_surface.commit on the corresponding wl_surface - for the xdg_surface state to take effect. Prior to committing the new - state, it can set up initial configuration, such as maximizing or setting - a window geometry. - - Even without attaching a buffer the compositor must respond to initial - committed configuration, for instance sending a configure event with - expected window geometry if the client maximized its surface during - initialization. + for the xdg_surface state to take effect. + + Creating an xdg_surface from a wl_surface which has a buffer attached or + committed is a client error, and any attempts by a client to attach or + manipulate a buffer prior to the first xdg_surface.configure call must + also be treated as errors. For a surface to be mapped by the compositor the client must have committed both an xdg_surface state and a buffer. commit 22a9cd8a254b31a19c75d4f2cc2806a74309b7b5 Author: Jonas Ådahl <jad...@gmail.com> Date: Mon Mar 7 17:09:30 2016 +0800 configure.ac: Bump version to 1.2 Signed-off-by: Jonas Ådahl <jad...@gmail.com> diff --git a/configure.ac b/configure.ac index 90cce42..75317ff 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ AC_PREREQ([2.64]) m4_define([wayland_protocols_major_version], [1]) -m4_define([wayland_protocols_minor_version], [1]) +m4_define([wayland_protocols_minor_version], [2]) m4_define([wayland_protocols_version], [wayland_protocols_major_version.wayland_protocols_minor_version]) commit 62468ffc9aa43d0b2218853b80fca1a9cd3e60bc Author: Pekka Paalanen <pekka.paala...@collabora.co.uk> Date: Wed Feb 17 16:50:31 2016 +0200 Makefile: install and dist stable protocols Signed-off-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> Reviewed-by: Bryce Harrington <br...@osg.samsung.com> Reviewed-by: Jonas Ådahl <jad...@gmail.com> diff --git a/Makefile.am b/Makefile.am index 21b1a00..e0bd079 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,10 +15,12 @@ stable_protocols = \ nobase_dist_pkgdata_DATA = \ $(unstable_protocols) \ + $(stable_protocols) \ $(NULL) dist_noinst_DATA = \ $(sort $(foreach p,$(unstable_protocols),$(dir $p)README)) \ + $(sort $(foreach p,$(stable_protocols),$(dir $p)README)) \ $(NULL) noarch_pkgconfig_DATA = wayland-protocols.pc commit f4e9da83634afaec50c2e8e27f4d2c6d4a0a9af2 Author: Pekka Paalanen <pekka.paala...@collabora.co.uk> Date: Mon Feb 22 15:11:14 2016 +0200 Makefile: add presentation-time to stable protocols Signed-off-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> Reviewed-by: Bryce Harrington <br...@osg.samsung.com> Reviewed-by: Jonas Ådahl <jad...@gmail.com> diff --git a/Makefile.am b/Makefile.am index 57d0023..21b1a00 100644 --- a/Makefile.am +++ b/Makefile.am @@ -10,6 +10,7 @@ unstable_protocols = \ $(NULL) stable_protocols = \ + stable/presentation-time/presentation-time.xml \ $(NULL) nobase_dist_pkgdata_DATA = \ commit 10ae82c41a58f0c53ea1cba4225006c1f003eb14 Author: Pekka Paalanen <pekka.paala...@collabora.co.uk> Date: Wed Feb 17 16:44:40 2016 +0200 presentation-time: finish stabilization Rename interfaces and the protocol to follow the policy. Signed-off-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> Reviewed-by: Bryce Harrington <br...@osg.samsung.com> Reviewed-by: Jonas Ådahl <jad...@gmail.com> diff --git a/stable/presentation-time/presentation-time.xml b/stable/presentation-time/presentation-time.xml index 10a5f14..dc4ae68 100644 --- a/stable/presentation-time/presentation-time.xml +++ b/stable/presentation-time/presentation-time.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<protocol name="presentation_timing"> +<protocol name="presentation_time"> <!-- wrap:70 --> <copyright> @@ -25,7 +25,7 @@ DEALINGS IN THE SOFTWARE. </copyright> - <interface name="presentation" version="1"> + <interface name="wp_presentation" version="1"> <description summary="timed presentation related wl_surface requests"> <!-- Introduction --> @@ -85,7 +85,7 @@ <arg name="surface" type="object" interface="wl_surface" summary="target surface"/> - <arg name="callback" type="new_id" interface="presentation_feedback" + <arg name="callback" type="new_id" interface="wp_presentation_feedback" summary="new feedback object"/> </request> @@ -129,7 +129,7 @@ </interface> - <interface name="presentation_feedback" version="1"> + <interface name="wp_presentation_feedback" version="1"> <description summary="presentation time feedback event"> A presentation_feedback object returns an indication that a wl_surface content update has become visible to the user. commit 95e7f445edbc8ea52b6f4d22ae1ee514b2323895 Author: Pekka Paalanen <pekka.paala...@collabora.co.uk> Date: Wed Feb 17 16:32:05 2016 +0200 stable: add presentation-time draft This XML file has been copied verbatim from Weston 1.10.0 release, protocol/presentation_timing.xml. The last behavioral change to that file was in December 2014, so the behaviour is considered stable. Interfaces still need to be renamed according wayland-protocols policy. That will be done in a follow-up patch to clearly show the changes. Signed-off-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> Reviewed-by: Bryce Harrington <br...@osg.samsung.com> Reviewed-by: Jonas Ådahl <jad...@gmail.com> diff --git a/stable/presentation-time/README b/stable/presentation-time/README new file mode 100644 index 0000000..c7781ea --- /dev/null +++ b/stable/presentation-time/README @@ -0,0 +1,5 @@ +Presentation time protocol + +Maintainers: +Pekka Paalanen <pekka.paala...@collabora.co.uk> + diff --git a/stable/presentation-time/presentation-time.xml b/stable/presentation-time/presentation-time.xml