Expand description
Several scenes, one frame.
Port of src/scene/scene_set.{hpp,cpp}.
A LayerScene drives one CRTC. A SceneSet holds several, mirrors
layers across them, and plans how many atomic commits a frame across them
costs — which is the whole question, because one commit across every output
is atomic and several are not, while one commit means one output’s
refusal takes the rest down with it. See NarrowPolicy. The set plans;
making the commits is the caller’s.
§Mirrored layers
add_layer takes one source and a target per
scene, so the same content reaches several outputs — a presentation
mirrored to a projector, a status bar on every screen. Each target carries
its own geometry, since the outputs rarely share a resolution.
Structs§
- Layer
Spec - One layer across one or more scenes.
- Scene
Set - Several scenes, with mirrored layers and a plan for how a frame across them is committed.
- SetLayer
Handle - A handle to a layer that may span several scenes.
- Slot
State - What one slot in the set looks like this frame.
- Target
- Where one mirrored layer lands on one scene.
Enums§
- Narrow
Policy - How to split a frame across the outputs it touches.
- SetError
- Why a set operation was refused.
Functions§
- partition_
for_ policy - Group the engaged slots into one commit each.