This global allows the IPC library to upgrade the version of the wl_display global. To ensure maximum flexibility, there are strict requirements on the connection state at the time of the upgrade. In particular, after the compositor has destroyed the wl_display_upgrade object, the wl_display is the only object in the connection. Since there are many consumers of wl_display and wl_registry, and the version of these objects is fixed after the upgrade, care must be taken not to break any of these consumers. Since no consumer checks the version of these objects and there is no way to get a wl_registry with a lower version, incrementing the minor version cannot change the semantics of existing messages and no new events can be added to wl_registry. As an exception, new events can be added to wl_display since those events are handled internally by the IPC library which is also in charge of upgrading the version. An additional change that could be made in version 2 of wl_display is adding a wl_display.delete_server_id request, implementing symmetric delete_id. A global that wants to make full use of destructor events could then specify that the global must only be exposed on a wl_registry whose version (and therefore the version of the wl_display) is at least 2. Signed-off-by: Julian Orth <ju.orth@gmail.com> |
||
|---|---|---|
| .gitlab/issue_templates | ||
| cursor | ||
| doc | ||
| egl | ||
| protocol | ||
| src | ||
| tests | ||
| .editorconfig | ||
| .git-blame-ignore-revs | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .mailmap | ||
| .triage-policies.yml | ||
| CONTRIBUTING.md | ||
| COPYING | ||
| git-blame-ignore-revs | ||
| meson.build | ||
| meson_options.txt | ||
| README.md | ||
| release.sh | ||
| releasing.txt | ||
| wayland-scanner.m4 | ||
| wayland-scanner.mk | ||
Wayland
Wayland is a project to define a protocol for a compositor to talk to its clients as well as a library implementation of the protocol. The compositor can be a standalone display server running on Linux kernel modesetting and evdev input devices, an X application, or a wayland client itself. The clients can be traditional applications, X servers (rootless or fullscreen) or other display servers.
The wayland protocol is essentially only about input handling and buffer management. The compositor receives input events and forwards them to the relevant client. The clients creates buffers and renders into them and notifies the compositor when it needs to redraw. The protocol also handles drag and drop, selections, window management and other interactions that must go through the compositor. However, the protocol does not handle rendering, which is one of the features that makes wayland so simple. All clients are expected to handle rendering themselves, typically through cairo or OpenGL.
Building the wayland libraries is fairly simple, aside from libffi, they don't have many dependencies:
$ git clone https://gitlab.freedesktop.org/wayland/wayland
$ cd wayland
$ meson build/ --prefix=PREFIX
$ ninja -C build/ install
where PREFIX is where you want to install the libraries.
See https://wayland.freedesktop.org for documentation.