mirror of
https://github.com/libretro/RetroArch.git
synced 2024-11-25 00:49:47 +00:00
57ec26f269
These are included from wayland-protocols-1.17.
142 lines
6.2 KiB
Plaintext
142 lines
6.2 KiB
Plaintext
Wayland protocols
|
|
-----------------
|
|
|
|
wayland-protocols contains Wayland protocols that add functionality not
|
|
available in the Wayland core protocol. Such protocols either add
|
|
completely new functionality, or extend the functionality of some other
|
|
protocol either in Wayland core, or some other protocol in
|
|
wayland-protocols.
|
|
|
|
A protocol in wayland-protocols consists of a directory containing a set
|
|
of XML files containing the protocol specification, and a README file
|
|
containing detailed state and a list of maintainers.
|
|
|
|
Protocol directory tree structure
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Protocols may be 'stable', 'unstable' or 'deprecated', and the interface
|
|
and protocol names as well as place in the directory tree will reflect
|
|
this.
|
|
|
|
A stable protocol is a protocol which has been declared stable by
|
|
the maintainers. Changes to such protocols will always be backward
|
|
compatible.
|
|
|
|
An unstable protocol is a protocol currently under development and this
|
|
will be reflected in the protocol and interface names. See <<Unstable
|
|
naming convention>>.
|
|
|
|
A deprecated protocol is a protocol that has either been replaced by some
|
|
other protocol, or declared undesirable for some other reason. No more
|
|
changes will be made to a deprecated protocol.
|
|
|
|
Depending on which of the above states the protocol is in, the protocol
|
|
is placed within the toplevel directory containing the protocols with the
|
|
same state. Stable protocols are placed in the +stable/+ directory,
|
|
unstable protocols are placed in the +unstable/+ directory, and
|
|
deprecated protocols are placed in the +deprecated/+ directory.
|
|
|
|
Protocol development procedure
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
To propose a new protocol, create a patch adding the relevant files and
|
|
Makefile.am entry to the wayland-protocols git repository with the
|
|
explanation and motivation in the commit message. Then send the patch to
|
|
the wayland-devel@lists.freedesktop.org mailing list using
|
|
'git send-email' with the subject prefix 'RFC wayland-protocols' or
|
|
'PATCH wayland-protocols' depending on what state the protocol is in.
|
|
|
|
To propose changes to existing protocols, create a patch with the
|
|
changes and send it to the list mentioned above while also CC:ing the
|
|
maintainers mentioned in the README file. Use the same rule for adding a
|
|
subject prefix as above and method for sending the patch.
|
|
|
|
If the changes are backward incompatible changes to an unstable protocol,
|
|
see <<Unstable protocol changes>>.
|
|
|
|
Interface naming convention
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
All protocols should avoid using generic namespaces or no namespaces in
|
|
the protocol interface names in order to minimize risk that the generated
|
|
C API collides with other C API. Interface names that may collide with
|
|
interface names from other protocols should also be avoided.
|
|
|
|
For generic protocols not limited to certain configurations (such as
|
|
specific desktop environment or operating system) the +wp_+ prefix
|
|
should be used on all interfaces in the protocol.
|
|
|
|
For operating system specific protocols, the interfaces should be
|
|
prefixed with both +wp_+ and the operating system, for example
|
|
+wp_linux_+, or +wp_freebsd_+, etc.
|
|
|
|
Unstable naming convention
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Unstable protocols have a special naming convention in order to make it
|
|
possible to make discoverable backward incompatible changes.
|
|
|
|
An unstable protocol has at least two versions: the major version, which
|
|
represents backward incompatible changes, and the minor version, which
|
|
represents backward compatible changes to the interfaces in the protocol.
|
|
|
|
The major version is part of the XML file name, the protocol name in the
|
|
XML, and interface names in the protocol.
|
|
|
|
Minor versions are the version attributes of the interfaces in the XML.
|
|
There may be more than one minor version per protocol, if there are more
|
|
than one global.
|
|
|
|
The XML file and protocol name also has the word 'unstable' in them, and
|
|
all of the interfaces in the protocol are prefixed with +z+ and
|
|
suffixed with the major version number.
|
|
|
|
For example, an unstable protocol called foo-bar with major version 2
|
|
containing the two interfaces wp_foo and wp_bar both minor version 1 will
|
|
be placed in the directory +unstable/foo-bar/+ consisting of one file
|
|
called +README+ and one called +foo-bar-unstable-v2.xml+. The XML file
|
|
will consist of two interfaces called +zwp_foo_v2+ and +zwp_bar_v2+ with
|
|
the +version+ attribute set to +1+.
|
|
|
|
Unstable protocol changes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
During the development of a new protocol it is possible that backward
|
|
incompatible changes are needed. Such a change needs to be represented
|
|
in the major and minor versions of the protocol.
|
|
|
|
Assuming a backward incompatible change is needed, the procedure for how to
|
|
do so is the following:
|
|
|
|
. Make a copy of the XML file with the major version increased by +1+.
|
|
. Increase the major version number in the protocol XML by +1+.
|
|
. Increase the major version number in all of the interfaces in the
|
|
XML by +1+.
|
|
. Reset the minor version number (interface version attribute) of all
|
|
the interfaces to +1+.
|
|
|
|
Backward compatible changes within a major unstable version can be done
|
|
in the regular way as done in core Wayland or in stable protocols.
|
|
|
|
Declaring a protocol stable
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Once it is decided that a protocol should be declared stable, meaning no
|
|
more backward incompatible changes will ever be allowed, one last
|
|
breakage is needed.
|
|
|
|
The procedure of doing this is the following:
|
|
|
|
. Create a new directory in the +stable/+ toplevel directory with the
|
|
same name as the protocol directory in the +unstable/+ directory.
|
|
. Copy the final version of the XML that is the version that was
|
|
decided to be declared stable into the new directory. The target name
|
|
should be the same name as the protocol directory but with the +.xml+
|
|
suffix.
|
|
. Rename the name of the protocol in the XML by removing the
|
|
'unstable' part and the major version number.
|
|
. Remove the +z+ prefix and the major version number suffix from all
|
|
of the interfaces in the protocol.
|
|
. Reset all of the interface version attributes to +1+.
|
|
. Update the +README+ file in the unstable directory and create a new
|
|
+README+ file in the new directory.
|
|
|
|
Releases
|
|
~~~~~~~~
|
|
Each release of wayland-protocols finalizes the version of the protocols
|
|
to their state they had at that time.
|