doc: add frozen=true interface attribute

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>
This commit is contained in:
Isaac Freund 2026-02-24 12:43:43 +01:00 committed by Simon Ser
parent 4d13366fcc
commit a58bcd7481
3 changed files with 14 additions and 3 deletions

View file

@ -140,7 +140,8 @@ usage of the interface.
the interfaces part of the same interface ancestry tree. The exception to
this rule are interfaces which are forever stuck to version 1, which is
usually caused by having multiple parent interfaces with independent
ancestor global interfaces.
ancestor global interfaces. In this case, the `frozen="true"` attribute
described below should be used.
A protocol object may have any defined version of the interface. The version
of the object is determined at runtime either by inheritance from another
@ -152,6 +153,15 @@ usage of the interface.
thoroughly updated as required. In such cases the object shall function as
with the highest defined interface version.
**Optional attributes**
`frozen`="`true`"
: The interface is frozen and forever stuck at version 1.
This attribute should be applied to interfaces that have multiple parent
interfaces with independent ancestor global interfaces, for example
`wl_buffer` and `wl_callback`.
### request
Parent elements: interface

View file

@ -4,6 +4,7 @@
<!ELEMENT interface (description?,(request|event|enum)+)>
<!ATTLIST interface name CDATA #REQUIRED>
<!ATTLIST interface version CDATA #REQUIRED>
<!ATTLIST interface frozen CDATA #IMPLIED>
<!ELEMENT request (description?,arg*)>
<!ATTLIST request name CDATA #REQUIRED>
<!ATTLIST request type CDATA #IMPLIED>

View file

@ -173,7 +173,7 @@
</event>
</interface>
<interface name="wl_callback" version="1">
<interface name="wl_callback" version="1" frozen="true">
<description summary="callback object">
Clients can handle the 'done' event to get notified when
the related request is done.
@ -503,7 +503,7 @@
</request>
</interface>
<interface name="wl_buffer" version="1">
<interface name="wl_buffer" version="1" frozen="true">
<description summary="content for a wl_surface">
A buffer provides the content for a wl_surface. Buffers are
created through factory interfaces such as wl_shm, wp_linux_buffer_params