summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--COPYING1
-rw-r--r--Makefile.am2
-rw-r--r--configure.ac2
-rw-r--r--protocol/stable/xdg-shell/README2
-rw-r--r--protocol/stable/xdg-shell/xdg-shell.xml5
-rw-r--r--protocol/unstable/fullscreen-shell/fullscreen-shell-unstable-v1.xml25
-rw-r--r--protocol/unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml16
-rw-r--r--protocol/unstable/linux-explicit-synchronization/README5
-rw-r--r--protocol/unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml256
-rw-r--r--protocol/unstable/pointer-gestures/pointer-gestures-unstable-v1.xml15
-rw-r--r--protocol/unstable/primary-selection/README4
-rw-r--r--protocol/unstable/primary-selection/primary-selection-unstable-v1.xml225
-rw-r--r--protocol/unstable/xdg-output/xdg-output-unstable-v1.xml21
13 files changed, 566 insertions, 13 deletions
diff --git a/COPYING b/COPYING
index d37de9e..9700480 100644
--- a/COPYING
+++ b/COPYING
@@ -6,7 +6,6 @@ Copyright © 2014 Jonas Ådahl
Copyright © 2014 Jason Ekstrand
Copyright © 2014-2015 Collabora, Ltd.
Copyright © 2015 Red Hat Inc.
-Copyright © 2011 Benjamin Franzke
Copyright © 2015-2017 Samsung Electronics co., Ltd. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a
diff --git a/Makefile.am b/Makefile.am
index af3ce48..af99343 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -337,6 +337,8 @@ unstable_protocols = \
protocol/unstable/xdg-output/xdg-output-unstable-v1.xml \
protocol/unstable/input-timestamps/input-timestamps-unstable-v1.xml \
protocol/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml \
+ protocol/unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml \
+ protocol/unstable/primary-selection/primary-selection-unstable-v1.xml \
$(NULL)
stable_protocols = \
diff --git a/configure.ac b/configure.ac
index ddbb5fd..f22c5a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7,7 +7,7 @@ m4_define([wayland_extension_version],
[wayland_extension_major_version.wayland_extension_minor_version.wayland_extension_micro_version])
m4_define([wayland_protocols_major_version], [1])
-m4_define([wayland_protocols_minor_version], [16])
+m4_define([wayland_protocols_minor_version], [18])
m4_define([wayland_protocols_version],
[wayland_protocols_major_version.wayland_protocols_minor_version])
diff --git a/protocol/stable/xdg-shell/README b/protocol/stable/xdg-shell/README
index 2769abb..c45f70c 100644
--- a/protocol/stable/xdg-shell/README
+++ b/protocol/stable/xdg-shell/README
@@ -2,4 +2,4 @@ xdg shell protocol
Maintainers:
Jonas Ådahl <jadahl@gmail.com>
-Mike Blumenkrantz <zmike@osg.samsung.com>
+Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
diff --git a/protocol/stable/xdg-shell/xdg-shell.xml b/protocol/stable/xdg-shell/xdg-shell.xml
index e259a1f..3a87a9e 100644
--- a/protocol/stable/xdg-shell/xdg-shell.xml
+++ b/protocol/stable/xdg-shell/xdg-shell.xml
@@ -101,7 +101,7 @@
<description summary="check if the client is alive">
The ping event asks the client if it's still alive. Pass the
serial specified in the event back to the compositor by sending
- a "pong" request back with the specified serial. See xdg_wm_base.ping.
+ a "pong" request back with the specified serial. See xdg_wm_base.pong.
Compositors can use this to determine if the client is still
alive. It's unspecified what will happen if the client doesn't
@@ -604,6 +604,9 @@
For example, "org.freedesktop.FooViewer" where the .desktop file is
"org.freedesktop.FooViewer.desktop".
+ Like other properties, a set_app_id request can be sent after the
+ xdg_toplevel has been mapped to update the property.
+
See the desktop-entry specification [0] for more details on
application identifiers and how they relate to well-known D-Bus
names and .desktop files.
diff --git a/protocol/unstable/fullscreen-shell/fullscreen-shell-unstable-v1.xml b/protocol/unstable/fullscreen-shell/fullscreen-shell-unstable-v1.xml
index 7d141ee..1bca7b7 100644
--- a/protocol/unstable/fullscreen-shell/fullscreen-shell-unstable-v1.xml
+++ b/protocol/unstable/fullscreen-shell/fullscreen-shell-unstable-v1.xml
@@ -1,6 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<protocol name="fullscreen_shell_unstable_v1">
+ <copyright>
+ Copyright © 2016 Yong Bakos
+ Copyright © 2015 Jason Ekstrand
+ Copyright © 2015 Jonas Ådahl
+
+ 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>
+
<interface name="zwp_fullscreen_shell_v1" version="1">
<description summary="displays a single surface per output">
Displays a single surface per output.
diff --git a/protocol/unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml b/protocol/unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml
index 154afe2..b43e81c 100644
--- a/protocol/unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml
+++ b/protocol/unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml
@@ -28,6 +28,7 @@
<description summary="factory for creating dmabuf-based wl_buffers">
Following the interfaces from:
https://www.khronos.org/registry/egl/extensions/EXT/EGL_EXT_image_dma_buf_import.txt
+ https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt
and the Linux DRM sub-system's AddFb2 ioctl.
This interface offers ways to create generic dmabuf-based
@@ -129,8 +130,16 @@
binds to this interface. A roundtrip after binding guarantees that
the client has received all supported format-modifier pairs.
+ For legacy support, DRM_FORMAT_MOD_INVALID (that is, modifier_hi ==
+ 0x00ffffff and modifier_lo == 0xffffffff) is allowed in this event.
+ It indicates that the server can support the format with an implicit
+ modifier. When a plane has DRM_FORMAT_MOD_INVALID as its modifier, it
+ is as if no explicit modifier is specified. The effective modifier
+ will be derived from the dmabuf.
+
For the definition of the format and modifier codes, see the
- zwp_linux_buffer_params_v1::create request.
+ zwp_linux_buffer_params_v1::create and zwp_linux_buffer_params_v1::add
+ requests.
</description>
<arg name="format" type="uint" summary="DRM_FORMAT code"/>
<arg name="modifier_hi" type="uint"
@@ -197,6 +206,11 @@
compression, etc. driver-specific modifications to the base format
defined by the DRM fourcc code.
+ Warning: It should be an error if the format/modifier pair was not
+ advertised with the modifier event. This is not enforced yet because
+ some implementations always accept DRM_FORMAT_MOD_INVALID. Also
+ version 2 of this protocol does not have the modifier event.
+
This request raises the PLANE_IDX error if plane_idx is too large.
The error PLANE_SET is raised if attempting to set a plane that
was already set.
diff --git a/protocol/unstable/linux-explicit-synchronization/README b/protocol/unstable/linux-explicit-synchronization/README
new file mode 100644
index 0000000..59bcb6f
--- /dev/null
+++ b/protocol/unstable/linux-explicit-synchronization/README
@@ -0,0 +1,5 @@
+Linux explicit synchronization (dma-fence) protocol
+
+Maintainers:
+Daniel Stone <daniels@collabora.com>
+Alexandros Frantzis <alexandros.frantzis@collabora.com>
diff --git a/protocol/unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml b/protocol/unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml
new file mode 100644
index 0000000..d0a8cf0
--- /dev/null
+++ b/protocol/unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="zwp_linux_explicit_synchronization_unstable_v1">
+
+ <copyright>
+ Copyright 2016 The Chromium Authors.
+ Copyright 2017 Intel Corporation
+ Copyright 2018 Collabora, Ltd
+
+ 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>
+
+ <interface name="zwp_linux_explicit_synchronization_v1" version="2">
+ <description summary="protocol for providing explicit synchronization">
+ This global is a factory interface, allowing clients to request
+ explicit synchronization for buffers on a per-surface basis.
+
+ See zwp_linux_surface_synchronization_v1 for more information.
+
+ This interface is derived from Chromium's
+ zcr_linux_explicit_synchronization_v1.
+
+ 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>
+
+ <request name="destroy" type="destructor">
+ <description summary="destroy explicit synchronization factory object">
+ Destroy this explicit synchronization factory object. Other objects,
+ including zwp_linux_surface_synchronization_v1 objects created by this
+ factory, shall not be affected by this request.
+ </description>
+ </request>
+
+ <enum name="error">
+ <entry name="synchronization_exists" value="0"
+ summary="the surface already has a synchronization object associated"/>
+ </enum>
+
+ <request name="get_synchronization">
+ <description summary="extend surface interface for explicit synchronization">
+ Instantiate an interface extension for the given wl_surface to provide
+ explicit synchronization.
+
+ If the given wl_surface already has an explicit synchronization object
+ associated, the synchronization_exists protocol error is raised.
+
+ Graphics APIs, like EGL or Vulkan, that manage the buffer queue and
+ commits of a wl_surface themselves, are likely to be using this
+ extension internally. If a client is using such an API for a
+ wl_surface, it should not directly use this extension on that surface,
+ to avoid raising a synchronization_exists protocol error.
+ </description>
+
+ <arg name="id" type="new_id"
+ interface="zwp_linux_surface_synchronization_v1"
+ summary="the new synchronization interface id"/>
+ <arg name="surface" type="object" interface="wl_surface"
+ summary="the surface"/>
+ </request>
+ </interface>
+
+ <interface name="zwp_linux_surface_synchronization_v1" version="2">
+ <description summary="per-surface explicit synchronization support">
+ This object implements per-surface explicit synchronization.
+
+ Synchronization refers to co-ordination of pipelined operations performed
+ on buffers. Most GPU clients will schedule an asynchronous operation to
+ render to the buffer, then immediately send the buffer to the compositor
+ to be attached to a surface.
+
+ In implicit synchronization, ensuring that the rendering operation is
+ complete before the compositor displays the buffer is an implementation
+ detail handled by either the kernel or userspace graphics driver.
+
+ By contrast, in explicit synchronization, dma_fence objects mark when the
+ asynchronous operations are complete. When submitting a buffer, the
+ client provides an acquire fence which will be waited on before the
+ compositor accesses the buffer. The Wayland server, through a
+ zwp_linux_buffer_release_v1 object, will inform the client with an event
+ which may be accompanied by a release fence, when the compositor will no
+ longer access the buffer contents due to the specific commit that
+ requested the release event.
+
+ Each surface can be associated with only one object of this interface at
+ any time.
+
+ In version 1 of this interface, explicit synchronization is only
+ guaranteed to be supported for buffers created with any version of the
+ wp_linux_dmabuf buffer factory. Version 2 additionally guarantees
+ explicit synchronization support for opaque EGL buffers, which is a type
+ of platform specific buffers described in the EGL_WL_bind_wayland_display
+ extension. Compositors are free to support explicit synchronization for
+ additional buffer types.
+ </description>
+
+ <request name="destroy" type="destructor">
+ <description summary="destroy synchronization object">
+ Destroy this explicit synchronization object.
+
+ Any fence set by this object with set_acquire_fence since the last
+ commit will be discarded by the server. Any fences set by this object
+ before the last commit are not affected.
+
+ zwp_linux_buffer_release_v1 objects created by this object are not
+ affected by this request.
+ </description>
+ </request>
+
+ <enum name="error">
+ <entry name="invalid_fence" value="0"
+ summary="the fence specified by the client could not be imported"/>
+ <entry name="duplicate_fence" value="1"
+ summary="multiple fences added for a single surface commit"/>
+ <entry name="duplicate_release" value="2"
+ summary="multiple releases added for a single surface commit"/>
+ <entry name="no_surface" value="3"
+ summary="the associated wl_surface was destroyed"/>
+ <entry name="unsupported_buffer" value="4"
+ summary="the buffer does not support explicit synchronization"/>
+ <entry name="no_buffer" value="5"
+ summary="no buffer was attached"/>
+ </enum>
+
+ <request name="set_acquire_fence">
+ <description summary="set the acquire fence">
+ Set the acquire fence that must be signaled before the compositor
+ may sample from the buffer attached with wl_surface.attach. The fence
+ is a dma_fence kernel object.
+
+ The acquire fence is double-buffered state, and will be applied on the
+ next wl_surface.commit request for the associated surface. Thus, it
+ applies only to the buffer that is attached to the surface at commit
+ time.
+
+ If the provided fd is not a valid dma_fence fd, then an INVALID_FENCE
+ error is raised.
+
+ If a fence has already been attached during the same commit cycle, a
+ DUPLICATE_FENCE error is raised.
+
+ If the associated wl_surface was destroyed, a NO_SURFACE error is
+ raised.
+
+ If at surface commit time the attached buffer does not support explicit
+ synchronization, an UNSUPPORTED_BUFFER error is raised.
+
+ If at surface commit time there is no buffer attached, a NO_BUFFER
+ error is raised.
+ </description>
+ <arg name="fd" type="fd" summary="acquire fence fd"/>
+ </request>
+
+ <request name="get_release">
+ <description summary="release fence for last-attached buffer">
+ Create a listener for the release of the buffer attached by the
+ client with wl_surface.attach. See zwp_linux_buffer_release_v1
+ documentation for more information.
+
+ The release object is double-buffered state, and will be associated
+ with the buffer that is attached to the surface at wl_surface.commit
+ time.
+
+ If a zwp_linux_buffer_release_v1 object has already been requested for
+ the surface in the same commit cycle, a DUPLICATE_RELEASE error is
+ raised.
+
+ If the associated wl_surface was destroyed, a NO_SURFACE error
+ is raised.
+
+ If at surface commit time there is no buffer attached, a NO_BUFFER
+ error is raised.
+ </description>
+ <arg name="release" type="new_id" interface="zwp_linux_buffer_release_v1"
+ summary="new zwp_linux_buffer_release_v1 object"/>
+ </request>
+ </interface>
+
+ <interface name="zwp_linux_buffer_release_v1" version="1">
+ <description summary="buffer release explicit synchronization">
+ This object is instantiated in response to a
+ zwp_linux_surface_synchronization_v1.get_release request.
+
+ It provides an alternative to wl_buffer.release events, providing a
+ unique release from a single wl_surface.commit request. The release event
+ also supports explicit synchronization, providing a fence FD for the
+ client to synchronize against.
+
+ Exactly one event, either a fenced_release or an immediate_release, will
+ be emitted for the wl_surface.commit request. The compositor can choose
+ release by release which event it uses.
+
+ This event does not replace wl_buffer.release events; servers are still
+ required to send those events.
+
+ Once a buffer release object has delivered a 'fenced_release' or an
+ 'immediate_release' event it is automatically destroyed.
+ </description>
+
+ <event name="fenced_release">
+ <description summary="release buffer with fence">
+ Sent when the compositor has finalised its usage of the associated
+ buffer for the relevant commit, providing a dma_fence which will be
+ signaled when all operations by the compositor on that buffer for that
+ commit have finished.
+
+ Once the fence has signaled, and assuming the associated buffer is not
+ pending release from other wl_surface.commit requests, no additional
+ explicit or implicit synchronization is required to safely reuse or
+ destroy the buffer.
+
+ This event destroys the zwp_linux_buffer_release_v1 object.
+ </description>
+ <arg name="fence" type="fd" summary="fence for last operation on buffer"/>
+ </event>
+
+ <event name="immediate_release">
+ <description summary="release buffer immediately">
+ Sent when the compositor has finalised its usage of the associated
+ buffer for the relevant commit, and either performed no operations
+ using it, or has a guarantee that all its operations on that buffer for
+ that commit have finished.
+
+ Once this event is received, and assuming the associated buffer is not
+ pending release from other wl_surface.commit requests, no additional
+ explicit or implicit synchronization is required to safely reuse or
+ destroy the buffer.
+
+ This event destroys the zwp_linux_buffer_release_v1 object.
+ </description>
+ </event>
+ </interface>
+
+</protocol>
diff --git a/protocol/unstable/pointer-gestures/pointer-gestures-unstable-v1.xml b/protocol/unstable/pointer-gestures/pointer-gestures-unstable-v1.xml
index 5b7132c..59502ac 100644
--- a/protocol/unstable/pointer-gestures/pointer-gestures-unstable-v1.xml
+++ b/protocol/unstable/pointer-gestures/pointer-gestures-unstable-v1.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<protocol name="pointer_gestures_unstable_v1">
- <interface name="zwp_pointer_gestures_v1" version="1">
+ <interface name="zwp_pointer_gestures_v1" version="2">
<description summary="touchpad gestures">
A global interface to provide semantic touchpad gestures for a given
pointer.
@@ -37,9 +37,18 @@
<arg name="id" type="new_id" interface="zwp_pointer_gesture_pinch_v1"/>
<arg name="pointer" type="object" interface="wl_pointer"/>
</request>
+
+ <!-- Version 2 additions -->
+
+ <request name="release" type="destructor" since="2">
+ <description summary="destroy the pointer gesture object">
+ Destroy the pointer gesture object. Swipe and pinch objects created via this
+ gesture object remain valid.
+ </description>
+ </request>
</interface>
- <interface name="zwp_pointer_gesture_swipe_v1" version="1">
+ <interface name="zwp_pointer_gesture_swipe_v1" version="2">
<description summary="a swipe gesture object">
A swipe gesture object notifies a client about a multi-finger swipe
gesture detected on an indirect input device such as a touchpad.
@@ -102,7 +111,7 @@
</event>
</interface>
- <interface name="zwp_pointer_gesture_pinch_v1" version="1">
+ <interface name="zwp_pointer_gesture_pinch_v1" version="2">
<description summary="a pinch gesture object">
A pinch gesture object notifies a client about a multi-finger pinch
gesture detected on an indirect input device such as a touchpad.
diff --git a/protocol/unstable/primary-selection/README b/protocol/unstable/primary-selection/README
new file mode 100644
index 0000000..ae0a402
--- /dev/null
+++ b/protocol/unstable/primary-selection/README
@@ -0,0 +1,4 @@
+Primary selection protocol
+
+Maintainers:
+Simon Ser <contact@emersion.fr>
diff --git a/protocol/unstable/primary-selection/primary-selection-unstable-v1.xml b/protocol/unstable/primary-selection/primary-selection-unstable-v1.xml
new file mode 100644
index 0000000..e5a39e3
--- /dev/null
+++ b/protocol/unstable/primary-selection/primary-selection-unstable-v1.xml
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="wp_primary_selection_unstable_v1">
+ <copyright>
+ Copyright © 2015, 2016 Red Hat
+
+ 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="Primary selection protocol">
+ This protocol provides the ability to have a primary selection device to
+ match that of the X server. This primary selection is a shortcut to the
+ common clipboard selection, where text just needs to be selected in order
+ to allow copying it elsewhere. The de facto way to perform this action
+ is the middle mouse button, although it is not limited to this one.
+
+ Clients wishing to honor primary selection should create a primary
+ selection source and set it as the selection through
+ wp_primary_selection_device.set_selection whenever the text selection
+ changes. In order to minimize calls in pointer-driven text selection,
+ it should happen only once after the operation finished. Similarly,
+ a NULL source should be set when text is unselected.
+
+ wp_primary_selection_offer objects are first announced through the
+ wp_primary_selection_device.data_offer event. Immediately after this event,
+ the primary data offer will emit wp_primary_selection_offer.offer events
+ to let know of the mime types being offered.
+
+ When the primary selection changes, the client with the keyboard focus
+ will receive wp_primary_selection_device.selection events. Only the client
+ with the keyboard focus will receive such events with a non-NULL
+ wp_primary_selection_offer. Across keyboard focus changes, previously
+ focused clients will receive wp_primary_selection_device.events with a
+ NULL wp_primary_selection_offer.
+
+ In order to request the primary selection data, the client must pass
+ a recent serial pertaining to the press event that is triggering the
+ operation, if the compositor deems the serial valid and recent, the
+ wp_primary_selection_source.send event will happen in the other end
+ to let the transfer begin. The client owning the primary selection
+ should write the requested data, and close the file descriptor
+ immediately.
+
+ If the primary selection owner client disappeared during the transfer,
+ the client reading the data will receive a
+ wp_primary_selection_device.selection event with a NULL
+ wp_primary_selection_offer, the client should take this as a hint
+ to finish the reads related to the no longer existing offer.
+
+ The primary selection owner should be checking for errors during
+ writes, merely cancelling the ongoing transfer if any happened.
+ </description>
+
+ <interface name="zwp_primary_selection_device_manager_v1" version="1">
+ <description summary="X primary selection emulation">
+ The primary selection device manager is a singleton global object that
+ provides access to the primary selection. It allows to create
+ wp_primary_selection_source objects, as well as retrieving the per-seat
+ wp_primary_selection_device objects.
+ </description>
+
+ <request name="create_source">
+ <description summary="create a new primary selection source">
+ Create a new primary selection source.
+ </description>
+ <arg name="id" type="new_id" interface="zwp_primary_selection_source_v1"/>
+ </request>
+
+ <request name="get_device">
+ <description summary="create a new primary selection device">
+ Create a new data device for a given seat.
+ </description>
+ <arg name="id" type="new_id" interface="zwp_primary_selection_device_v1"/>
+ <arg name="seat" type="object" interface="wl_seat"/>
+ </request>
+
+ <request name="destroy" type="destructor">
+ <description summary="destroy the primary selection device manager">
+ Destroy the primary selection device manager.
+ </description>
+ </request>
+ </interface>
+
+ <interface name="zwp_primary_selection_device_v1" version="1">
+ <request name="set_selection">
+ <description summary="set the primary selection">
+ Replaces the current selection. The previous owner of the primary
+ selection will receive a wp_primary_selection_source.cancelled event.
+
+ To unset the selection, set the source to NULL.
+ </description>
+ <arg name="source" type="object" interface="zwp_primary_selection_source_v1" allow-null="true"/>
+ <arg name="serial" type="uint" summary="serial of the event that triggered this request"/>
+ </request>
+
+ <event name="data_offer">
+ <description summary="introduce a new wp_primary_selection_offer">
+ Introduces a new wp_primary_selection_offer object that may be used
+ to receive the current primary selection. Immediately following this
+ event, the new wp_primary_selection_offer object will send
+ wp_primary_selection_offer.offer events to describe the offered mime
+ types.
+ </description>
+ <arg name="offer" type="new_id" interface="zwp_primary_selection_offer_v1"/>
+ </event>
+
+ <event name="selection">
+ <description summary="advertise a new primary selection">
+ The wp_primary_selection_device.selection event is sent to notify the
+ client of a new primary selection. This event is sent after the
+ wp_primary_selection.data_offer event introducing this object, and after
+ the offer has announced its mimetypes through
+ wp_primary_selection_offer.offer.
+
+ The data_offer is valid until a new offer or NULL is received
+ or until the client loses keyboard focus. The client must destroy the
+ previous selection data_offer, if any, upon receiving this event.
+ </description>
+ <arg name="id" type="object" interface="zwp_primary_selection_offer_v1" allow-null="true"/>
+ </event>
+
+ <request name="destroy" type="destructor">
+ <description summary="destroy the primary selection device">
+ Destroy the primary selection device.
+ </description>
+ </request>
+ </interface>
+
+ <interface name="zwp_primary_selection_offer_v1" version="1">
+ <description summary="offer to transfer primary selection contents">
+ A wp_primary_selection_offer represents an offer to transfer the contents
+ of the primary selection clipboard to the client. Similar to
+ wl_data_offer, the offer also describes the mime types that the data can
+ be converted to and provides the mechanisms for transferring the data
+ directly to the client.
+ </description>
+
+ <request name="receive">
+ <description summary="request that the data is transferred">
+ To transfer the contents of the primary selection clipboard, the client
+ issues this request and indicates the mime type that it wants to
+ receive. The transfer happens through the passed file descriptor
+ (typically created with the pipe system call). The source client writes
+ the data in the mime type representation requested and then closes the
+ file descriptor.
+
+ The receiving client reads from the read end of the pipe until EOF and
+ closes its end, at which point the transfer is complete.
+ </description>
+ <arg name="mime_type" type="string"/>
+ <arg name="fd" type="fd"/>
+ </request>
+
+ <request name="destroy" type="destructor">
+ <description summary="destroy the primary selection offer">
+ Destroy the primary selection offer.
+ </description>
+ </request>
+
+ <event name="offer">
+ <description summary="advertise offered mime type">
+ Sent immediately after creating announcing the
+ wp_primary_selection_offer through
+ wp_primary_selection_device.data_offer. One event is sent per offered
+ mime type.
+ </description>
+ <arg name="mime_type" type="string"/>
+ </event>
+ </interface>
+
+ <interface name="zwp_primary_selection_source_v1" version="1">
+ <description summary="offer to replace the contents of the primary selection">
+ The source side of a wp_primary_selection_offer, it provides a way to
+ describe the offered data and respond to requests to transfer the
+ requested contents of the primary selection clipboard.
+ </description>
+
+ <request name="offer">
+ <description summary="add an offered mime type">
+ This request adds a mime type to the set of mime types advertised to
+ targets. Can be called several times to offer multiple types.
+ </description>
+ <arg name="mime_type" type="string"/>
+ </request>
+
+ <request name="destroy" type="destructor">
+ <description summary="destroy the primary selection source">
+ Destroy the primary selection source.
+ </description>
+ </request>
+
+ <event name="send">
+ <description summary="send the primary selection contents">
+ Request for the current primary selection contents from the client.
+ Send the specified mime type over the passed file descriptor, then
+ close it.
+ </description>
+ <arg name="mime_type" type="string"/>
+ <arg name="fd" type="fd"/>
+ </event>
+
+ <event name="cancelled">
+ <description summary="request for primary selection contents was canceled">
+ This primary selection source is no longer valid. The client should
+ clean up and destroy this primary selection source.
+ </description>
+ </event>
+ </interface>
+</protocol>
diff --git a/protocol/unstable/xdg-output/xdg-output-unstable-v1.xml b/protocol/unstable/xdg-output/xdg-output-unstable-v1.xml
index ccbfe1c..fe3a70a 100644
--- a/protocol/unstable/xdg-output/xdg-output-unstable-v1.xml
+++ b/protocol/unstable/xdg-output/xdg-output-unstable-v1.xml
@@ -54,7 +54,7 @@
reset.
</description>
- <interface name="zxdg_output_manager_v1" version="2">
+ <interface name="zxdg_output_manager_v1" version="3">
<description summary="manage xdg_output objects">
A global factory interface for xdg_output objects.
</description>
@@ -77,12 +77,17 @@
</request>
</interface>
- <interface name="zxdg_output_v1" version="2">
+ <interface name="zxdg_output_v1" version="3">
<description summary="compositor logical output region">
An xdg_output describes part of the compositor geometry.
This typically corresponds to a monitor that displays part of the
compositor space.
+
+ For objects version 3 onwards, after all xdg_output properties have been
+ sent (when the object is created and when properties are updated), a
+ wl_output.done event is sent. This allows changes to the output
+ properties to be seen as atomic, even if they happen via multiple events.
</description>
<request name="destroy" type="destructor">
@@ -157,6 +162,10 @@
This allows changes to the xdg_output properties to be seen as
atomic, even if they happen via multiple events.
+
+ For objects version 3 onwards, this event is deprecated. Compositors
+ are not required to send it anymore and must send wl_output.done
+ instead.
</description>
</event>
@@ -197,10 +206,12 @@
output via :1'.
The description event is sent after creating an xdg_output (see
- xdg_output_manager.get_xdg_output). This event is only sent once per
+ xdg_output_manager.get_xdg_output) and whenever the description
+ changes. The description is optional, and may not be sent at all.
+
+ For objects of version 2 and lower, this event is only sent once per
xdg_output, and the description does not change over the lifetime of
- the wl_output global. The description is optional, and may not be sent
- at all.
+ the wl_output global.
</description>
<arg name="description" type="string" summary="output description"/>
</event>