Document window and surface actors

Document the roles of MetaSurfaceActor and MetaWindowActor,
and when their subclasses are used.

(And this is actually the first real documentation under
src/compositor/README!)

https://gitlab.gnome.org/GNOME/mutter/merge_requests/368
This commit is contained in:
Georges Basile Stavracas Neto 2018-12-22 12:17:32 -02:00
parent 0442fc8ddc
commit 7952808469
No known key found for this signature in database
GPG Key ID: 886C17EE170D1385

View File

@ -1,7 +1,67 @@
Intro
=====
Fix me.
In general, the compositor splits the window from the contents of
the window from the shape of the window. In other words, a window
has contents, and the contents of the window have a shape. This is
represented by the actor hierarchy:
+--------------------------------------+
| MetaWindowActor |
| +----------------------------------+ |
| | MetaSurfaceActor | |
| | +------------------------------+ | |
| | | MetaShapedTexture | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | +------------------------------+ | |
| +----------------------------------+ |
+--------------------------------------+
Surfaces may also contain subsurfaces. The MetaWindowActor and
MetaSurfaceActor subclasses that will be created depend on the client
type, and the display server type.
## Subsurfaces
Additionally, there is also the case of subsurfaces: surfaces that
are child of other surfaces. That is also represented in the actor
hierarchy by having one or many MetaSurfaceActors (the subsurfaces)
added as children of a parent MetaSurfaceActor. There are no limits
to how many subsurfaces a surface may have. With subsurfaces, the
actor hierarchy looks like this:
MetaWindowActor
↳ MetaSurfaceActor (surface)
↳ MetaShapedTexture
↳ MetaSurfaceActor (subsurface)
↳ MetaShapedTexture
↳ MetaSurfaceActor (sub-subsurface)
↳ MetaShapedTexture
↳ MetaSurfaceActor (subsurface)
↳ MetaShapedTexture
In this example, the main surface has 2 subsurfaces. One of these
subsurfaces contains a subsurface as well.
All MetaWindowActors contain at least one MetaSurfaceActor, and all
MetaSurfaceActors contain a MetaShapedTexture.
## Client and compositor
MetaWindowActor and its subclasses represent the client window's
type. A X11 client will have a MetaWindowActorX11 representing it,
and a Wayland client will have a MetaWindowActorWayland.
On the compositor side, the surface where the contents of the window
are drawn into are represented by MetaSurfaceActor subclasses. On a
Wayland session, windows are backed by a MetaSurfaceActorWayland
surface, whereas on X11 sessions, by MetaSurfaceActorX11.
XWayland windows are X11 client windows (MetaWindowActorX11) backed
by Wayland surfaces (MetaWindowActorWayland).
Env Vars