diff options
author | Gwanglim Lee <gl77.lee@samsung.com> | 2019-12-12 10:51:17 +0900 |
---|---|---|
committer | Gwanglim Lee <gl77.lee@samsung.com> | 2019-12-12 10:51:17 +0900 |
commit | d53cf23b6529c4a3f0d2c07ce02e935defd168b9 (patch) | |
tree | f6eacfc3671285ef8cba45ef2a08f9c05a1b2227 | |
parent | 648784821f944584fd13972539c08af713f38c71 (diff) | |
download | wayland-extension-d53cf23b6529c4a3f0d2c07ce02e935defd168b9.tar.gz wayland-extension-d53cf23b6529c4a3f0d2c07ce02e935defd168b9.tar.bz2 wayland-extension-d53cf23b6529c4a3f0d2c07ce02e935defd168b9.zip |
merged with wayland-protocols 1.18
Change-Id: I59a4d34a98e774101b06e4d9211103501d677bbd
-rw-r--r-- | COPYING | 1 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | protocol/stable/xdg-shell/README | 2 | ||||
-rw-r--r-- | protocol/stable/xdg-shell/xdg-shell.xml | 5 | ||||
-rw-r--r-- | protocol/unstable/fullscreen-shell/fullscreen-shell-unstable-v1.xml | 25 | ||||
-rw-r--r-- | protocol/unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml | 16 | ||||
-rw-r--r-- | protocol/unstable/linux-explicit-synchronization/README | 5 | ||||
-rw-r--r-- | protocol/unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml | 256 | ||||
-rw-r--r-- | protocol/unstable/pointer-gestures/pointer-gestures-unstable-v1.xml | 15 | ||||
-rw-r--r-- | protocol/unstable/primary-selection/README | 4 | ||||
-rw-r--r-- | protocol/unstable/primary-selection/primary-selection-unstable-v1.xml | 225 | ||||
-rw-r--r-- | protocol/unstable/xdg-output/xdg-output-unstable-v1.xml | 21 |
13 files changed, 566 insertions, 13 deletions
@@ -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> |