1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
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.
|