aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* doc: restore missing image files in docbookHEADmainJulian Orth4 days3-0/+31
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: turn captions into third-level headers in bookJulian Orth4 days1-81/+81
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: reword docbook foreword to capture new scopeJulian Orth4 days1-2/+1
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: remove most content from docbookJulian Orth4 days49-6284/+0
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: link to website in doxygenJulian Orth4 days1-2/+2
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: add meson.build for bookJulian Orth4 days3-2/+62
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: rewrite the book forewordJulian Orth4 days1-4/+56
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: copy images to mdbookJulian Orth4 days40-0/+3254
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: add copyright notice to mdbookJulian Orth11 days1-0/+23
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: remove docbook -> mdbook conversion toolJulian Orth11 days5-1133/+0
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: run docbook -> mdbook conversion toolJulian Orth11 days12-0/+1695
| | | | | | | To reproduce this commit, delete the contents of the src directory and run the tool. Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: add docbook -> mdbook conversion toolJulian Orth11 days5-0/+1133
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: make DocBook validation optionalPekka Paalanen12 days3-2/+11
| | | | | | | | | | | | It turns out that changes in the building environment, the version of Doxygen being a prime suspect, can break the validation. Invalid DocBook XML does lead to likely broken documentation, but perhaps it is better than failing to build or having to disable documentation completely. CI turns DocBook validation on, because the CI environment is stable and known, and we do want to catch mistakes in hand-written DocBook files. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* fix .git-blame-ignore-revs revisionJulian Orth14 days1-1/+1
| | | | | | The commit hash was changed during merge. Signed-off-by: Julian Orth <ju.orth@gmail.com>
* add .git-blame-ignore-revs fileJulian Orth14 days2-0/+5
| | | | | | | | This can be used with git config blame.ignoreRevsFile .git-blame-ignore-revs Signed-off-by: Julian Orth <ju.orth@gmail.com>
* protocol: reindent wayland.xmlJulian Orth14 days1-1387/+1387
| | | | | | | | | | The file used a mixture of tabs and spaces. According to .editorconfig, all xml files should be indented with spaces, so this seems like the correct choice if we wanted to reindent the file. I used vim's :retab command to expand all tabs to 8 spaces. Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: update GPU buffer exchange sectionJulian Orth2026-01-292-50/+99
| | | | | | Finally, a buffer exchange mechanism for the 21st century. Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc/css: adjust code and userinput stylesPekka Paalanen2026-01-221-1/+9
| | | | | | | | | | | | | | | | | | | I don't know why <code> was defined to be bold, it looks bad to me. The same with <synopsis> which would inherit bold from <dt> when used inside a variablelist term. So, to make the code snippets look better, force them to use normal weight. <userinput> should differentiate from normal code somehow, and italic seems fine for it. <literal> already has bold, and I think it's fine, so no need to touch it. These changes are mainly for the new XML dialect documentation chapter. I didn't notice anything changing for the older or generated parts of the docs. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* doc: document the Wayland XML dialectPekka Paalanen2026-01-223-0/+930
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Document the XML tags used to describe Wayland protocols. Previously we only had the informal specification in the Protocol chapter, and the DTD. Better late than never. I have looked into wayland-scanner and libwayland for various limitations documented here possibly for the first time. I have also forbid things that are not in use or are known broken, including unspecified interface for a new_id in an event, or an object argument with an unspecified interface. I did investigate writing a RELAX NG compact schema for Wayland and documenting everything there, then generating DocBook XML from it. However, it seems generating documentation from schema is actually really complicated. I found these tools: - xs3p stylesheet: website looks dead, though Sourceforge still has it. Produces XHTML, not DocBook. Has an unfamiliar license. - xsddoc: the authors wrote that XSLT is not really sufficient, so they abandoned this approach and went for Java to create xnsdoc. - xnsdoc: seems to be proprietary licensed, although one could ask for a free license for a FLOSS project. All in all, it seems to be much easier to just write the documentation in DocBook, copying the strcture from the DTD manually, than to generate it. It's not doing to change often, anyway. It also allowed me to leverage DocBook syntax in full. Signed-off-by: Pekka Paalanen <pq@iki.fi> Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* doc: fix a root element validation errorPekka Paalanen2026-01-221-1/+1
| | | | | | | | | | | Once I got XML validation working in VSCode, it found an error: Document root element "preface", must match DOCTYPE root "chapter". I guess DOCTYPE declares which element is used as root in the file. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* editorconfig: follow wayland-protocols XML stylePekka Paalanen2026-01-221-6/+1
| | | | | | | | | It's unlikely that protocols/wayland.xml sees much change anymore, but files in doc/ might. To make writing documentation easier, stick to an unsurprising indentation style that is already in use in wayland-protocols and for the XSL files. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* doc: Add a chapter on content updatesSebastian Wick2026-01-2238-0/+3645
| | | | | | | | | The behavior of content updates, specifically in combination with sync subsrufaces and constrains can become quite complicated. This introduces a chapter in the wayland book which explains the behavior of the core specification in this regard, and shows examples. Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
* protocol: Define Content Update behaviorSebastian Wick2026-01-221-69/+64
| | | | | | | | | | | | | | | | | | | The protocol currently is in a state where we define that commits create content updates and they are queued up until they are applied, and the old view that commit applies the state or caches it in the parent state. This commit moves the protocol completely to the new model which retains the old behavior when no constraints are being used but allows for constraints to be used to hold back a group of synchronized content updates. To convince yourself that this indeed retains the original behavior I suggest to play around with a few examples and look at the resulting graphs, as is done here: https://gitlab.freedesktop.org/wayland/wayland/-/issues/457#note_2403135 Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
* doc: drop non-existing refs from CSSPekka Paalanen2026-01-211-31/+4
| | | | | | | | | | | | | | | It seems these images were never in the repository. They might have existed when the documentation was still built with Publican, but since the migration to xmlto I think these have all been just 404. Removing div.warning:before, div.note:before and div.important:before would actually delete some unexpected empty space if the Docbook <warning>, <note> or <important> elements were used. They are not used now, but may be in the future. .draft is never used, so I replaced the image with whatever. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* doc: remove unused CSS filesPekka Paalanen2026-01-214-147/+0
| | | | | | I could not find them referenced anywhere. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* doc: remove Revision_History.xmlPekka Paalanen2026-01-202-8/+0
| | | | | | This was never used. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* doc: remove Preface.xmlPekka Paalanen2026-01-203-22/+0
| | | | | | This was never filled out, so might as well just delete it. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* ci: install to prefix after building in DebianSimon Ser2026-01-131-0/+1
| | | | | | | | | | Artifacts include the prefix directory, but it was empty: we weren't running the install step. Run it to align Debian with FreeBSD. This allows reviewers to check the HTML documentation output. Signed-off-by: Simon Ser <contact@emersion.fr>
* ci: bump Debian to TrixieSimon Ser2026-01-081-2/+2
| | | | Signed-off-by: Simon Ser <contact@emersion.fr>
* tests: cast pid_t and struct timeval fields before printingSimon Ser2026-01-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The exact type behind these might depend on the architecture. For instance, on ARMv7, struct timeval fields are long long int instead of long int: FAILED: tests/libtest-runner.a.p/test-compositor.c.o cc -Itests/libtest-runner.a.p -Itests -I../tests -I. -I.. -Isrc -I../src -fdiagnostics-color=always -fsanitize=address,undefined -fno-omit-frame-pointer -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -std=c99 -O0 -g -D_POSIX_C_SOURCE=200809L -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden -fPIC -pthread -MD -MQ tests/libtest-runner.a.p/test-compositor.c.o -MF tests/libtest-runner.a.p/test-compositor.c.o.d -o tests/libtest-runner.a.p/test-compositor.c.o -c ../tests/test-compositor.c ../tests/test-compositor.c: In function 'get_socket_name': ../tests/test-compositor.c:95:60: error: format '%ld' expects argument of type 'long int', but argument 5 has type '__time64_t' {aka 'long long int'} [-Werror=format=] 95 | snprintf(retval, sizeof retval, "wayland-test-%d-%ld%ld", | ~~^ | | | long int | %lld 96 | getpid(), tv.tv_sec, tv.tv_usec); | ~~~~~~~~~ | | | __time64_t {aka long long int} ../tests/test-compositor.c:95:63: error: format '%ld' expects argument of type 'long int', but argument 6 has type '__suseconds64_t' {aka 'long long int'} [-Werror=format=] 95 | snprintf(retval, sizeof retval, "wayland-test-%d-%ld%ld", | ~~^ | | | long int | %lld 96 | getpid(), tv.tv_sec, tv.tv_usec); | ~~~~~~~~~~ | | | __suseconds64_t {aka long long int} Signed-off-by: Simon Ser <contact@emersion.fr>
* server: document protocol logger callback functionSebastian Wick2026-01-031-0/+1
| | | | | | | | | | This fixes a validation error in the documentation which are not fatal. The idea is the same as in 12ec67a ("server: document listener fields and a vfunc"), which seems to have missed the reference to the wl_protocol_logger_func_t from the note in wl_log_func_t. Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
* doc: validate doc XML againPekka Paalanen2025-12-291-1/+0
| | | | | | | Now that all XML validation errors have been fixed, it is time to turn the validation back on to make sure the errors stay out. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* doc/xsl: rearrange member doc generationPekka Paalanen2025-12-291-13/+18
| | | | | | | | | | | | | | | | | | | | Creating an empty <variablelist> is illegal. This can already be seen in the XSL anywhere it is generated. The used XSL programming pattern requires the look-up conditions to be repeated between the <xsl:if> and <xsl:apply-templates> tags. Usually this is not a problem, but the conditions for memberdef is too much to copy around. The conditions between the if and the apply-templates have already diverged, causing validation errors (that are currently suppressed). Rearrange the XSL so that the applicable memberdef are stored in a variable, so that both the if and the apply-templates operate on the exact same set of matches. This avoids emitting empty <variablelist>. As a result, the members of structures wl_argument, wl_interface, wl_message, and wl_listener newly appear in the documentation. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* server: document listener fields and a vfuncPekka Paalanen2025-12-291-0/+4
| | | | | | | | Adding these simple documentation comments allows us to have meaningful link targets in the generated API documentation. That will help getting rid of broken links which cause XML validation to fail. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* build/doc: explain two XML conversionsPekka Paalanen2025-12-291-4/+8
| | | | | | | | | | Now that I figured out what these do, I might as well add comments about it for others. The target names are changed to be more descriptive of what the target does. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* doc/xsl: include static inline functionsPekka Paalanen2025-12-291-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When generating documentation, xmllint complained: element link: validity error : IDREF attribute linkend references an unknown ID "Server-structwl__signal_1afe73f44f7f1b517c9c0ba90829c93309" element link: validity error : IDREF attribute linkend references an unknown ID "Server-structwl__signal_1afe73f44f7f1b517c9c0ba90829c93309" element link: validity error : IDREF attribute linkend references an unknown ID "Server-structwl__signal_1aa8bcd3b8e250cfe35ed064d5af589096" These were referring to wl_signal_add() and wl_signal_emit() I think, which are static inlines in a public header. The XSLT ignored static functions, probably assuming that they cannot be public API. Internal (static) functions are present in the Doxygen XML, so they do need to be excluded. Now we include static functions if their body is in a header. We de not scan private headers, so they must be public API. Comparing the final generated HTML documentation, these functions are added to both Client and Server APIs: wl_fixed_to_double wl_fixed_from_double wl_fixed_to_int wl_fixed_from_int These functions are added to the Server API: wl_signal_init wl_signal_add wl_signal_get wl_signal_emit Signed-off-by: Pekka Paalanen <pq@iki.fi>
* doc: fix Xwayland image validityPekka Paalanen2025-12-291-7/+5
| | | | | | | | | | | | | | | | xmllint complained: element imageobjectco: validity error : Element imageobjectco content does not follow the DTD, expecting (areaspec , imageobject , calloutlist*), got (imageobject ) This image has no callouts (clickable items explained in the text), so it must not use the tags that assume callouts. I probably cargo-culted this from the X11 and Wayland diagrams which have callouts when writing Xwayland.xml. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* server: fix wl_signal_add Doxygen warningPekka Paalanen2025-12-291-1/+1
| | | | | | | | | | | | | | $ meson compile -C build -v xml-Server-doc INFO: autodetecting backend as ninja INFO: calculating backend command to run: /usr/bin/ninja -C /home/pq/git/wayland/build -v doc/doxygen/xml/Server/combine.xslt doc/doxygen/xml/Server/index.xml ninja: Entering directory `/home/pq/git/wayland/build' [1/1] /home/pq/git/wayland/doc/doxygen/gen-doxygen.py --builddir=doc/doxygen/xml/Server --section=Server --output-format=xml doc/doxygen/wayland.doxygen ../doc/doxygen/../../src/wayland-util.h ../doc/doxygen/../../src/event-loop.c ../doc/doxygen/../../src/wayland-server.c ../doc/doxygen/../../src/wayland-server.h ../doc/doxygen/../../src/wayland-server-core.h ../doc/doxygen/../../src/wayland-shm.c /home/pq/git/wayland/src/wayland-server-core.h:394: warning: explicit link request to 'wl_signal_add' could not be resolved I don't know why, but the "explicit link" mark-up fails, while the automatic link mark-up works. This warning disappears. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* doc: reinstate image mapsPekka Paalanen2025-12-292-5/+14
| | | | | | | | This fixes the errors during the compilation of Architecture.xml that the .map files cannot be found. As a result, the architure diagrams become clickable in the HTML document once again. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* doc/xsl: fix malformed <variablelist>Pekka Paalanen2025-12-291-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | For all requests and events that do not have any arguments, enabling XML validation would lead to many errors like this: /home/pq/git/wayland/build/doc/publican/Wayland.xml:5287: element variablelist: validity error : Element variablelist content does not follow the DTD, expecting (blockinfo? , (title , titleabbrev?)? , (caution | important | note | tip | warning | literallayout | programlisting | programlistingco | screen | screenco | screenshot | synopsis | cmdsynopsis | funcsynopsis | classsynopsis | fieldsynopsis | constructorsynopsis | destructorsynopsis | methodsynopsis | formalpara | para | simpara | address | blockquote | graphic | graphicco | mediaobject | mediaobjectco | informalequation | informalexample | informalfigure | informaltable | anchor | bridgehead | remark | highlights | abstract | authorblurb | epigraph | indexterm | beginpage)* , varlistentry+), got The reason is that a <variablelist> without any <varlistentry> inside it is illegal. If there are no <arg> at all, do not emit the list paragraph. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* doc: remove HTML_TIMESTAMPPekka Paalanen2025-12-291-1/+0
| | | | | | | | | | | | to fix the Doxygen message: warning: Tag 'HTML_TIMESTAMP' at line 8 of file '-' has become obsolete. To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u" Observed with Doxygen 1.9.8. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* editorconfig: indent .xsl with 2 spacesPekka Paalanen2025-12-291-0/+5
| | | | | | | | | | | | | The XSL files are mostly indented with 2 spaces. Using the default editorconfig rules in VSCode constantly tries to mix in tabs. Add the 2-space rule for .xsl files to fix this. The .xsl files, like .xml files, use a tab character in place of 8 spaces. This complicates things, and the new rule will prefer just spaces. To keep the existing sometimes-tab-indented code looking right, the tab width must be explicitly set to 8. Signed-off-by: Pekka Paalanen <pq@iki.fi>
* tests/event-loop-test: Remove event loop timer testJoshua Watt2025-12-121-43/+0
| | | | | | | | | The event loop timer test has very precise sequencing and timing constraints, which make it difficult to pass reliably on loaded systems. Since this test isn't providing much value, remove it to prevent the erroneous errors. Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
* doc: Refactor the build system for complete build dir docsSebastian Wick2025-11-2738-164/+138
| | | | | | | | By structuring things differently, it becomes possible to have a complete build of the docs in the build dir, without having to install anything. Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
* build: Bump to meson version 0.64.0Sebastian Wick2025-11-273-11/+8
| | | | | | | | | | | | | | | | This version will be required in the next commit. Bumps the CI image to get the required version from the debian package instead of from pip. Removes the bindir builtin directory from pkgconfig.generate() which is deprecated since 0.62.0. It will be automatically included when referenced. Use `meson setup` everywhere instead of relying on deprecated automatic detection of the setup command. Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
* protocol: add new formatsJulian Orth2025-11-261-0/+20
| | | | | | Generated from libdrm 2.4.129. Signed-off-by: Julian Orth <ju.orth@gmail.com>
* client: add wl_display_dispatch_pending_singleIsaac Freund2025-09-163-0/+151
| | | | | | | | | | | | | | | | | | | | | | | | | As well as wl_display_dispatch_queue_pending_single. The motivation is writing libwayland bindings for a dynamic language with exceptions/non-local returns. Since it is invalid for a wl_dispatcher_func_t callback provided to libwayland to not return, there is no way to prevent dispatching of further events in the case of an exception in the dynamic language event handler. Furthermore, since creating/destroying Wayland objects in an event handler affects the dispatching of subsequent events by libwayland, it is not possible to collect Wayland events in a queue outside libwayland and dispatch them one-by-one after wl_display_dispatch_pending() returns. Adding libwayland API to dispatch at most one pending event solves this problem cleanly. The bindings can have libwayland dispatch a single event, wait for wl_display_dispatch_pending_single() to return, run the dynamic language event handler (which may longjmp away), and continue the loop for as long as there are more events to dispatch. References: https://codeberg.org/ifreund/janet-wayland Signed-off-by: Isaac Freund <mail@isaacfreund.com>
* connection: Add a thread ID to WAYLAND_DEBUG output.Kyle Brenneman2025-09-152-0/+18
| | | | | | | | | | | | | | | | If WAYLAND_DEBUG contains the token "thread_id", and gettid() is available, then include the current thread ID in the output from wl_closure_print. If multiple threads are sending requests, then those requests can get interleaved. That's usually fine, but for wl_surface requests and commits, that can cause problems ranging from incorrect behavior to protocol errors. Being able to see which requests are sent by different threads would make such problems much easier to diagnose. Signed-off-by: Kyle Brenneman <kbrenneman@nvidia.com>
* connection: Add a function to parse WAYLAND_DEBUG tokensKyle Brenneman2025-09-154-2/+47
| | | | | | | | | | | | | | | Add a new function, wl_check_env_token, to scan for a token in a comma-separated string. Change wl_display_create in wayland-server.c and wl_display_connect_to_fd in wayland-client.c to use that instead of a simple substring search. This means that WAYLAND_DEBUG will accept a value like "client,server" but not "clientserver". But, this will make it easier to add other tokens without worrying about overlap between them. Signed-off-by: Kyle Brenneman <kbrenneman@nvidia.com>
* cursor: Free theme when size check fails to avoid memory leakYaoBing Xiao2025-08-031-3/+3
| | | | Signed-off-by: YaoBing Xiao <xiaoyaobing@uniontech.com>