Héctor Orón Martínez pushed to branch upstream-unstable at X Strike Force / wayland / wayland-protocols
Commits:
-
18032f66
by Johan Klokkhammer Helsing at 2018-07-31T10:53:03Z
-
19ec5dcc
by Alexandros Frantzis at 2018-11-12T14:32:54Z
-
2c3b11d7
by emersion at 2018-11-12T15:56:50Z
-
9132fc86
by Jonas Ådahl at 2018-11-12T15:59:01Z
7 changed files:
- Makefile.am
- configure.ac
- unstable/fullscreen-shell/fullscreen-shell-unstable-v1.xml
- + unstable/linux-explicit-synchronization/README
- + unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml
- + unstable/primary-selection/README
- + unstable/primary-selection/primary-selection-unstable-v1.xml
Changes:
| ... | ... | @@ -21,6 +21,8 @@ unstable_protocols = \ |
| 21 | 21 |
unstable/xdg-output/xdg-output-unstable-v1.xml \
|
| 22 | 22 |
unstable/input-timestamps/input-timestamps-unstable-v1.xml \
|
| 23 | 23 |
unstable/xdg-decoration/xdg-decoration-unstable-v1.xml \
|
| 24 |
+ unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml \
|
|
| 25 |
+ unstable/primary-selection/primary-selection-unstable-v1.xml \
|
|
| 24 | 26 |
$(NULL)
|
| 25 | 27 |
|
| 26 | 28 |
stable_protocols = \
|
| 1 | 1 |
AC_PREREQ([2.64])
|
| 2 | 2 |
|
| 3 | 3 |
m4_define([wayland_protocols_major_version], [1])
|
| 4 |
-m4_define([wayland_protocols_minor_version], [16])
|
|
| 4 |
+m4_define([wayland_protocols_minor_version], [17])
|
|
| 5 | 5 |
m4_define([wayland_protocols_version],
|
| 6 | 6 |
[wayland_protocols_major_version.wayland_protocols_minor_version])
|
| 7 | 7 |
|
| 1 | 1 |
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 | 2 |
<protocol name="fullscreen_shell_unstable_v1">
|
| 3 | 3 |
|
| 4 |
+ <copyright>
|
|
| 5 |
+ Copyright © 2016 Yong Bakos
|
|
| 6 |
+ Copyright © 2015 Jason Ekstrand
|
|
| 7 |
+ Copyright © 2015 Jonas Ådahl
|
|
| 8 |
+ |
|
| 9 |
+ Permission is hereby granted, free of charge, to any person obtaining a
|
|
| 10 |
+ copy of this software and associated documentation files (the "Software"),
|
|
| 11 |
+ to deal in the Software without restriction, including without limitation
|
|
| 12 |
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
| 13 |
+ and/or sell copies of the Software, and to permit persons to whom the
|
|
| 14 |
+ Software is furnished to do so, subject to the following conditions:
|
|
| 15 |
+ |
|
| 16 |
+ The above copyright notice and this permission notice (including the next
|
|
| 17 |
+ paragraph) shall be included in all copies or substantial portions of the
|
|
| 18 |
+ Software.
|
|
| 19 |
+ |
|
| 20 |
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
| 21 |
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
| 22 |
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
| 23 |
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
| 24 |
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
| 25 |
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
| 26 |
+ DEALINGS IN THE SOFTWARE.
|
|
| 27 |
+ </copyright>
|
|
| 28 |
+ |
|
| 4 | 29 |
<interface name="zwp_fullscreen_shell_v1" version="1">
|
| 5 | 30 |
<description summary="displays a single surface per output">
|
| 6 | 31 |
Displays a single surface per output.
|
| 1 |
+Linux explicit synchronization (dma-fence) protocol
|
|
| 2 |
+ |
|
| 3 |
+Maintainers:
|
|
| 4 |
+Daniel Stone <daniels@collabora.com>
|
|
| 5 |
+Alexandros Frantzis <alexandros.frantzis@collabora.com>
|
| 1 |
+<?xml version="1.0" encoding="UTF-8"?>
|
|
| 2 |
+<protocol name="zwp_linux_explicit_synchronization_unstable_v1">
|
|
| 3 |
+ |
|
| 4 |
+ <copyright>
|
|
| 5 |
+ Copyright 2016 The Chromium Authors.
|
|
| 6 |
+ Copyright 2017 Intel Corporation
|
|
| 7 |
+ Copyright 2018 Collabora, Ltd
|
|
| 8 |
+ |
|
| 9 |
+ Permission is hereby granted, free of charge, to any person obtaining a
|
|
| 10 |
+ copy of this software and associated documentation files (the "Software"),
|
|
| 11 |
+ to deal in the Software without restriction, including without limitation
|
|
| 12 |
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
| 13 |
+ and/or sell copies of the Software, and to permit persons to whom the
|
|
| 14 |
+ Software is furnished to do so, subject to the following conditions:
|
|
| 15 |
+ |
|
| 16 |
+ The above copyright notice and this permission notice (including the next
|
|
| 17 |
+ paragraph) shall be included in all copies or substantial portions of the
|
|
| 18 |
+ Software.
|
|
| 19 |
+ |
|
| 20 |
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
| 21 |
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
| 22 |
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
| 23 |
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
| 24 |
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
| 25 |
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
| 26 |
+ DEALINGS IN THE SOFTWARE.
|
|
| 27 |
+ </copyright>
|
|
| 28 |
+ |
|
| 29 |
+ <interface name="zwp_linux_explicit_synchronization_v1" version="1">
|
|
| 30 |
+ <description summary="protocol for providing explicit synchronization">
|
|
| 31 |
+ This global is a factory interface, allowing clients to request
|
|
| 32 |
+ explicit synchronization for buffers on a per-surface basis.
|
|
| 33 |
+ |
|
| 34 |
+ See zwp_linux_surface_synchronization_v1 for more information.
|
|
| 35 |
+ |
|
| 36 |
+ This interface is derived from Chromium's
|
|
| 37 |
+ zcr_linux_explicit_synchronization_v1.
|
|
| 38 |
+ |
|
| 39 |
+ Warning! The protocol described in this file is experimental and
|
|
| 40 |
+ backward incompatible changes may be made. Backward compatible changes
|
|
| 41 |
+ may be added together with the corresponding interface version bump.
|
|
| 42 |
+ Backward incompatible changes are done by bumping the version number in
|
|
| 43 |
+ the protocol and interface names and resetting the interface version.
|
|
| 44 |
+ Once the protocol is to be declared stable, the 'z' prefix and the
|
|
| 45 |
+ version number in the protocol and interface names are removed and the
|
|
| 46 |
+ interface version number is reset.
|
|
| 47 |
+ </description>
|
|
| 48 |
+ |
|
| 49 |
+ <request name="destroy" type="destructor">
|
|
| 50 |
+ <description summary="destroy explicit synchronization factory object">
|
|
| 51 |
+ Destroy this explicit synchronization factory object. Other objects,
|
|
| 52 |
+ including zwp_linux_surface_synchronization_v1 objects created by this
|
|
| 53 |
+ factory, shall not be affected by this request.
|
|
| 54 |
+ </description>
|
|
| 55 |
+ </request>
|
|
| 56 |
+ |
|
| 57 |
+ <enum name="error">
|
|
| 58 |
+ <entry name="synchronization_exists" value="0"
|
|
| 59 |
+ summary="the surface already has a synchronization object associated"/>
|
|
| 60 |
+ </enum>
|
|
| 61 |
+ |
|
| 62 |
+ <request name="get_synchronization">
|
|
| 63 |
+ <description summary="extend surface interface for explicit synchronization">
|
|
| 64 |
+ Instantiate an interface extension for the given wl_surface to provide
|
|
| 65 |
+ explicit synchronization.
|
|
| 66 |
+ |
|
| 67 |
+ If the given wl_surface already has an explicit synchronization object
|
|
| 68 |
+ associated, the synchronization_exists protocol error is raised.
|
|
| 69 |
+ </description>
|
|
| 70 |
+ |
|
| 71 |
+ <arg name="id" type="new_id"
|
|
| 72 |
+ interface="zwp_linux_surface_synchronization_v1"
|
|
| 73 |
+ summary="the new synchronization interface id"/>
|
|
| 74 |
+ <arg name="surface" type="object" interface="wl_surface"
|
|
| 75 |
+ summary="the surface"/>
|
|
| 76 |
+ </request>
|
|
| 77 |
+ </interface>
|
|
| 78 |
+ |
|
| 79 |
+ <interface name="zwp_linux_surface_synchronization_v1" version="1">
|
|
| 80 |
+ <description summary="per-surface explicit synchronization support">
|
|
| 81 |
+ This object implements per-surface explicit synchronization.
|
|
| 82 |
+ |
|
| 83 |
+ Synchronization refers to co-ordination of pipelined operations performed
|
|
| 84 |
+ on buffers. Most GPU clients will schedule an asynchronous operation to
|
|
| 85 |
+ render to the buffer, then immediately send the buffer to the compositor
|
|
| 86 |
+ to be attached to a surface.
|
|
| 87 |
+ |
|
| 88 |
+ In implicit synchronization, ensuring that the rendering operation is
|
|
| 89 |
+ complete before the compositor displays the buffer is an implementation
|
|
| 90 |
+ detail handled by either the kernel or userspace graphics driver.
|
|
| 91 |
+ |
|
| 92 |
+ By contrast, in explicit synchronization, dma_fence objects mark when the
|
|
| 93 |
+ asynchronous operations are complete. When submitting a buffer, the
|
|
| 94 |
+ client provides an acquire fence which will be waited on before the
|
|
| 95 |
+ compositor accesses the buffer. The Wayland server, through a
|
|
| 96 |
+ zwp_linux_buffer_release_v1 object, will inform the client with an event
|
|
| 97 |
+ which may be accompanied by a release fence, when the compositor will no
|
|
| 98 |
+ longer access the buffer contents due to the specific commit that
|
|
| 99 |
+ requested the release event.
|
|
| 100 |
+ |
|
| 101 |
+ Each surface can be associated with only one object of this interface at
|
|
| 102 |
+ any time.
|
|
| 103 |
+ |
|
| 104 |
+ Explicit synchronization is guaranteed to be supported only for buffers
|
|
| 105 |
+ created with any version of the wp_linux_dmabuf buffer factory.
|
|
| 106 |
+ </description>
|
|
| 107 |
+ |
|
| 108 |
+ <request name="destroy" type="destructor">
|
|
| 109 |
+ <description summary="destroy synchronization object">
|
|
| 110 |
+ Destroy this explicit synchronization object.
|
|
| 111 |
+ |
|
| 112 |
+ Any fence set by this object with set_acquire_fence since the last
|
|
| 113 |
+ commit will be discarded by the server. Any fences set by this object
|
|
| 114 |
+ before the last commit are not affected.
|
|
| 115 |
+ |
|
| 116 |
+ zwp_linux_buffer_release_v1 objects created by this object are not
|
|
| 117 |
+ affected by this request.
|
|
| 118 |
+ </description>
|
|
| 119 |
+ </request>
|
|
| 120 |
+ |
|
| 121 |
+ <enum name="error">
|
|
| 122 |
+ <entry name="invalid_fence" value="0"
|
|
| 123 |
+ summary="the fence specified by the client could not be imported"/>
|
|
| 124 |
+ <entry name="duplicate_fence" value="1"
|
|
| 125 |
+ summary="multiple fences added for a single surface commit"/>
|
|
| 126 |
+ <entry name="duplicate_release" value="2"
|
|
| 127 |
+ summary="multiple releases added for a single surface commit"/>
|
|
| 128 |
+ <entry name="no_surface" value="3"
|
|
| 129 |
+ summary="the associated wl_surface was destroyed"/>
|
|
| 130 |
+ <entry name="unsupported_buffer" value="4"
|
|
| 131 |
+ summary="the buffer does not support explicit synchronization"/>
|
|
| 132 |
+ <entry name="no_buffer" value="5"
|
|
| 133 |
+ summary="no buffer was attached"/>
|
|
| 134 |
+ </enum>
|
|
| 135 |
+ |
|
| 136 |
+ <request name="set_acquire_fence">
|
|
| 137 |
+ <description summary="set the acquire fence">
|
|
| 138 |
+ Set the acquire fence that must be signaled before the compositor
|
|
| 139 |
+ may sample from the buffer attached with wl_surface.attach. The fence
|
|
| 140 |
+ is a dma_fence kernel object.
|
|
| 141 |
+ |
|
| 142 |
+ The acquire fence is double-buffered state, and will be applied on the
|
|
| 143 |
+ next wl_surface.commit request for the associated surface. Thus, it
|
|
| 144 |
+ applies only to the buffer that is attached to the surface at commit
|
|
| 145 |
+ time.
|
|
| 146 |
+ |
|
| 147 |
+ If the provided fd is not a valid dma_fence fd, then an INVALID_FENCE
|
|
| 148 |
+ error is raised.
|
|
| 149 |
+ |
|
| 150 |
+ If a fence has already been attached during the same commit cycle, a
|
|
| 151 |
+ DUPLICATE_FENCE error is raised.
|
|
| 152 |
+ |
|
| 153 |
+ If the associated wl_surface was destroyed, a NO_SURFACE error is
|
|
| 154 |
+ raised.
|
|
| 155 |
+ |
|
| 156 |
+ If at surface commit time the attached buffer does not support explicit
|
|
| 157 |
+ synchronization, an UNSUPPORTED_BUFFER error is raised.
|
|
| 158 |
+ |
|
| 159 |
+ If at surface commit time there is no buffer attached, a NO_BUFFER
|
|
| 160 |
+ error is raised.
|
|
| 161 |
+ </description>
|
|
| 162 |
+ <arg name="fd" type="fd" summary="acquire fence fd"/>
|
|
| 163 |
+ </request>
|
|
| 164 |
+ |
|
| 165 |
+ <request name="get_release">
|
|
| 166 |
+ <description summary="release fence for last-attached buffer">
|
|
| 167 |
+ Create a listener for the release of the buffer attached by the
|
|
| 168 |
+ client with wl_surface.attach. See zwp_linux_buffer_release_v1
|
|
| 169 |
+ documentation for more information.
|
|
| 170 |
+ |
|
| 171 |
+ The release object is double-buffered state, and will be associated
|
|
| 172 |
+ with the buffer that is attached to the surface at wl_surface.commit
|
|
| 173 |
+ time.
|
|
| 174 |
+ |
|
| 175 |
+ If a zwp_linux_buffer_release_v1 object has already been requested for
|
|
| 176 |
+ the surface in the same commit cycle, a DUPLICATE_RELEASE error is
|
|
| 177 |
+ raised.
|
|
| 178 |
+ |
|
| 179 |
+ If the associated wl_surface was destroyed, a NO_SURFACE error
|
|
| 180 |
+ is raised.
|
|
| 181 |
+ |
|
| 182 |
+ If at surface commit time there is no buffer attached, a NO_BUFFER
|
|
| 183 |
+ error is raised.
|
|
| 184 |
+ </description>
|
|
| 185 |
+ <arg name="release" type="new_id" interface="zwp_linux_buffer_release_v1"
|
|
| 186 |
+ summary="new zwp_linux_buffer_release_v1 object"/>
|
|
| 187 |
+ </request>
|
|
| 188 |
+ </interface>
|
|
| 189 |
+ |
|
| 190 |
+ <interface name="zwp_linux_buffer_release_v1" version="1">
|
|
| 191 |
+ <description summary="buffer release explicit synchronization">
|
|
| 192 |
+ This object is instantiated in response to a
|
|
| 193 |
+ zwp_linux_surface_synchronization_v1.get_release request.
|
|
| 194 |
+ |
|
| 195 |
+ It provides an alternative to wl_buffer.release events, providing a
|
|
| 196 |
+ unique release from a single wl_surface.commit request. The release event
|
|
| 197 |
+ also supports explicit synchronization, providing a fence FD for the
|
|
| 198 |
+ client to synchronize against.
|
|
| 199 |
+ |
|
| 200 |
+ Exactly one event, either a fenced_release or an immediate_release, will
|
|
| 201 |
+ be emitted for the wl_surface.commit request. The compositor can choose
|
|
| 202 |
+ release by release which event it uses.
|
|
| 203 |
+ |
|
| 204 |
+ This event does not replace wl_buffer.release events; servers are still
|
|
| 205 |
+ required to send those events.
|
|
| 206 |
+ |
|
| 207 |
+ Once a buffer release object has delivered a 'fenced_release' or an
|
|
| 208 |
+ 'immediate_release' event it is automatically destroyed.
|
|
| 209 |
+ </description>
|
|
| 210 |
+ |
|
| 211 |
+ <event name="fenced_release">
|
|
| 212 |
+ <description summary="release buffer with fence">
|
|
| 213 |
+ Sent when the compositor has finalised its usage of the associated
|
|
| 214 |
+ buffer for the relevant commit, providing a dma_fence which will be
|
|
| 215 |
+ signaled when all operations by the compositor on that buffer for that
|
|
| 216 |
+ commit have finished.
|
|
| 217 |
+ |
|
| 218 |
+ This event destroys the zwp_linux_buffer_release_v1 object.
|
|
| 219 |
+ </description>
|
|
| 220 |
+ <arg name="fence" type="fd" summary="fence for last operation on buffer"/>
|
|
| 221 |
+ </event>
|
|
| 222 |
+ |
|
| 223 |
+ <event name="immediate_release">
|
|
| 224 |
+ <description summary="release buffer immediately">
|
|
| 225 |
+ Sent when the compositor has finalised its usage of the associated
|
|
| 226 |
+ buffer for the relevant commit, and either performed no operations
|
|
| 227 |
+ using it, or has a guarantee that all its operations on that buffer for
|
|
| 228 |
+ that commit have finished.
|
|
| 229 |
+ |
|
| 230 |
+ This event destroys the zwp_linux_buffer_release_v1 object.
|
|
| 231 |
+ </description>
|
|
| 232 |
+ </event>
|
|
| 233 |
+ </interface>
|
|
| 234 |
+ |
|
| 235 |
+</protocol>
|
| 1 |
+Primary selection protocol
|
|
| 2 |
+ |
|
| 3 |
+Maintainers:
|
|
| 4 |
+Simon Ser <contact@emersion.fr>
|
| 1 |
+<?xml version="1.0" encoding="UTF-8"?>
|
|
| 2 |
+<protocol name="wp_primary_selection_unstable_v1">
|
|
| 3 |
+ <copyright>
|
|
| 4 |
+ Copyright © 2015, 2016 Red Hat
|
|
| 5 |
+ |
|
| 6 |
+ Permission is hereby granted, free of charge, to any person obtaining a
|
|
| 7 |
+ copy of this software and associated documentation files (the "Software"),
|
|
| 8 |
+ to deal in the Software without restriction, including without limitation
|
|
| 9 |
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
| 10 |
+ and/or sell copies of the Software, and to permit persons to whom the
|
|
| 11 |
+ Software is furnished to do so, subject to the following conditions:
|
|
| 12 |
+ |
|
| 13 |
+ The above copyright notice and this permission notice (including the next
|
|
| 14 |
+ paragraph) shall be included in all copies or substantial portions of the
|
|
| 15 |
+ Software.
|
|
| 16 |
+ |
|
| 17 |
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
| 18 |
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
| 19 |
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
| 20 |
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
| 21 |
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
| 22 |
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
| 23 |
+ DEALINGS IN THE SOFTWARE.
|
|
| 24 |
+ </copyright>
|
|
| 25 |
+ |
|
| 26 |
+ <description summary="Primary selection protocol">
|
|
| 27 |
+ This protocol provides the ability to have a primary selection device to
|
|
| 28 |
+ match that of the X server. This primary selection is a shortcut to the
|
|
| 29 |
+ common clipboard selection, where text just needs to be selected in order
|
|
| 30 |
+ to allow copying it elsewhere. The de facto way to perform this action
|
|
| 31 |
+ is the middle mouse button, although it is not limited to this one.
|
|
| 32 |
+ |
|
| 33 |
+ Clients wishing to honor primary selection should create a primary
|
|
| 34 |
+ selection source and set it as the selection through
|
|
| 35 |
+ wp_primary_selection_device.set_selection whenever the text selection
|
|
| 36 |
+ changes. In order to minimize calls in pointer-driven text selection,
|
|
| 37 |
+ it should happen only once after the operation finished. Similarly,
|
|
| 38 |
+ a NULL source should be set when text is unselected.
|
|
| 39 |
+ |
|
| 40 |
+ wp_primary_selection_offer objects are first announced through the
|
|
| 41 |
+ wp_primary_selection_device.data_offer event. Immediately after this event,
|
|
| 42 |
+ the primary data offer will emit wp_primary_selection_offer.offer events
|
|
| 43 |
+ to let know of the mime types being offered.
|
|
| 44 |
+ |
|
| 45 |
+ When the primary selection changes, the client with the keyboard focus
|
|
| 46 |
+ will receive wp_primary_selection_device.selection events. Only the client
|
|
| 47 |
+ with the keyboard focus will receive such events with a non-NULL
|
|
| 48 |
+ wp_primary_selection_offer. Across keyboard focus changes, previously
|
|
| 49 |
+ focused clients will receive wp_primary_selection_device.events with a
|
|
| 50 |
+ NULL wp_primary_selection_offer.
|
|
| 51 |
+ |
|
| 52 |
+ In order to request the primary selection data, the client must pass
|
|
| 53 |
+ a recent serial pertaining to the press event that is triggering the
|
|
| 54 |
+ operation, if the compositor deems the serial valid and recent, the
|
|
| 55 |
+ wp_primary_selection_source.send event will happen in the other end
|
|
| 56 |
+ to let the transfer begin. The client owning the primary selection
|
|
| 57 |
+ should write the requested data, and close the file descriptor
|
|
| 58 |
+ immediately.
|
|
| 59 |
+ |
|
| 60 |
+ If the primary selection owner client disappeared during the transfer,
|
|
| 61 |
+ the client reading the data will receive a
|
|
| 62 |
+ wp_primary_selection_device.selection event with a NULL
|
|
| 63 |
+ wp_primary_selection_offer, the client should take this as a hint
|
|
| 64 |
+ to finish the reads related to the no longer existing offer.
|
|
| 65 |
+ |
|
| 66 |
+ The primary selection owner should be checking for errors during
|
|
| 67 |
+ writes, merely cancelling the ongoing transfer if any happened.
|
|
| 68 |
+ </description>
|
|
| 69 |
+ |
|
| 70 |
+ <interface name="zwp_primary_selection_device_manager_v1" version="1">
|
|
| 71 |
+ <description summary="X primary selection emulation">
|
|
| 72 |
+ The primary selection device manager is a singleton global object that
|
|
| 73 |
+ provides access to the primary selection. It allows to create
|
|
| 74 |
+ wp_primary_selection_source objects, as well as retrieving the per-seat
|
|
| 75 |
+ wp_primary_selection_device objects.
|
|
| 76 |
+ </description>
|
|
| 77 |
+ |
|
| 78 |
+ <request name="create_source">
|
|
| 79 |
+ <description summary="create a new primary selection source">
|
|
| 80 |
+ Create a new primary selection source.
|
|
| 81 |
+ </description>
|
|
| 82 |
+ <arg name="id" type="new_id" interface="zwp_primary_selection_source_v1"/>
|
|
| 83 |
+ </request>
|
|
| 84 |
+ |
|
| 85 |
+ <request name="get_device">
|
|
| 86 |
+ <description summary="create a new primary selection device">
|
|
| 87 |
+ Create a new data device for a given seat.
|
|
| 88 |
+ </description>
|
|
| 89 |
+ <arg name="id" type="new_id" interface="zwp_primary_selection_device_v1"/>
|
|
| 90 |
+ <arg name="seat" type="object" interface="wl_seat"/>
|
|
| 91 |
+ </request>
|
|
| 92 |
+ |
|
| 93 |
+ <request name="destroy" type="destructor">
|
|
| 94 |
+ <description summary="destroy the primary selection device manager">
|
|
| 95 |
+ Destroy the primary selection device manager.
|
|
| 96 |
+ </description>
|
|
| 97 |
+ </request>
|
|
| 98 |
+ </interface>
|
|
| 99 |
+ |
|
| 100 |
+ <interface name="zwp_primary_selection_device_v1" version="1">
|
|
| 101 |
+ <request name="set_selection">
|
|
| 102 |
+ <description summary="set the primary selection">
|
|
| 103 |
+ Replaces the current selection. The previous owner of the primary
|
|
| 104 |
+ selection will receive a wp_primary_selection_source.cancelled event.
|
|
| 105 |
+ |
|
| 106 |
+ To unset the selection, set the source to NULL.
|
|
| 107 |
+ </description>
|
|
| 108 |
+ <arg name="source" type="object" interface="zwp_primary_selection_source_v1" allow-null="true"/>
|
|
| 109 |
+ <arg name="serial" type="uint" summary="serial of the event that triggered this request"/>
|
|
| 110 |
+ </request>
|
|
| 111 |
+ |
|
| 112 |
+ <event name="data_offer">
|
|
| 113 |
+ <description summary="introduce a new wp_primary_selection_offer">
|
|
| 114 |
+ Introduces a new wp_primary_selection_offer object that may be used
|
|
| 115 |
+ to receive the current primary selection. Immediately following this
|
|
| 116 |
+ event, the new wp_primary_selection_offer object will send
|
|
| 117 |
+ wp_primary_selection_offer.offer events to describe the offered mime
|
|
| 118 |
+ types.
|
|
| 119 |
+ </description>
|
|
| 120 |
+ <arg name="offer" type="new_id" interface="zwp_primary_selection_offer_v1"/>
|
|
| 121 |
+ </event>
|
|
| 122 |
+ |
|
| 123 |
+ <event name="selection">
|
|
| 124 |
+ <description summary="advertise a new primary selection">
|
|
| 125 |
+ The wp_primary_selection_device.selection event is sent to notify the
|
|
| 126 |
+ client of a new primary selection. This event is sent after the
|
|
| 127 |
+ wp_primary_selection.data_offer event introducing this object, and after
|
|
| 128 |
+ the offer has announced its mimetypes through
|
|
| 129 |
+ wp_primary_selection_offer.offer.
|
|
| 130 |
+ |
|
| 131 |
+ The data_offer is valid until a new offer or NULL is received
|
|
| 132 |
+ or until the client loses keyboard focus. The client must destroy the
|
|
| 133 |
+ previous selection data_offer, if any, upon receiving this event.
|
|
| 134 |
+ </description>
|
|
| 135 |
+ <arg name="id" type="object" interface="zwp_primary_selection_offer_v1" allow-null="true"/>
|
|
| 136 |
+ </event>
|
|
| 137 |
+ |
|
| 138 |
+ <request name="destroy" type="destructor">
|
|
| 139 |
+ <description summary="destroy the primary selection device">
|
|
| 140 |
+ Destroy the primary selection device.
|
|
| 141 |
+ </description>
|
|
| 142 |
+ </request>
|
|
| 143 |
+ </interface>
|
|
| 144 |
+ |
|
| 145 |
+ <interface name="zwp_primary_selection_offer_v1" version="1">
|
|
| 146 |
+ <description summary="offer to transfer primary selection contents">
|
|
| 147 |
+ A wp_primary_selection_offer represents an offer to transfer the contents
|
|
| 148 |
+ of the primary selection clipboard to the client. Similar to
|
|
| 149 |
+ wl_data_offer, the offer also describes the mime types that the data can
|
|
| 150 |
+ be converted to and provides the mechanisms for transferring the data
|
|
| 151 |
+ directly to the client.
|
|
| 152 |
+ </description>
|
|
| 153 |
+ |
|
| 154 |
+ <request name="receive">
|
|
| 155 |
+ <description summary="request that the data is transferred">
|
|
| 156 |
+ To transfer the contents of the primary selection clipboard, the client
|
|
| 157 |
+ issues this request and indicates the mime type that it wants to
|
|
| 158 |
+ receive. The transfer happens through the passed file descriptor
|
|
| 159 |
+ (typically created with the pipe system call). The source client writes
|
|
| 160 |
+ the data in the mime type representation requested and then closes the
|
|
| 161 |
+ file descriptor.
|
|
| 162 |
+ |
|
| 163 |
+ The receiving client reads from the read end of the pipe until EOF and
|
|
| 164 |
+ closes its end, at which point the transfer is complete.
|
|
| 165 |
+ </description>
|
|
| 166 |
+ <arg name="mime_type" type="string"/>
|
|
| 167 |
+ <arg name="fd" type="fd"/>
|
|
| 168 |
+ </request>
|
|
| 169 |
+ |
|
| 170 |
+ <request name="destroy" type="destructor">
|
|
| 171 |
+ <description summary="destroy the primary selection offer">
|
|
| 172 |
+ Destroy the primary selection offer.
|
|
| 173 |
+ </description>
|
|
| 174 |
+ </request>
|
|
| 175 |
+ |
|
| 176 |
+ <event name="offer">
|
|
| 177 |
+ <description summary="advertise offered mime type">
|
|
| 178 |
+ Sent immediately after creating announcing the
|
|
| 179 |
+ wp_primary_selection_offer through
|
|
| 180 |
+ wp_primary_selection_device.data_offer. One event is sent per offered
|
|
| 181 |
+ mime type.
|
|
| 182 |
+ </description>
|
|
| 183 |
+ <arg name="mime_type" type="string"/>
|
|
| 184 |
+ </event>
|
|
| 185 |
+ </interface>
|
|
| 186 |
+ |
|
| 187 |
+ <interface name="zwp_primary_selection_source_v1" version="1">
|
|
| 188 |
+ <description summary="offer to replace the contents of the primary selection">
|
|
| 189 |
+ The source side of a wp_primary_selection_offer, it provides a way to
|
|
| 190 |
+ describe the offered data and respond to requests to transfer the
|
|
| 191 |
+ requested contents of the primary selection clipboard.
|
|
| 192 |
+ </description>
|
|
| 193 |
+ |
|
| 194 |
+ <request name="offer">
|
|
| 195 |
+ <description summary="add an offered mime type">
|
|
| 196 |
+ This request adds a mime type to the set of mime types advertised to
|
|
| 197 |
+ targets. Can be called several times to offer multiple types.
|
|
| 198 |
+ </description>
|
|
| 199 |
+ <arg name="mime_type" type="string"/>
|
|
| 200 |
+ </request>
|
|
| 201 |
+ |
|
| 202 |
+ <request name="destroy" type="destructor">
|
|
| 203 |
+ <description summary="destroy the primary selection source">
|
|
| 204 |
+ Destroy the primary selection source.
|
|
| 205 |
+ </description>
|
|
| 206 |
+ </request>
|
|
| 207 |
+ |
|
| 208 |
+ <event name="send">
|
|
| 209 |
+ <description summary="send the primary selection contents">
|
|
| 210 |
+ Request for the current primary selection contents from the client.
|
|
| 211 |
+ Send the specified mime type over the passed file descriptor, then
|
|
| 212 |
+ close it.
|
|
| 213 |
+ </description>
|
|
| 214 |
+ <arg name="mime_type" type="string"/>
|
|
| 215 |
+ <arg name="fd" type="fd"/>
|
|
| 216 |
+ </event>
|
|
| 217 |
+ |
|
| 218 |
+ <event name="cancelled">
|
|
| 219 |
+ <description summary="request for primary selection contents was canceled">
|
|
| 220 |
+ This primary selection source is no longer valid. The client should
|
|
| 221 |
+ clean up and destroy this primary selection source.
|
|
| 222 |
+ </description>
|
|
| 223 |
+ </event>
|
|
| 224 |
+ </interface>
|
|
| 225 |
+</protocol>
|