Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package wayland-protocols for openSUSE:Factory checked in at 2021-09-16 23:14:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/wayland-protocols (Old) and /work/SRC/openSUSE:Factory/.wayland-protocols.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wayland-protocols" Thu Sep 16 23:14:33 2021 rev:23 rq:918403 version:1.22 Changes: -------- --- /work/SRC/openSUSE:Factory/wayland-protocols/wayland-protocols.changes 2021-05-18 18:26:45.474880372 +0200 +++ /work/SRC/openSUSE:Factory/.wayland-protocols.new.1899/wayland-protocols.changes 2021-09-16 23:16:56.487939293 +0200 @@ -1,0 +2,20 @@ +Wed Sep 1 17:58:37 UTC 2021 - Christophe Giboudeaux <christo...@krop.fr> + +- Update to 1.22 + This release includes a new staging protocol: DRM object leasing. + + Besides that, various test and build system improvements are + included, as well as a set of clarifications to the + xdg-activation protocol and other protocols. + + * xdg-shell: Make xdg_surface fail when surface has role + * xdg-output: fix minor calculation error + * xdg-activation: correct sequence when X11 client spawns + Wayland client + * xdg-activation: rewrite and move description of token forwarding + * xdg-activation-v1: clarify set_{serial,surface} + * presentation-time: use enum entry description tags +- Check https://lists.freedesktop.org/archives/wayland-devel/2021-September/041972.html + for the full list of changes. + +------------------------------------------------------------------- Old: ---- wayland-protocols-1.21.tar.xz wayland-protocols-1.21.tar.xz.sig New: ---- wayland-protocols-1.22.tar.xz wayland-protocols-1.22.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ wayland-protocols.spec ++++++ --- /var/tmp/diff_new_pack.qLXGRN/_old 2021-09-16 23:16:57.111939939 +0200 +++ /var/tmp/diff_new_pack.qLXGRN/_new 2021-09-16 23:16:57.115939943 +0200 @@ -18,7 +18,7 @@ Name: wayland-protocols -Version: 1.21 +Version: 1.22 Release: 0 Summary: Wayland protocols that adds functionality not available in the core protocol License: MIT ++++++ wayland-protocols-1.21.tar.xz -> wayland-protocols-1.22.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/MEMBERS.md new/wayland-protocols-1.22/MEMBERS.md --- old/wayland-protocols-1.21/MEMBERS.md 2021-03-31 08:35:19.000000000 +0200 +++ new/wayland-protocols-1.22/MEMBERS.md 2021-09-01 09:24:41.000000000 +0200 @@ -1,13 +1,15 @@ # wayland-protocols members -- EFL/Enlightenment: Mike Blumenkrantz <michael.blumenkra...@gmail.com> -- GTK/Mutter: Jonas ??dahl <jad...@gmail.com>, - Carlos Garnacho <carl...@gnome.org> -- KWin: Eike Hein <h...@kde.org>, - David Edmundson <da...@davidedmundson.co.uk> -- Mir: Christopher James Halse Rogers <r...@ubuntu.com>, +- EFL/Enlightenment: Mike Blumenkrantz <michael.blumenkra...@gmail.com> (@zmike) +- GTK/Mutter: Jonas ??dahl <jad...@gmail.com> (@jadahl), + Carlos Garnacho <carl...@gnome.org> (@carlosg) +- KWin: Eike Hein <h...@kde.org> (@hein), + David Edmundson <da...@davidedmundson.co.uk> (@davidedmundson) +- Mir: Christopher James Halse Rogers <r...@ubuntu.com> (@RAOF), Alan Griffiths <alan.griffi...@canonical.com> - Qt: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfe...@qt.io> -- Weston: Pekka Paalanen <pekka.paala...@collabora.com>, - Daniel Stone <dan...@fooishbar.org> -- wlroots/Sway: Drew DeVault <s...@cmpwn.com>, Simon Ser <cont...@emersion.fr> + (@eskilblomfeldt) +- Weston: Pekka Paalanen <pekka.paala...@collabora.com> (@pq), + Daniel Stone <dan...@fooishbar.org> (@daniels) +- wlroots/Sway: Drew DeVault <s...@cmpwn.com> (@ddevault), + Simon Ser <cont...@emersion.fr> (@emersion) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/Makefile.am new/wayland-protocols-1.22/Makefile.am --- old/wayland-protocols-1.21/Makefile.am 2021-04-30 16:11:07.000000000 +0200 +++ new/wayland-protocols-1.22/Makefile.am 2021-09-01 09:24:41.000000000 +0200 @@ -32,6 +32,7 @@ $(NULL) staging_protocols = \ + staging/drm-lease/drm-lease-v1.xml \ staging/xdg-activation/xdg-activation-v1.xml \ $(NULL) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/Makefile.in new/wayland-protocols-1.22/Makefile.in --- old/wayland-protocols-1.21/Makefile.in 2021-04-30 18:09:40.000000000 +0200 +++ new/wayland-protocols-1.22/Makefile.in 2021-09-01 09:45:55.000000000 +0200 @@ -336,7 +336,8 @@ am__EXEEXT_2 = stable/presentation-time/presentation-time.xml \ stable/viewporter/viewporter.xml \ stable/xdg-shell/xdg-shell.xml -am__EXEEXT_3 = staging/xdg-activation/xdg-activation-v1.xml +am__EXEEXT_3 = staging/drm-lease/drm-lease-v1.xml \ + staging/xdg-activation/xdg-activation-v1.xml TEST_SUITE_LOG = test-suite.log am__test_logs1 = $(TESTS:=.log) TEST_LOGS = $(am__test_logs1:.xml.log=.log) @@ -489,6 +490,7 @@ $(NULL) staging_protocols = \ + staging/drm-lease/drm-lease-v1.xml \ staging/xdg-activation/xdg-activation-v1.xml \ $(NULL) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/README.md new/wayland-protocols-1.22/README.md --- old/wayland-protocols-1.21/README.md 2021-03-31 11:20:59.000000000 +0200 +++ new/wayland-protocols-1.22/README.md 2021-09-01 09:24:41.000000000 +0200 @@ -89,6 +89,12 @@ To propose changes to existing protocols, create a GitLab merge request. +Please include a `Signed-off-by` line at the end of the commit to certify +that you wrote it or otherwise have the right to pass it on as an +open-source patch. See the +[Developer Certificate of Origin](https://developercertificate.org/) for +a formal definition. + ## Interface naming convention All protocols should avoid using generic namespaces or no namespaces in @@ -223,9 +229,9 @@ When merge requests get their needed feedback and items, remove the corresponding label that marks it as needing something. For example, if a -merge request receives all the required acknowledgments, remove the ~"Needs -acks" label, or if 30 days passed since opening, remove any ~"In 30 days -discussion period" label. +merge request receives all the required acknowledgments, remove the +~"Needs acks" label, or if 30 days passed since opening, remove any +~"In 30 day discussion period" label. ### Nacking a merge request diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/configure new/wayland-protocols-1.22/configure --- old/wayland-protocols-1.21/configure 2021-04-30 18:09:40.000000000 +0200 +++ new/wayland-protocols-1.22/configure 2021-09-01 09:45:55.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for wayland-protocols 1.21. +# Generated by GNU Autoconf 2.69 for wayland-protocols 1.22. # # Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=Wayland&component=wayland&version=unspecified>. # @@ -580,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='wayland-protocols' PACKAGE_TARNAME='wayland-protocols' -PACKAGE_VERSION='1.21' -PACKAGE_STRING='wayland-protocols 1.21' +PACKAGE_VERSION='1.22' +PACKAGE_STRING='wayland-protocols 1.22' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=Wayland&component=wayland&version=unspecified' PACKAGE_URL='http://wayland.freedesktop.org/' @@ -1226,7 +1226,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures wayland-protocols 1.21 to adapt to many kinds of systems. +\`configure' configures wayland-protocols 1.22 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1294,7 +1294,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of wayland-protocols 1.21:";; + short | recursive ) echo "Configuration of wayland-protocols 1.22:";; esac cat <<\_ACEOF @@ -1392,7 +1392,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -wayland-protocols configure 1.21 +wayland-protocols configure 1.22 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1409,7 +1409,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by wayland-protocols $as_me 1.21, which was +It was created by wayland-protocols $as_me 1.22, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -1760,7 +1760,7 @@ -WAYLAND_PROTOCOLS_VERSION=1.21 +WAYLAND_PROTOCOLS_VERSION=1.22 @@ -2539,7 +2539,7 @@ # Define the identity of the package. PACKAGE='wayland-protocols' - VERSION='1.21' + VERSION='1.22' cat >>confdefs.h <<_ACEOF @@ -3358,7 +3358,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by wayland-protocols $as_me 1.21, which was +This file was extended by wayland-protocols $as_me 1.22, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3412,7 +3412,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -wayland-protocols config.status 1.21 +wayland-protocols config.status 1.22 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/configure.ac new/wayland-protocols-1.22/configure.ac --- old/wayland-protocols-1.21/configure.ac 2021-04-30 18:09:17.000000000 +0200 +++ new/wayland-protocols-1.22/configure.ac 2021-09-01 09:45:22.000000000 +0200 @@ -1,7 +1,7 @@ AC_PREREQ([2.64]) m4_define([wayland_protocols_major_version], [1]) -m4_define([wayland_protocols_minor_version], [21]) +m4_define([wayland_protocols_minor_version], [22]) m4_define([wayland_protocols_version], [wayland_protocols_major_version.wayland_protocols_minor_version]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/meson.build new/wayland-protocols-1.22/meson.build --- old/wayland-protocols-1.21/meson.build 2021-04-30 18:09:21.000000000 +0200 +++ new/wayland-protocols-1.22/meson.build 2021-09-01 09:43:24.000000000 +0200 @@ -1,6 +1,6 @@ project('wayland-protocols', - version: '1.21', - meson_version: '>= 0.53.0', + version: '1.22', + meson_version: '>= 0.54.0', license: 'MIT/Expat', ) @@ -39,6 +39,7 @@ staging_protocols = { 'xdg-activation': ['v1'], + 'drm-lease': ['v1'], } protocol_files = [] @@ -106,6 +107,14 @@ configuration: pkgconfig_configuration, ) +wayland_protocols = declare_dependency( + variables: { + 'pkgdatadir': wayland_protocols_srcdir, + }, +) + +meson.override_dependency('wayland-protocols', wayland_protocols) + if get_option('tests') subdir('tests') endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/stable/presentation-time/presentation-time.xml new/wayland-protocols-1.22/stable/presentation-time/presentation-time.xml --- old/wayland-protocols-1.21/stable/presentation-time/presentation-time.xml 2021-03-31 08:35:19.000000000 +0200 +++ new/wayland-protocols-1.22/stable/presentation-time/presentation-time.xml 2021-09-01 09:24:41.000000000 +0200 @@ -159,43 +159,43 @@ These flags provide information about how the presentation of the related content update was done. The intent is to help clients assess the reliability of the feedback and the visual - quality with respect to possible tearing and timings. The - flags are: - - VSYNC: - The presentation was synchronized to the "vertical retrace" by - the display hardware such that tearing does not happen. - Relying on user space scheduling is not acceptable for this - flag. If presentation is done by a copy to the active - frontbuffer, then it must guarantee that tearing cannot - happen. - - HW_CLOCK: - The display hardware provided measurements that the hardware - driver converted into a presentation timestamp. Sampling a - clock in user space is not acceptable for this flag. - - HW_COMPLETION: - The display hardware signalled that it started using the new - image content. The opposite of this is e.g. a timer being used - to guess when the display hardware has switched to the new - image content. - - ZERO_COPY: - The presentation of this update was done zero-copy. This means - the buffer from the client was given to display hardware as - is, without copying it. Compositing with OpenGL counts as - copying, even if textured directly from the client buffer. - Possible zero-copy cases include direct scanout of a - fullscreen surface and a surface on a hardware overlay. + quality with respect to possible tearing and timings. </description> - <entry name="vsync" value="0x1" summary="presentation was vsync'd"/> - <entry name="hw_clock" value="0x2" - summary="hardware provided the presentation timestamp"/> - <entry name="hw_completion" value="0x4" - summary="hardware signalled the start of the presentation"/> - <entry name="zero_copy" value="0x8" - summary="presentation was done zero-copy"/> + <entry name="vsync" value="0x1"> + <description summary="presentation was vsync'd"> + The presentation was synchronized to the "vertical retrace" by + the display hardware such that tearing does not happen. + Relying on user space scheduling is not acceptable for this + flag. If presentation is done by a copy to the active + frontbuffer, then it must guarantee that tearing cannot + happen. + </description> + </entry> + <entry name="hw_clock" value="0x2"> + <description summary="hardware provided the presentation timestamp"> + The display hardware provided measurements that the hardware + driver converted into a presentation timestamp. Sampling a + clock in user space is not acceptable for this flag. + </description> + </entry> + <entry name="hw_completion" value="0x4"> + <description summary="hardware signalled the start of the presentation"> + The display hardware signalled that it started using the new + image content. The opposite of this is e.g. a timer being used + to guess when the display hardware has switched to the new + image content. + </description> + </entry> + <entry name="zero_copy" value="0x8"> + <description summary="presentation was done zero-copy"> + The presentation of this update was done zero-copy. This means + the buffer from the client was given to display hardware as + is, without copying it. Compositing with OpenGL counts as + copying, even if textured directly from the client buffer. + Possible zero-copy cases include direct scanout of a + fullscreen surface and a surface on a hardware overlay. + </description> + </entry> </enum> <event name="presented"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/stable/xdg-shell/xdg-shell.xml new/wayland-protocols-1.22/stable/xdg-shell/xdg-shell.xml --- old/wayland-protocols-1.21/stable/xdg-shell/xdg-shell.xml 2021-03-26 10:11:47.000000000 +0100 +++ new/wayland-protocols-1.22/stable/xdg-shell/xdg-shell.xml 2021-09-01 09:24:41.000000000 +0200 @@ -75,7 +75,9 @@ <description summary="create a shell surface from a surface"> This creates an xdg_surface for the given surface. While xdg_surface itself is not a role, the corresponding surface may only be assigned - a role extending xdg_surface, such as xdg_toplevel or xdg_popup. + a role extending xdg_surface, such as xdg_toplevel or xdg_popup. It is + illegal to create an xdg_surface for a wl_surface which already has an + assigned role and this will result in a protocol error. This creates an xdg_surface for the given surface. An xdg_surface is used as basis to define a role to a given surface, such as xdg_toplevel diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/staging/drm-lease/README new/wayland-protocols-1.22/staging/drm-lease/README --- old/wayland-protocols-1.21/staging/drm-lease/README 1970-01-01 01:00:00.000000000 +0100 +++ new/wayland-protocols-1.22/staging/drm-lease/README 2021-09-01 09:24:41.000000000 +0200 @@ -0,0 +1,6 @@ +Linux DRM lease + +Maintainers: +Drew DeVault <s...@cmpwn.com> +Marius Vlad <marius.v...@collabora.com> +Xaver Hugl <xaver.h...@gmail.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/staging/drm-lease/drm-lease-v1.xml new/wayland-protocols-1.22/staging/drm-lease/drm-lease-v1.xml --- old/wayland-protocols-1.21/staging/drm-lease/drm-lease-v1.xml 1970-01-01 01:00:00.000000000 +0100 +++ new/wayland-protocols-1.22/staging/drm-lease/drm-lease-v1.xml 2021-09-01 09:24:41.000000000 +0200 @@ -0,0 +1,303 @@ +<?xml version="1.0" encoding="UTF-8"?> +<protocol name="drm_lease_v1"> + <copyright> + Copyright ?? 2018 NXP + Copyright ?? 2019 Status Research & Development GmbH. + Copyright ?? 2021 Xaver Hugl + + 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="wp_drm_lease_device_v1" version="1"> + <description summary="lease device"> + This protocol is used by Wayland compositors which act as Direct + Renderering Manager (DRM) masters to lease DRM resources to Wayland + clients. + + The compositor will advertise one wp_drm_lease_device_v1 global for each + DRM node. Some time after a client binds to the wp_drm_lease_device_v1 + global, the compositor will send a drm_fd event followed by zero, one or + more connector events. After all currently available connectors have been + sent, the compositor will send a wp_drm_lease_device_v1.done event. + + When the list of connectors available for lease changes the compositor + will send wp_drm_lease_device_v1.connector events for added connectors and + wp_drm_lease_connector_v1.withdrawn events for removed connectors, + followed by a wp_drm_lease_device_v1.done event. + + The compositor will indicate when a device is gone by removing the global + via a wl_registry.global_remove event. Upon receiving this event, the + client should destroy any matching wp_drm_lease_device_v1 object. + + To destroy a wp_drm_lease_device_v1 object, the client must first issue + a release request. Upon receiving this request, the compositor will + immediately send a released event and destroy the object. The client must + continue to process and discard drm_fd and connector events until it + receives the released event. Upon receiving the released event, the + client can safely cleanup any client-side resources. + + Warning! The protocol described in this file is currently in the testing + phase. Backward compatible changes may be added together with the + corresponding interface version bump. Backward incompatible changes can + only be done by creating a new major version of the extension. + </description> + + <request name="create_lease_request"> + <description summary="create a lease request object"> + Creates a lease request object. + + See the documentation for wp_drm_lease_request_v1 for details. + </description> + <arg name="id" type="new_id" interface="wp_drm_lease_request_v1" /> + </request> + + <request name="release"> + <description summary="release this object"> + Indicates the client no longer wishes to use this object. In response + the compositor will immediately send the released event and destroy + this object. It can however not guarantee that the client won't receive + connector events before the released event. The client must not send any + requests after this one, doing so will raise a wl_display error. + Existing connectors, lease request and leases will not be affected. + </description> + </request> + + <event name="drm_fd"> + <description summary="open a non-master fd for this DRM node"> + The compositor will send this event when the wp_drm_lease_device_v1 + global is bound, although there are no guarantees as to how long this + takes - the compositor might need to wait until regaining DRM master. + The included fd is a non-master DRM file descriptor opened for this + device and the compositor must not authenticate it. + The purpose of this event is to give the client the ability to + query DRM and discover information which may help them pick the + appropriate DRM device or select the appropriate connectors therein. + </description> + <arg name="fd" type="fd" summary="DRM file descriptor" /> + </event> + + <event name="connector"> + <description summary="advertise connectors available for leases"> + The compositor will use this event to advertise connectors available for + lease by clients. This object may be passed into a lease request to + indicate the client would like to lease that connector, see + wp_drm_lease_request_v1.request_connector for details. While the + compositor will make a best effort to not send disconnected connectors, + no guarantees can be made. + + The compositor must send the drm_fd event before sending connectors. + After the drm_fd event it will send all available connectors but may + send additional connectors at any time. + </description> + <arg name="id" type="new_id" interface="wp_drm_lease_connector_v1" /> + </event> + + <event name="done"> + <description summary="signals grouping of connectors"> + The compositor will send this event to indicate that it has sent all + currently available connectors after the client binds to the global or + when it updates the connector list, for example on hotplug, drm master + change or when a leased connector becomes available again. It will + similarly send this event to group wp_drm_lease_connector_v1.withdrawn + events of connectors of this device. + </description> + </event> + + <event name="released"> + <description summary="the compositor has finished using the device"> + This event is sent in response to the release request and indicates + that the compositor is done sending connector events. + The compositor will destroy this object immediately after sending the + event and it will become invalid. The client should release any + resources associated with this device after receiving this event. + </description> + </event> + </interface> + + <interface name="wp_drm_lease_connector_v1" version="1"> + <description summary="a leasable DRM connector"> + Represents a DRM connector which is available for lease. These objects are + created via wp_drm_lease_device_v1.connector events, and should be passed + to lease requests via wp_drm_lease_request_v1.request_connector. + Immediately after the wp_drm_lease_connector_v1 object is created the + compositor will send a name, a description, a connector_id and a done + event. When the description is updated the compositor will send a + description event followed by a done event. + </description> + + <event name="name"> + <description summary="name"> + The compositor sends this event once the connector is created to + indicate the name of this connector. This will not change for the + duration of the Wayland session, but is not guaranteed to be consistent + between sessions. + </description> + <arg name="name" type="string" summary="connector name" /> + </event> + + <event name="description"> + <description summary="description"> + The compositor sends this event once the connector is created to provide + a human-readable description for this connector, which may be presented + to the user. The compositor may send this event multiple times over the + lifetime of this object to reflect changes in the description. + </description> + <arg name="description" type="string" summary="connector description" /> + </event> + + <event name="connector_id"> + <description summary="connector_id"> + The compositor sends this event once the connector is created to + indicate the DRM object ID which represents the underlying connector + that is being offered. Note that the final lease may include additional + object IDs, such as CRTCs and planes. + </description> + <arg name="connector_id" type="uint" summary="DRM connector ID" /> + </event> + + <event name="done"> + <description summary="all properties have been sent"> + This event is sent after all properties of a connector have been sent. + This allows changes to the properties to be seen as atomic even if they + happen via multiple events. + </description> + </event> + + <event name="withdrawn"> + <description summary="lease offer withdrawn"> + Sent to indicate that the compositor will no longer honor requests for + DRM leases which include this connector. The client may still issue a + lease request including this connector, but the compositor will send + wp_drm_lease_v1.finished without issuing a lease fd. Compositors are + encouraged to send this event when they lose access to connector, for + example when the connector is hot-unplugged, when the connector gets + leased to a client or when the compositor loses DRM master. + </description> + </event> + + <request name="destroy" type="destructor"> + <description summary="destroy connector"> + The client may send this request to indicate that it will not use this + connector. Clients are encouraged to send this after receiving the + "withdrawn" event so that the server can release the resources + associated with this connector offer. Neither existing lease requests + nor leases will be affected. + </description> + </request> + </interface> + + <interface name="wp_drm_lease_request_v1" version="1"> + <description summary="DRM lease request"> + A client that wishes to lease DRM resources will attach the list of + connectors advertised with wp_drm_lease_device_v1.connector that they + wish to lease, then use wp_drm_lease_request_v1.submit to submit the + request. + </description> + + <enum name="error"> + <entry name="wrong_device" value="0" + summary="requested a connector from a different lease device"/> + <entry name="duplicate_connector" value="1" + summary="requested a connector twice"/> + <entry name="empty_lease" value="2" + summary="requested a lease without requesting a connector"/> + </enum> + + <request name="request_connector"> + <description summary="request a connector for this lease"> + Indicates that the client would like to lease the given connector. + This is only used as a suggestion, the compositor may choose to + include any resources in the lease it issues, or change the set of + leased resources at any time. Compositors are however encouraged to + include the requested connector and other resources necessary + to drive the connected output in the lease. + + Requesting a connector that was created from a different lease device + than this lease request raises the wrong_device error. Requesting a + connector twice will raise the duplicate_connector error. + </description> + <arg name="connector" type="object" + interface="wp_drm_lease_connector_v1" /> + </request> + + <request name="submit" type="destructor"> + <description summary="submit the lease request"> + Submits the lease request and creates a new wp_drm_lease_v1 object. + After calling submit the compositor will immediately destroy this + object, issuing any more requests will cause a wl_diplay error. + The compositor doesn't make any guarantees about the events of the + lease object, clients cannot expect an immediate response. + Not requesting any connectors before submitting the lease request + will raise the empty_lease error. + </description> + <arg name="id" type="new_id" interface="wp_drm_lease_v1" /> + </request> + </interface> + + <interface name="wp_drm_lease_v1" version="1"> + <description summary="a DRM lease"> + A DRM lease object is used to transfer the DRM file descriptor to the + client and manage the lifetime of the lease. + + Some time after the wp_drm_lease_v1 object is created, the compositor + will reply with the lease request's result. If the lease request is + granted, the compositor will send a lease_fd event. If the lease request + is denied, the compositor will send a finished event without a lease_fd + event. + </description> + + <event name="lease_fd"> + <description summary="shares the DRM file descriptor"> + This event returns a file descriptor suitable for use with DRM-related + ioctls. The client should use drmModeGetLease to enumerate the DRM + objects which have been leased to them. The compositor guarantees it + will not use the leased DRM objects itself until it sends the finished + event. If the compositor cannot or will not grant a lease for the + requested connectors, it will not send this event, instead sending the + finished event. + + The compositor will send this event at most once during this objects + lifetime. + </description> + <arg name="leased_fd" type="fd" summary="leased DRM file descriptor" /> + </event> + + <event name="finished"> + <description summary="sent when the lease has been revoked"> + The compositor uses this event to either reject a lease request, or if + it previously sent a lease_fd, to notify the client that the lease has + been revoked. If the client requires a new lease, they should destroy + this object and submit a new lease request. The compositor will send + no further events for this object after sending the finish event. + Compositors should revoke the lease when any of the leased resources + become unavailable, namely when a hot-unplug occurs or when the + compositor loses DRM master. + </description> + </event> + + <request name="destroy" type="destructor"> + <description summary="destroys the lease object"> + The client should send this to indicate that it no longer wishes to use + this lease. The compositor should use drmModeRevokeLease on the + appropriate file descriptor, if necessary. + </description> + </request> + </interface> +</protocol> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/staging/xdg-activation/x11-interoperation.rst new/wayland-protocols-1.22/staging/xdg-activation/x11-interoperation.rst --- old/wayland-protocols-1.21/staging/xdg-activation/x11-interoperation.rst 2021-04-30 16:04:09.000000000 +0200 +++ new/wayland-protocols-1.22/staging/xdg-activation/x11-interoperation.rst 2021-09-01 09:24:41.000000000 +0200 @@ -3,14 +3,14 @@ *This document is non-normative.* -The former X11 startup-notification standard -(https://cgit.freedesktop.org/startup-notification/tree/doc/startup-notification.txt) -defines the use of the DESKTOP_STARTUP_ID environment variable to propagate +The former +`X11 Startup notification protocol <https://cgit.freedesktop.org/startup-notification/tree/doc/startup-notification.txt>`_ +defines the use of the ``DESKTOP_STARTUP_ID`` environment variable to propagate startup sequences ("activation tokens" in this protocol) between launcher and launchee. These startup sequence IDs are defined as a globally unique string with a -`[unique]_TIME[timestamp]` format, where the ID as a whole is used for startup +``[unique]_TIME[timestamp]`` format, where the ID as a whole is used for startup notification and the timestamp is used for focus requests and focus stealing prevention. @@ -22,11 +22,11 @@ -------------------------------------------- 1. Wayland client requests token. -2. Wayland client spawns X11 client, sets `$DESKTOP_STARTUP_ID` in its +2. Wayland client spawns X11 client, sets ``$DESKTOP_STARTUP_ID`` in its environment with the token string. 3. X11 client starts. -4. X11 client sends startup-notification `remove` message with the activation - `$DESKTOP_STARTUP_ID` content. +4. X11 client sends startup-notification ``remove`` message with the activation + ``$DESKTOP_STARTUP_ID`` content. 5. Compositor receives startup notification message, matches ID with the common pool. 6. The startup feedback is finished. @@ -37,28 +37,27 @@ -------------------------------------------- 1. X11 client builds a "globally unique" ID -2. X11 client sends startup-notification `new` message with the ID. +2. X11 client sends startup-notification ``new`` message with the ID. 3. Compositor receives startup notification message, adds the ID to the common pool. -4. X11 client spawns Wayland client, sets `$DESKTOP_STARTUP_ID` in its +4. X11 client spawns Wayland client, sets ``$DESKTOP_STARTUP_ID`` in its environment. 5. Wayland client starts. -6. Wayland client sets the activation token, as received from - `$DESKTOP_STARTUP_ID`. +6. Wayland client requests surface activation with the activation token, + as received from ``$DESKTOP_STARTUP_ID``. 7. Compositor receives the request, matches ID with the common pool 8. The startup feedback is finished. -9. Wayland client requests surface activation. -10. Compositor applies internal policies to allow/deny focus switch. +9. Compositor applies internal policies to allow/deny focus switch. Caveats ------- -- For legacy reasons, the usage of `$DESKTOP_STARTUP_ID` (even if as a +- For legacy reasons, the usage of ``$DESKTOP_STARTUP_ID`` (even if as a fallback) should be observed in compositors and clients that are concerned with X11 interoperation. - Depending on the X11 startup-notification implementation in use by the - compositor, the usage of the `_TIME[timestamp]` suffix may be mandatory + compositor, the usage of the ``_TIME[timestamp]`` suffix may be mandatory for its correct behavior in the first scenario, the startup-notification reference library is one such implementation. Compositors may work this around by adding a matching suffix to the generated activation tokens. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/staging/xdg-activation/xdg-activation-v1.xml new/wayland-protocols-1.22/staging/xdg-activation/xdg-activation-v1.xml --- old/wayland-protocols-1.21/staging/xdg-activation/xdg-activation-v1.xml 2021-04-30 16:04:09.000000000 +0200 +++ new/wayland-protocols-1.22/staging/xdg-activation/xdg-activation-v1.xml 2021-09-01 09:24:41.000000000 +0200 @@ -30,8 +30,22 @@ The client that intends to activate another toplevel uses the xdg_activation_v1.get_activation_token request to get an activation token. - This token is then passed to the client to be activated through a separate - band of communication. The client to be activated will then pass the token + This token is then forwarded to the client, which is supposed to activate + one of its surfaces, through a separate band of communication. + + One established way of doing this is through the XDG_ACTIVATION_TOKEN + environment variable of a newly launched child process. The child process + should unset the environment variable again right after reading it out in + order to avoid propagating it to other child processes. + + Another established way exists for Applications implementing the D-Bus + interface org.freedesktop.Application, which should get their token under + XDG_ACTIVATION_TOKEN on their platform_data. + + In general activation tokens may be transferred across clients through + means not described in this protocol. + + The client to be activated will then pass the token it received to the xdg_activation_v1.activate request. The compositor can then use this token to decide how to react to the activation request. @@ -89,7 +103,7 @@ token and might decide not to follow through with the activation if it's considered unwanted. - Compositors can ignore unknown presentation tokens when an invalid + Compositors can ignore unknown activation tokens when an invalid token is passed. </description> <arg name="token" type="string" summary="the activation token of the initiating client"/> @@ -120,6 +134,14 @@ Provides information about the seat and serial event that requested the token. + The serial can come from an input or focus event. For instance, if a + click triggers the launch of a third-party client, the launcher client + should send a set_serial request with the serial and seat from the + wl_pointer.button event. + + Some compositors might refuse to activate toplevels when the token + doesn't have a valid and recent enough event serial. + Must be sent before commit. This information is optional. </description> <arg name="serial" type="uint" @@ -140,11 +162,14 @@ </request> <request name="set_surface"> - <description summary="specifies the application being activated"> - The requesting client can specify a surface to associate the token - being created with it. + <description summary="specifies the surface requesting activation"> + This request sets the surface requesting the activation. Note, this is + different from the surface that will be activated. + + Some compositors might refuse to activate toplevels when the token + doesn't have a requesting surface. - Must be triggered before commit. This information is optional. + Must be sent before commit. This information is optional. </description> <arg name="surface" type="object" interface="wl_surface" summary="the requesting surface"/> @@ -161,17 +186,6 @@ <description summary="the exported activation token"> The 'done' event contains the unique token of this activation request and notifies that the provider is done. - - Applications will typically receive the token through the - XDG_ACTIVATION_TOKEN environment variable as set by its launcher, and - should unset the environment variable right after this request, in - order to avoid propagating it to child processes. - - Applications implementing the D-Bus interface org.freedesktop.Application - should get their token under XDG_ACTIVATION_TOKEN on their platform_data. - - Presentation tokens may be transferred across clients through means not - described in this protocol. </description> <arg name="token" type="string" summary="the exported activation token"/> </event> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/tests/build-cxx.cc.in new/wayland-protocols-1.22/tests/build-cxx.cc.in --- old/wayland-protocols-1.21/tests/build-cxx.cc.in 2021-03-31 08:35:19.000000000 +0200 +++ new/wayland-protocols-1.22/tests/build-cxx.cc.in 2021-09-01 09:24:41.000000000 +0200 @@ -8,5 +8,7 @@ int main(int argc, char **argv) { + (void)argc; + (void)argv; return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/tests/build-pedantic.c.in new/wayland-protocols-1.22/tests/build-pedantic.c.in --- old/wayland-protocols-1.21/tests/build-pedantic.c.in 2021-03-31 08:35:19.000000000 +0200 +++ new/wayland-protocols-1.22/tests/build-pedantic.c.in 2021-09-01 09:24:41.000000000 +0200 @@ -6,5 +6,7 @@ int main(int argc, char **argv) { + (void)argc; + (void)argv; return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/tests/meson.build new/wayland-protocols-1.22/tests/meson.build --- old/wayland-protocols-1.21/tests/meson.build 2021-03-31 08:35:19.000000000 +0200 +++ new/wayland-protocols-1.22/tests/meson.build 2021-09-01 09:43:24.000000000 +0200 @@ -11,16 +11,16 @@ protocol_path = join_paths(wayland_protocols_srcdir, protocol_file) test_name = 'scan-@0@'.format(protocol_file.underscorify()) test(test_name, prog_scan_sh, - args: protocol_path, - env: [ - 'SCANNER=@0@'.format(prog_scanner.path()), - ] + args: protocol_path, + env: [ + 'SCANNER=@0@'.format(prog_scanner.path()), + ] ) endforeach # Check buildability -add_languages('c', 'cpp') +add_languages('c', 'cpp', native: true) replace = find_program('replace.py') foreach protocol_file : protocol_files @@ -109,6 +109,7 @@ '-Wall', '-Werror' ], install: false, + native: true, ) test(test_name, pedantic_test_executable) @@ -130,11 +131,13 @@ server_header, ], link_args: [ '-Wl,--unresolved-symbols=ignore-all' ], + dependencies: libwayland, cpp_args: [ '-Wall', '-Werror', ], install: false, + native: true, ) test(test_name, cxx_test_executable) endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/tests/replace.py new/wayland-protocols-1.22/tests/replace.py --- old/wayland-protocols-1.21/tests/replace.py 2021-03-31 08:35:19.000000000 +0200 +++ new/wayland-protocols-1.22/tests/replace.py 2021-09-01 09:24:41.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/python3 +#!/usr/bin/env python3 import sys diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wayland-protocols-1.21/unstable/xdg-output/xdg-output-unstable-v1.xml new/wayland-protocols-1.22/unstable/xdg-output/xdg-output-unstable-v1.xml --- old/wayland-protocols-1.21/unstable/xdg-output/xdg-output-unstable-v1.xml 2019-11-21 13:53:15.000000000 +0100 +++ new/wayland-protocols-1.22/unstable/xdg-output/xdg-output-unstable-v1.xml 2021-09-01 09:24:41.000000000 +0200 @@ -138,7 +138,7 @@ advertise a logical size of 1920??1080, - A compositor using a fractional scale of 1.5 will advertise a - logical size to 2560??1620. + logical size of 2560??1440. For example, for a wl_output mode 1920??1080 and a 90 degree rotation, the compositor will advertise a logical size of 1080x1920.