mirror of
https://github.com/brl/mutter.git
synced 2024-11-28 02:50:41 -05:00
effb824412
Using opaque painting paths can have a big impact on painting performance. In order to easily validate whether we use the opaque paths, add a opaque (green) or blended (purple) overlay over painted areas if the `META_DEBUG_PAINT_OPAQUE_REGION` `MetaDebugPaintFlag` is set. You can do so in `lg` via: `Meta.add_debug_paint_flag(Meta.DebugPaintFlag.OPAQUE_REGION)` This can be helpful for application developers, as previously it was not trivial to check whether e.g. Wayland or X11 opaque regions where properly set. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1372 |
||
---|---|---|
.. | ||
plugins | ||
clutter-utils.c | ||
clutter-utils.h | ||
cogl-utils.c | ||
cogl-utils.h | ||
compositor-private.h | ||
compositor.c | ||
meta-background-actor-private.h | ||
meta-background-actor.c | ||
meta-background-content-private.h | ||
meta-background-content.c | ||
meta-background-group.c | ||
meta-background-image.c | ||
meta-background-private.h | ||
meta-background.c | ||
meta-compositor-native.c | ||
meta-compositor-native.h | ||
meta-compositor-server.c | ||
meta-compositor-server.h | ||
meta-compositor-x11.c | ||
meta-compositor-x11.h | ||
meta-cullable.c | ||
meta-cullable.h | ||
meta-dnd-actor-private.h | ||
meta-dnd-actor.c | ||
meta-dnd.c | ||
meta-feedback-actor-private.h | ||
meta-feedback-actor.c | ||
meta-later-private.h | ||
meta-later.c | ||
meta-module.c | ||
meta-module.h | ||
meta-plugin-manager.c | ||
meta-plugin-manager.h | ||
meta-plugin.c | ||
meta-shadow-factory.c | ||
meta-shaped-texture-private.h | ||
meta-shaped-texture.c | ||
meta-surface-actor-wayland.c | ||
meta-surface-actor-wayland.h | ||
meta-surface-actor-x11.c | ||
meta-surface-actor-x11.h | ||
meta-surface-actor.c | ||
meta-surface-actor.h | ||
meta-sync-ring.c | ||
meta-sync-ring.h | ||
meta-texture-tower.c | ||
meta-texture-tower.h | ||
meta-window-actor-private.h | ||
meta-window-actor-wayland.c | ||
meta-window-actor-wayland.h | ||
meta-window-actor-x11.c | ||
meta-window-actor-x11.h | ||
meta-window-actor.c | ||
meta-window-group-private.h | ||
meta-window-group.c | ||
meta-window-shape.c | ||
README | ||
region-utils.c | ||
region-utils.h |
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.