mirror of
https://github.com/brl/mutter.git
synced 2024-12-02 12:50:53 -05:00
7952808469
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
70 lines
2.5 KiB
Plaintext
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. |