mutter/src/compositor
Georges Basile Stavracas Neto 54febd1419
window-actor: Move window actor creation to MetaCompositor
MetaWindowActor breaks layering isolation by accessing
and injecting itself into compositor->windows. This is
a bad practice, and effecticely makes returning the
new actor useless, since we doesn't even use the return
value.

Move window actor creation to under MetaCompositor and
stop violating (too badly) the resposabilities of each
component. This moves meta_window_actor_new() into
meta_compositor_add_window().

Also, move the remaining initialization code to the
GObject.constructed vfunc.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/368
2019-01-04 11:58:02 -02:00
..
plugins plugins/Makefile.am: Install libdefault.so in plugin directory 2018-11-07 12:54:41 +00: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 window-actor: Move window actor creation to MetaCompositor 2019-01-04 11:58:02 -02: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 Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00: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 Clean up include macros mess 2018-11-06 17:17:36 +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: Draw external textures via offscreen 2019-01-03 10:26:13 +00: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 Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00: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: Move window actor creation to MetaCompositor 2019-01-04 11:58:02 -02:00
meta-window-actor-wayland.c window-actor: Move X11-specific code to MetaWindowActorX11 2019-01-04 09:32:58 -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: Move X11-specific code to MetaWindowActorX11 2019-01-04 09:32:58 -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: Move window actor creation to MetaCompositor 2019-01-04 11:58:02 -02: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 helper to scale rectangles by a double 2019-01-03 10:26:13 +00: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.