2020-01-16 18:44:51 +03:00
|
|
|
.. _libweston-head:
|
2019-06-14 12:41:02 +03:00
|
|
|
|
2020-01-16 18:44:51 +03:00
|
|
|
Heads
|
|
|
|
=====
|
|
|
|
|
|
|
|
A head is represented by a :type:`weston_head` object.
|
|
|
|
|
|
|
|
A head refers to a monitor when driving hardware, but it can also be a window
|
|
|
|
in another window system, or a virtual concept. Essentially a head is a place
|
|
|
|
where you could present an image. The image will be produced by a weston_output
|
|
|
|
where the head is attached to.
|
|
|
|
|
|
|
|
In display hardware, a head represents a display connector in a computer
|
|
|
|
system, not the actual monitor connected to the connector. A head carries
|
|
|
|
monitor information, if present, like make and model, EDID and possible video
|
|
|
|
modes. Other properties are DPMS mode and backlight control.
|
|
|
|
|
|
|
|
In terms of Wayland protocol, a head corresponds to a wl_output. If one
|
|
|
|
:type:`weston_output` has several heads, meaning that the heads are cloned,
|
|
|
|
each head is represented as a separate wl_output global in wl_registry. Only
|
|
|
|
the heads of an enabled output are exposed as wl_outputs.
|
|
|
|
|
|
|
|
Heads can appear and disappear dynamically, mainly because of DisplayPort
|
|
|
|
Multi-Stream Transport where connecting a new monitor may expose new
|
|
|
|
connectors. Window and virtual outputs are often dynamic as well.
|
|
|
|
|
|
|
|
Heads are always owned by libweston which dictates their lifetimes. Some
|
|
|
|
backends may offer specific API to create and destroy heads, but hardware
|
|
|
|
backends like DRM-backend create and destroy heads on their own.
|
2019-06-14 12:41:02 +03:00
|
|
|
|
|
|
|
.. note::
|
|
|
|
|
|
|
|
:func:`weston_head_init` and :func:`weston_head_release` belong to the
|
|
|
|
private/internal backend API and should be moved accordingly once that
|
2020-01-16 18:44:51 +03:00
|
|
|
section has been created. There are many other functions as well that are
|
|
|
|
intended only for backends.
|
2019-06-14 12:41:02 +03:00
|
|
|
|
|
|
|
A :type:`weston_head` must be attached/detached from a :type:`weston_output`.
|
|
|
|
To that purpose you can use :func:`weston_output_attach_head`, respectively
|
|
|
|
:func:`weston_head_detach`.
|
2019-06-14 13:25:40 +03:00
|
|
|
|
|
|
|
|
|
|
|
.. doxygengroup:: head
|
|
|
|
:content-only:
|