mutter/src/compositor/README
Georges Basile Stavracas Neto 7952808469
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
2019-01-04 09:32:58 -02:00

70 lines
2.5 KiB
Plaintext

Intro
=====
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
========
MUTTER_DISABLE_MIPMAPS - set to disable use of mipmaped windows.