aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* build: bump version to 1.25.91 for the RC1 releaseHEAD1.25.91mainSimon Ser27 hours1-1/+1
| | | | Signed-off-by: Simon Ser <contact@emersion.fr>
* WAYLAND_DEBUG: produce comparable timestamp valuesBenjamin Otte33 hours2-8/+10
| | | | | | | | | | | | | The previous way to print timestamps would overflow and produce numbers that didn't match any other system. The format was also somewhat unintuitive because it was milliseconds with the microseconds as fraction, which is a rarely used format. Instead, use a simple HH:MM:SS.xxxxxx format that is hopefully intuitively understandable as the POSIX/ISO8601 time format followed by the microseconds. Signed-off-by: Benjamin Otte <otte@redhat.com>
* protocol: Fix format descriptionsRobert Ancell3 days1-4/+4
| | | | Signed-off-by: Robert Ancell <robert.ancell@canonical.com>
* protocol: Add new wl_shm formatsVlad Zahorodnii3 days1-0/+5
| | | | | | Generated from drm_fourcc.h. Signed-off-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
* doc: explain wl_registry on the protocol pageOndřej Hošek4 days1-14/+45
| | | | | | | | | | The documentation currently seems to imply that the Wayland server informs the client about global objects when the client establishes a connection. This is not (no longer?) the case; instead, the connection is bootstrapped via a well-known instance of wl_display (object ID 1) and its get_registry method. Signed-off-by: Ondřej Hošek <ondrej.hosek@tuwien.ac.at>
* server: add wl_display_remove_socket_fd()Simon Ser7 days2-1/+38
| | | | | | | Undoes wl_display_add_socket_fd(). Useful for protocols such as: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/68 Signed-off-by: Simon Ser <contact@emersion.fr>
* protocol: clarify wl_display.delete_idJulian Orth7 days1-5/+9
| | | | | | | | | | | The previous description talked about what happens when "a client deletes an object that it had created", ignoring the possibility of destructor events. This commit clarifies the intended behavior of delete_id. It does not speak to the possibility of delete_id without a destructor message. Signed-off-by: Julian Orth <ju.orth@gmail.com>
* Add missing wl_shm_pool::error enumRobert Ancell8 days1-5/+13
| | | | | | | | | Existing implementations are using wl_shm::error for errors that apply to both wl_shm and wl_shm_pool. The existing error values are assigned to the new enum so existing code will continue to work but it will now be clearer what errors can be emitted. wl_shm::error::invalid_format is now unused. Signed-off-by: Robert Ancell <robert.ancell@canonical.com>
* protocol: add wl_pointer.warp eventLu YaNing2026-06-081-5/+27
| | | | | | | | | | | | | The original wl_pointer.button event does not contain the position information. In some scenarios, the client cannot obtain the correct position information. For example, when the mouse focus is on a button and the mouse does not move but the window size changes, the client cannot update the position information through the motion event, resulting in incorrect mouse position. Therefore, This event should be sent when the local coordinates of a pointer change as a result of surface being moved/resized/fullscreened. Signed-off-by: Lu YaNing <luyaning@uniontech.com>
* protocol: Fix incorrect event nameRobert Ancell2026-04-291-1/+1
| | | | Signed-off-by: Robert Ancell <robert.ancell@canonical.com>
* protocol: Fix reference to wrong interfaceRobert Ancell2026-04-291-1/+1
| | | | Signed-off-by: Robert Ancell <robert.ancell@canonical.com>
* protocol: Incorrect use of boundedRobert Ancell2026-04-291-1/+1
| | | | Signed-off-by: Robert Ancell <robert.ancell@canonical.com>
* protocol: Missing 'is'Robert Ancell2026-04-291-1/+1
| | | | Signed-off-by: Robert Ancell <robert.ancell@canonical.com>
* protocol: Remove duplicate howeverRobert Ancell2026-04-291-2/+2
| | | | Signed-off-by: Robert Ancell <robert.ancell@canonical.com>
* scanner: Remove now unused arg_countHannes Schulze2026-04-141-2/+0
| | | | Signed-off-by: Hannes Schulze <contact@haschu.me>
* scanner: Fix types emitted for new_id argumentsHannes Schulze2026-04-144-4/+20
| | | | | | | | | Previously, wayland-scanner would only emit one NULL entry in the wl_message.types array for every argument, even though requests with new_id arguments without an interface type additionally take a string and a uint argument. Signed-off-by: Hannes Schulze <contact@haschu.me>
* scanner: drop redundant exit() after fail()YaoBing Xiao2026-04-041-1/+0
| | | | | | | fail() already calls exit(), so the extra exit() is never reached. Remove it to avoid dead code. Signed-off-by: YaoBing Xiao <xiaoyaobing@uniontech.com>
* util: fix use-after-free in for_each_helperYaNing Lu2026-03-301-3/+5
| | | | | | | | | | | | | | | | | | for_each_helper caches the entries->data pointer and array size before iterating. If a compositor calls wl_client_for_each_resource() and the provided callback triggers the creation of a new client object, the underlying wl_array may be reallocated via realloc(). When this happens, the cached start pointer becomes dangling. Subsequent iterations will read from the freed memory block, causing already-destroyed resources to be destroyed a second time (e.g., leading to a double-free crash in wl_list_remove()). Fix this by dynamically re-fetching entries->data and entries->size on every loop iteration, ensuring the iterator always accesses the valid live array. Signed-off-by: YaNing Lu <luyaning@uniontech.com>
* Send wl_registry.global_remove to global's offer listVlad Zahorodnii2026-03-241-21/+19
| | | | | | | | Since the globals track the registries that received global announcements, we can use that instead of going through all present registries and duplicate some filtering logic. Signed-off-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
* Add wl_fixes.ack_global_remove()Vlad Zahorodnii2026-03-246-40/+511
| | | | | | | | | | | | | | | | | | | | | | | | The wl_global_remove() function was introduce to help mitigate clients getting unintentionally disconnected if a global is added and removed in a short burst. The intended usage was: - the compositor calls wl_global_remove() - after a certain period of time, the compositor calls wl_global_destroy() Unfortunately, it did not fully fix the issue due to the way monotonic clock works on Linux. Specifically, it can tick even during sleep. This change adds a slightly better way to handle global removal. With the proposed changes, the clients need to signal to the compositor that they won't bind the global anymore. After all clients have acknowledged a wl_registry.global_remove, the compositor can finally destroy the global. Signed-off-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
* build: re-open main branch for regular developmentSimon Ser2026-03-201-1/+1
| | | | Signed-off-by: Simon Ser <contact@emersion.fr>
* ci: upgrade FreeBSD to v14.4Simon Ser2026-03-101-2/+2
| | | | Signed-off-by: Simon Ser <contact@emersion.fr>
* build: bump version to 1.24.91 for the RC1 release1.24.91Simon Ser2026-03-051-1/+1
| | | | Signed-off-by: Simon Ser <contact@emersion.fr>
* server: improve wl_registry.bind error messagesKirill Primak2026-03-051-5/+4
| | | | | | | - Consistently use PRIu32 for global names (uint32_t) - Use expected/got instead of have/wanted (which were used differently anyway) Signed-off-by: Kirill Primak <vyivel@eclair.cafe>
* server: don't disclose the existence of invisible globalsKirill Primak2026-03-051-6/+2
| | | | | | | | Otherwise, a client iterate over a range of names binding with deliberately incorrect interfaces and receive error messages with expected interfaces regardless of global visibility. Signed-off-by: Kirill Primak <vyivel@eclair.cafe>
* scanner: enforce frozen attributeIsaac Freund2026-03-051-0/+17
| | | | Signed-off-by: Isaac Freund <mail@isaacfreund.com>
* doc: add frozen=true interface attributeIsaac Freund2026-03-053-3/+14
| | | | | | | | | | This is useful for scanners that use knowledge of the object creation hierarchy such as zig-wayland [1]. Currently zig-wayland uses a hardcoded list of frozen interfaces. [1]: https://codeberg.org/ifreund/zig-wayland Signed-off-by: Isaac Freund <mail@isaacfreund.com>
* server: improve version mismatch error messageKirill Primak2026-03-051-4/+4
| | | | | | | "1 < 2" is obviously true but not very useful information by itself. Provide a bit more context. Signed-off-by: Kirill Primak <vyivel@eclair.cafe>
* cursor: fix discards 'const' qualifierRudi Heitbaum2026-03-031-1/+1
| | | | | | | | | | Fixes: ../cursor/xcursor.c: In function 'xcursor_next_path': ../cursor/xcursor.c:610:23: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] 610 | char *colon = strchr(path, ':'); | ^~~~~~ Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>
* Fix typosDiego Viola2026-03-034-4/+4
| | | | Signed-off-by: Diego Viola <diego.viola@gmail.com>
* util: assert alloc is consistent with data in wl_array_add()Simon Ser2026-03-031-0/+3
| | | | | | | | | | | | | | | | | | | | | | | struct wl_array may be constructed by users manually from a foreign data pointer: uint32_t states[] = {1, 2, 3}; struct wl_array arr = { .data = states, .size = sizeof(states) / sizeof(states[0]), }; This is useful to avoid the need to allocate when sending Wayland messages. Users need to be careful not to use wl_array_add() on such arrays: the function will misbehave by leaving garbage at the start of the new buffer when reallocating. Add an assert to guard against wl_array_add() calls in this situation, to have a clear crash instead of undefined behavior. Signed-off-by: Simon Ser <contact@emersion.fr>
* protocol: elaborate on drm_fourcc.h and wl_shm.format codesManuel Stoeckl2026-02-281-1/+6
| | | | | | | | | | | Wayland clients should not assume the format list will not grow, or assume the format descriptions in the Wayland protocol are complete. (The latter fact is clear for descriptionless enum entries like XRGB8888_A8; but, for example, the full XRGB16161616F format description explicitly requires IEEE 754 binary16 floats instead of bfloat16 or ARM's alternative half precision variant.) Signed-off-by: Manuel Stoeckl <code@mstoeckl.com>
* tests: Add test for using a proxy with a destroyed queue as a factoryAlexandros Frantzis2026-03-011-0/+55
| | | | Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
* client: fix crash when creating proxies with no queueLoïc Yhuel2026-03-011-3/+12
| | | | | | | | | | Before, it worked if the client did set a queue on the proxy before any event was received. Now we have the "warning: queue xxx destroyed while proxies still attached", then a crash if one of the proxies is used to create a proxy. Fixes: 674145dc3f ("client: Track the proxies attached to a queue") Fixes: 0ba650202e ("client: Warn when a queue is destroyed with attached proxies") Signed-off-by: Loïc Yhuel <loic.yhuel@softathome.com>
* protocol: add wl_data_device_manager destructorsJulian Orth2026-02-281-4/+13
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* protocol: add wl_compositor destructorJulian Orth2026-02-281-1/+9
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* protocol: fix wl_region versionJulian Orth2026-02-281-1/+1
| | | | | | | wl_region is not a frozen interface and therefore should have the version of the parent object, wl_compositor. Signed-off-by: Julian Orth <ju.orth@gmail.com>
* protocol: introduce wl_surface.get_releaseSimon Ser2026-02-281-5/+34
| | | | | | | | | | | | | | This new request allows clients to get per-surface-commit buffer release events. It supersedes wl_buffer.release. This functionality is also available via the linux-explicit-synchronization protocol, but requires the compositor to also support Linux synchronization fences. Adding this new request to the core protocol allows any compositor to implement the functionality. Signed-off-by: Simon Ser <contact@emersion.fr> Closes: https://gitlab.freedesktop.org/wayland/wayland/-/issues/203 References: https://gitlab.freedesktop.org/wayland/wayland/-/issues/46
* doc: fix cname-(suffix-)requirementsIsaac Freund2026-02-241-8/+20
| | | | | | | These used to be macro-like xml things that expanded to the text this commit replaces them with. Signed-off-by: Isaac Freund <mail@isaacfreund.com>
* doc: restore missing image files in docbookJulian Orth2026-02-123-0/+31
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: turn captions into third-level headers in bookJulian Orth2026-02-121-81/+81
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: reword docbook foreword to capture new scopeJulian Orth2026-02-121-2/+1
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: remove most content from docbookJulian Orth2026-02-1249-6284/+0
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: link to website in doxygenJulian Orth2026-02-121-2/+2
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: add meson.build for bookJulian Orth2026-02-123-2/+62
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: rewrite the book forewordJulian Orth2026-02-121-4/+56
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: copy images to mdbookJulian Orth2026-02-1240-0/+3254
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: add copyright notice to mdbookJulian Orth2026-02-051-0/+23
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: remove docbook -> mdbook conversion toolJulian Orth2026-02-055-1133/+0
| | | | Signed-off-by: Julian Orth <ju.orth@gmail.com>
* doc: run docbook -> mdbook conversion toolJulian Orth2026-02-0512-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>