aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-09-01build: fix indentation in tests/meson.buildSimon Ser
The rest of the file uses tabs, not spaces. Signed-off-by: Simon Ser <contact@emersion.fr>
2021-09-01build: declare dependency for use as a subprojectSimon Ser
This allows clients and compositors to easily use wayland-protocols as a Meson subproject. Signed-off-by: Simon Ser <contact@emersion.fr>
2021-08-28tests: Include libwayland cflags/ldflagsDaniel Stone
When we're building C++ test executables, make sure we pull in the correct libwayland headers, to avoid trying to compile against a version different from the scanner we built it against. Signed-off-by: Daniel Stone <daniels@collabora.com>
2021-08-06readme: fix unformatted label referencesSimon Ser
The newlines prevent the labels from being properly formatted. Additionally, the second label reference has a typo (extra "s"). Signed-off-by: Simon Ser <contact@emersion.fr>
2021-08-06staging/drm-lease: DRM lease protocol supportXaver Hugl
DRM leasing is a feature which allows the DRM master to "lease" a subset of its DRM resources to another DRM master via drmModeCreateLease, which returns a file descriptor for the new DRM master. We use this protocol to negotiate the terms of the lease and transfer this file descriptor to clients. In less DRM-specific terms: this protocol allows Wayland compositors to give over their GPU resources (like displays) to a Wayland client to exclusively control. The primary use-case for this is Virtual Reality headsets, which via the non-desktop DRM property are generally not used as desktop displays by Wayland compositors, and for latency reasons (among others) are most useful to games et al if they have direct control over the DRM resources associated with it. Basically, these are peripherals which are of no use to the compositor and may be of use to a client, but since they are tied up in DRM we need to use DRM leasing to get them into client's hands. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Signed-off-by: Drew DeVault <sir@cmpwn.com> Signed-off-by: Xaver Hugl <xaver.hugl@gmail.com> Reviewed-by: Simon Ser <contact@emersion.fr> Signed-off-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2021-08-04xdg-activation: rewrite and move description of token forwardingRoman Gilg
After a requesting client receives a new token, the client usually forwards the token string to another client by a different process, which then uses the token in an activate request. For that the token string must be transferred to the other process. Two default ways of doing that were described in the done event, but the description had some issues and it makes more sense to describe them in the protocol description itself, which talks about the protocol in a more general way. Therefore rewrite the paragraphs about token forwarding between clients and place them in the protocol description. Signed-off-by: Roman Gilg <subdiff@gmail.com>
2021-08-04xdg-activation: correct sequence when X11 client spawns Wayland clientRoman Gilg
The Wayland client requests surface activation directly using the token that it received from the X11 client. Signed-off-by: Roman Gilg <subdiff@gmail.com>
2021-08-04xdg-activation: use rst inline codeRoman Gilg
rst requires two backticks to format text as inline code. Signed-off-by: Roman Gilg <subdiff@gmail.com>
2021-08-04xdg-activation: use rst linkRoman Gilg
Instead of writing the link in brackets use the rst link functionality. Signed-off-by: Roman Gilg <subdiff@gmail.com>
2021-07-27presentation-time: use enum entry description tagsSimon Ser
Instead of describing each enum entry in the enum description, use enum entry descriptions. This avoids the awkward list of flags in the top-level description. This has been possible for a long time, but wasn't correctly handled by wayland-scanner until recently [1]. [1]: https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/151 Signed-off-by: Simon Ser <contact@emersion.fr>
2021-07-21xdg-shell: Make xdg_surface fail when surface has roleDaniel Stone
It is illegal for a surface to have more than one role. The only thing which can be done with an xdg_surface (apart from destroying it) is to assign the surface a role with the get_toplevel, get_popup, etc requests. On Mutter, calling get_xdg_surface on a surface which already has an assigned role generates the 'role' protocol error. Weston will not send an error, however it may later abort on a failed assert during cleanup. wlroots allows this case, and only sends the role error when assigning an explicit role through creating a toplevel or popup. On the grounds that it makes no sense to create an xdg_surface for a wl_surface which already has a role, make it explicitly illegal. cf. wayland/weston!559, wayland/weston!627 Signed-off-by: Daniel Stone <daniels@collabora.com>
2021-07-01xdg-activation-v1: clarify set_{serial,surface}Simon Ser
Make it clearer what the requests are used for. Signed-off-by: Simon Ser <contact@emersion.fr>
2021-06-25readme: mention the DCOSimon Ser
We haven't mentionned the DCO anywhere, yet we were requiring all contributions to have a Signed-off-by line to accept it. Add a reference to the DCO in our README's "development procedure" section. Signed-off-by: Simon Ser <contact@emersion.fr>
2021-06-23tests: Fix build with -WextraXavier Claessens
Unused arguments warnings are treated as errors in those tests otherwise. Fixes: #53. Signed-off-by: Xavier Claessens <xavier.claessens@collabora.com>
2021-06-07xdg-output: fix minor calculation errorManuel Stoeckl
Signed-off-by: Manuel Stoeckl <code@mstoeckl.com> Reviewed-by: Simon Ser <contact@emersion.fr>
2021-06-07xdg-activation: Fix an inconsistencyVlad Zahorodnii
The spec uses the terms "presentation token" and "activation token" interchangeably, which can cause confusion. Signed-off-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
2021-06-03tests: use dynamic python pathIssam E. Maghni
Stop hardcoding the Python path to /usr/bin/python3. Not all systems have Python installed to /usr/bin, and some users might have installed Python to a custom location. Instead, use /usr/bin/env, which performs a $PATH lookup to find the Python executable. Signed-off-by: Issam E. Maghni <issam.e.maghni@mailbox.org>
2021-05-18members: add GitLab usernamesSimon Ser
Add GitLab usernames for all members, so that they can easily be mentionned in merge requests or issues. The only missing username is for Alan Griffiths, I don't think they have a GitLab account at the moment. Signed-off-by: Simon Ser <contact@emersion.fr>
2021-04-30build: Bump version to 1.21Jonas Ådahl
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2021-04-30Makefile.am: Include meson-only filesJonas Ådahl
This makes it possible to use both autotools and meson to build and install the tarball. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2021-04-30staging/xdg-activation: Describe interoperation with X11Carlos Garnacho
X11 had its own startup notification protocol, describe how could Wayland compositors implement interoperation between Wayland and X11 clients, should this be desired. Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
2021-04-30Include a new xdg_activation protocolAleix Pol
Signed-off-by: Aleix Pol Gonzalez <aleixpol@kde.org> Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Simon Ser <contact@emersion.fr> Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2021-04-14Replace `unstable` with `staging`Jonas Ådahl
Time has told us that the effort going from `unstable` to `stable` is enough of a burdon meaning very few protocols are ever declared stable. To mitigate this, and thus avoid having protocols being "stuck" being "unstable" indefinitely, replace the "unstable" -> "stable" procedure with a "staging" -> "stable" procedure, where declaring a protocol stable does not involve any changes to any implementations. The only side effect of this is that version numbers are to forever be part of all interface names and protocol XML files. Closes: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/30 Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Simon Ser <contact@emersion.fr>
2021-04-14xdg-foreign: add error enumsSimon Ser
The protocol states that the client must provide xdg_toplevel surfaces, but doesn't specify protocol error values that can be sent by the compositor. Signed-off-by: Simon Ser <contact@emersion.fr>
2021-04-13pointer-gestures: correct description of pinchPeter Hutterer
This is being picky, but "pinch/spread" is the physical gesture, zoom and rotate is the effect that clients provide in response to that gesture. Let's use pinch only here since spread is more ambiguous in english, as anyone who's ever had butter on their bread would know. Also, everything else is referring to it as pinch anyway, so zoom/rotate here is the odd one out. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-04-05fullscreen-shell: Clarify that present requests assign a surface roleVlad Zahorodnii
Currently, the spec doesn't say explicitly that present requests assign a surface role. Given that, it can be viewed as the protocol modifies an already assigned surface role, e.g. xdg-toplevel, and present requests only act as hints. Signed-off-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
2021-03-31linux-dmabuf: clarify what mixed valid/INVALID modifiers meanSimon Ser
This commit makes it clear that compositors can send valid modifiers and DRM_FORMAT_MOD_INVALID for a given format. This means that the compositor supports both implicit and explicit modifiers. See the warning further down: > 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. Xwayland already requires compositors to send DRM_FORMAT_MOD_INVALID for importing buffers with an implicit modifier [1]. In a future protocol version, it would be nice to make it a protocol error (or at least a soft failure) to use any format/modifier pair that wasn't advertised. A use-case for this is Vulkan compositors: the Vulkan DMA-BUF extensions require an explicit modifier and cannot import buffers which have an implicit modifier. [1]: https://gitlab.freedesktop.org/xorg/xserver/-/blob/6c51818a0f55282cbe5a870f58ca82ca45ee472d/hw/xwayland/xwayland-glamor-gbm.c#L328 Signed-off-by: Simon Ser <contact@emersion.fr>
2021-03-31ci: Make the FDO_UPSTREAM_REPO variable globalJonas Ådahl
ci-fairy doesn't know how to to look at $CI_MERGE_REQUEST_PROJECT_PATH right now, so if we don't manually set $FDO_UPSTREAM_REPO, ci-fairy will (without verbose logging turned on) silently fall back on the source repository project path for finding the branch point. This might fail if the owner of the source repository hasn't updated the `master` branch of their fork. Related: https://gitlab.freedesktop.org/freedesktop/ci-templates/-/issues/32 Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2021-03-26ci: Use ci-fairy to check for Signed-off-byJonas Ådahl
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2021-03-26build: Fix wayland-protocols.pc when using autotoolsJonas Ådahl
"datadir" is not the same thing in meson and autotools. In autoconf "datadir" is "${datarootdir}", which expands to "${prefix}/share". @datarootdir@ expands to "${prefix}/share". There seems to be no variable that expands to "share". In meson "datadir" is "share". So, avoid the "datadir" variable, just expand "datarootdir" it manually instead. This unbreaks the recently broken autotools setup. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Simon Ser <contact@emersion.fr>
2021-03-26ci: Add test-meson stepJonas Ådahl
Apart from the autotools build system, also test the meson build system. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2021-03-26ci: Switch to upstream ci-templates and use Debian bullseyeJonas Ådahl
This switches to the ci-templates that is found on https://gitlab.freedesktop.org/freedesktop/ci-templates/ While at it, switch to Debian bullseye, as this contains more reasonably versioned build tools, i.e. a new enough version of meson. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2021-03-26tests: Add compile testsJonas Ådahl
Only tested by the meson build system. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Simon Ser <contact@emersion.fr>
2021-03-26Add meson build system supportJonas Ådahl
Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Simon Ser <contact@emersion.fr>
2021-02-16linux-dmabuf: no buffer errors on device disappearancePekka Paalanen
This was prompted by the discussion from https://lists.freedesktop.org/archives/dri-devel/2020-May/266611.html which is not the final wording. When a DRM device is hot-unplugged, particularly if it is the Wayland compositor's compositing GPU, EGL may start returning errors from trying to use the client's dmabuf. Or, if the client is rendering on another GPU which gets hot-unplugged, the dmabuf the compositor already has may start failing. Hot-unplug is an abrupt global action, and there is no way a client or a compositor could ensure they clean up before things start failing. It is not the client's fault, so the client should not get disconnected if already existing wl_buffer objects start failing. This patch add the wording to the protocol to this effect. The intention is that the compositor replaces the failed buffers with some placeholder content. There is no way this could be glitch-free. In its own pace the client should discover the DRM device is gone, clean up, and perhaps use something else. How exactly that should happen depends on the rendering API the client is using. This is a tiny step towards making DRM device hot-unplug not crash applications that wish to handle the unplug gracefully. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2021-01-05text-input: Add enum attributes to various argumentsonox
Signed-off-by: onox <denkpadje@gmail.com>
2021-01-05fullscreen-shell: Add enum attributes to various argumentsonox
Signed-off-by: onox <denkpadje@gmail.com>
2021-01-05linux-dmabuf: Add enum attribute to 'flags'onox
Signed-off-by: onox <denkpadje@gmail.com>
2021-01-03pointer-constraints: Add enum attribute to 'lifetime'onox
Signed-off-by: onox <denkpadje@gmail.com>
2021-01-03presentation-time: Add enum attribute to 'flags'onox
Signed-off-by: onox <denkpadje@gmail.com>
2020-11-03text-input: document behavior regarding multiple text-inputsBhushan Shah
Currently protocol does not specify what should happen if multiple text-inputs are created by same client, which is why this is more or less undefined behavior currently in compositor implementations. If client has created more than one text-input objects and surface owned by the client is focused, then compositor must send enter event to all text-input objects, in case of enable request however only one text-input must be enabled per client per seat. Signed-off-by: Bhushan Shah <bshah@kde.org>
2020-10-15Update point-of-contact for KDERoman Gilg
2020-10-14README.md: Add some merge request triaging conventionsJonas Ådahl
Add documented Gitlab procedures to help protocol reviewers and maintainers to get a better picture of the state of merge requests. To make this more reliable, document procedures how to triage and manage merge requests using labels. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2020-06-19Use correct indefinite article before "xdg"Vlad Zahorodnii
Since the abbreviation "XDG" starts with a vowel sound, the correct article is "an." Signed-off-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
2020-04-07xdg-shell: explain how clients need to perform an initial commitSimon Ser
This wasn't explicit reading the mapping requirements. Signed-off-by: Simon Ser <contact@emersion.fr>
2020-04-07xdg-shell: describe how to re-map an unmapped toplevelSimon Ser
Signed-off-by: Simon Ser <contact@emersion.fr>
2020-02-29configure.ac: Bump version to 1.20Jonas Ådahl
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2020-02-29Makefile.am: Also distribute README.md, GOVERNANCE.md and MEMBERS.mdJonas Ådahl
README was distributed by default due to implicit autotools rules, so when we renamed to README.md, it stopped being included. While at it, also add the two other new files. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2020-02-29configure.ac: Bump version to 1.19Jonas Ådahl
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2020-02-29xdg-shell: Add support for explicit popup repositioningJonas Ådahl
This commit adds protocol additions making it possible to request that a popup should be repositioned according to a new xdg_positioner object. Explicit popup moving is done using a new request on xdg_popup: xdg_popup.reposition. What it does is change the parameters used for positioning a popup by providing a new xdg_positioner object. This request is coupled with a new event; xdg_popup.repositioned, sent together with the configure events (xdg_popup.configure and xdg_surface.configure) to notify about the completion of the reposition request. The reposition request also takes a token that is later passed via the repositioned event; this is done so that a client may determine for which reposition request the compositor has sent configure events. Synchronization between surfaces to avoid state application race condition are deliberately left out, and should be handled by an external protocol. To brief the compositor of the future dimension of the parent that the compositor should position the popup against, a xdg_positioner.set_parent_size request is added. Lastly, a request to couple a xdg_positioner object with a parent configure event is added (xdg_positioner.set_parent_configure) in order for a compositor to pair a popup reposition request with a pending configure event, and it's resulting window geometry. This is necessary to, for example, properly constrain a popup given a future parent state. An example of when this may be necessary is an interactive resize where both the toplevel position and the relative popup position changes. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Reviewed-by: Simon Ser <contact@emersion.fr>