mutter/src/compositor
Florian Müllner d5a7bbd094 Fix builds with G_DISABLE_ASSERT
Commit 25f416c13d added additional compilation warnings, including
-Werror=return-type. There are several places where this results
in build failures if `g_assert_not_reached()` is disabled at compile
time and the compiler misses a return value.

https://gitlab.gnome.org/GNOME/mutter/issues/447
2019-01-25 09:43:06 +01:00
..
plugins Drop Autotools 2019-01-10 11:50:54 -02:00
clutter-utils.c compositor: Make meta_actor_painting_untransformed take a framebuffer 2019-01-03 10:26:13 +00:00
clutter-utils.h compositor: Make meta_actor_painting_untransformed take a framebuffer 2019-01-03 10:26:13 +00:00
cogl-utils.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
cogl-utils.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
compositor-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
compositor.c compositor: Fix maybe-uninitialized warning 2019-01-07 16:13:32 +00:00
meta-background-actor-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-background-actor.c compositor: Make meta_actor_painting_untransformed take a framebuffer 2019-01-03 10:26:13 +00:00
meta-background-group.c Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-background-image.c Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-background-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-background.c Fix builds with G_DISABLE_ASSERT 2019-01-25 09:43:06 +01:00
meta-cullable.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-cullable.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-dnd-actor-private.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-dnd-actor.c Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-dnd.c Fix XDND handling to work without GDK and MetaX11Display 2018-07-06 19:47:16 +02:00
meta-feedback-actor-private.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-feedback-actor.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-module.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-module.h Changed obsolete FSF postal address into generic URL. 2014-01-13 11:35:47 -05:00
meta-plugin-manager.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-plugin-manager.h meta: Hide libmutter symbols by default and selectively export them 2019-01-23 14:18:13 +01:00
meta-plugin.c meta/plugin: Use G_DECLARE_DERIVABLE_TYPE 2018-11-23 14:28:37 +00:00
meta-shadow-factory.c Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-shaped-texture-private.h shaped-texture: Add support for texture transform 2018-12-03 18:57:59 +01:00
meta-shaped-texture.c shaped-texture: Indentation fix in update_area() 2019-01-05 14:18:31 +01:00
meta-surface-actor-wayland.c Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-surface-actor-wayland.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-surface-actor-x11.c Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-surface-actor-x11.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-surface-actor.c Fix builds with G_DISABLE_ASSERT 2019-01-25 09:43:06 +01:00
meta-surface-actor.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-sync-ring.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-sync-ring.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-texture-rectangle.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-texture-rectangle.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-texture-tower.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-texture-tower.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-window-actor-private.h window-actor: Remove post_init() vfunc 2019-01-04 11:58:02 -02:00
meta-window-actor-wayland.c window-actor: Remove post_init() vfunc 2019-01-04 11:58:02 -02:00
meta-window-actor-wayland.h Add MetaWindowActorX11 and MetaWindowActorWayland 2019-01-04 09:32:51 -02:00
meta-window-actor-x11.c window-actor: Remove post_init() vfunc 2019-01-04 11:58:02 -02:00
meta-window-actor-x11.h Add MetaWindowActorX11 and MetaWindowActorWayland 2019-01-04 09:32:51 -02:00
meta-window-actor.c window-actor: Use actual image size for capture 2019-01-22 10:30:04 +01:00
meta-window-group-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-window-group.c compositor: Make meta_actor_painting_untransformed take a framebuffer 2019-01-03 10:26:13 +00:00
meta-window-shape.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
README Document window and surface actors 2019-01-04 09:32:58 -02:00
region-utils.c boxes: Add API to transform a MetaRectangle 2019-01-05 14:18:25 +01:00
region-utils.h boxes: Add helper to scale rectangles by a double 2019-01-03 10:26:13 +00:00

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.