1
0
Fork 0
mutter-performance-source/src/compositor
Jonas Ådahl 5149e1e43a wayland: Move tree updating to the shell surface role
The shell surface role is the one where subsurfaces may exist, and it
has direct relation to the MetaWindowActorWayland which currently has
the subsurface stacking logic.

Instead of directly finding the window actor when dealing with
subsurfaces, notify the parent surface that the subsurface state
changed, so that it can outsource the application of this information to
the role. For subsurface roles, this simply means forward upward to the
parent; for shell surface roles, this means regenerate the surface actor
layering.

This allows us to move away from accessing the window directly from the
surface, which in turn allows us to change the ownership structure of
windows.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/835
2020-02-19 22:34:28 +00:00
..
plugins plugins/default: Handle skipped animations 2019-11-08 22:49:31 +01:00
clutter-utils.c cullable: Factor out untransformed check into a vfunc 2020-02-08 19:20:41 +01:00
clutter-utils.h cullable: Factor out untransformed check into a vfunc 2020-02-08 19:20:41 +01:00
cogl-utils.c cogl: Remove CoglError wrapper 2019-06-20 18:25:04 +02:00
cogl-utils.h Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
compositor-private.h compositor: Move out X11 compositing code into sub type 2019-08-19 08:44:58 +00:00
compositor.c window-actor: Don't show actor until meta_window_actor_show() 2020-02-18 23:04:49 +01:00
meta-background-actor-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-background-actor.c clutter, core: Stop using the Cogl framebuffer stack 2019-12-03 19:02:14 +00:00
meta-background-group.c meta: Make MetaBackgroundGroup derivable 2019-06-24 13:49:31 +00:00
meta-background-image.c cogl: Remove CoglError wrapper 2019-06-20 18:25:04 +02:00
meta-background-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-background.c background: Scale monitor_area after texture creation 2020-02-04 19:48:01 +00:00
meta-compositor-server.c compositor: Let MetaDisplay choose the correct compositor type 2019-08-19 08:44:58 +00:00
meta-compositor-server.h compositor: Let MetaDisplay choose the correct compositor type 2019-08-19 08:44:58 +00:00
meta-compositor-x11.c window-actor: Move shapes, shadows and unredirection to X11 sub types 2019-10-16 13:16:55 +02:00
meta-compositor-x11.h compositor: Let MetaDisplay choose the correct compositor type 2019-08-19 08:44:58 +00:00
meta-cullable.c cullable: Check if effects are disabled 2020-02-14 01:17:42 +01:00
meta-cullable.h cullable: Factor out untransformed check into a vfunc 2020-02-08 19:20:41 +01: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 Replace ClutterPoint by graphene_point_t 2019-10-16 11:38:14 +00:00
meta-dnd.c cleanup: Use g_clear_signal_handler() where possible 2019-11-21 15:02:27 +00:00
meta-feedback-actor-private.h wayland/feedback-actor: Use float for position and anchor 2019-08-26 11:57:49 +00:00
meta-feedback-actor.c Replace ClutterPoint by graphene_point_t 2019-10-16 11:38:14 +00:00
meta-module.c cleanup: Don't use G_TYPE_INSTANCE_GET_PRIVATE() 2019-07-18 11:01:09 +02:00
meta-module.h Changed obsolete FSF postal address into generic URL. 2014-01-13 11:35:47 -05:00
meta-plugin-manager.c plugin-manager: Kill window effects on destroy 2019-11-08 22:18:09 +00:00
meta-plugin-manager.h compositor: Add "locate_pointer" vmethod 2019-06-05 09:34:39 +00:00
meta-plugin.c compositor: Make type derivable 2019-08-19 08:44:58 +00:00
meta-shadow-factory.c shadow-factory: Don't set implicit Cogl material 2019-12-03 19:02:14 +00:00
meta-shaped-texture-private.h shaped-texture: Add get_width()/get_height() API 2020-02-11 12:59:57 +00:00
meta-shaped-texture.c shaped-texture: Add get_width()/get_height() API 2020-02-11 12:59:57 +00:00
meta-surface-actor-wayland.c surface-actor: Remove get_window() API and vfunc 2020-02-19 22:34:28 +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 surface-actor: Remove get_window() API and vfunc 2020-02-19 22:34:28 +00:00
meta-surface-actor-x11.h window-actor: Move shapes, shadows and unredirection to X11 sub types 2019-10-16 13:16:55 +02:00
meta-surface-actor.c surface-actor: Remove get_window() API and vfunc 2020-02-19 22:34:28 +00:00
meta-surface-actor.h surface-actor: Remove get_window() API and vfunc 2020-02-19 22:34:28 +00:00
meta-sync-ring.c Use G_GNUC_FALLTHROUGH instead of comments 2020-01-09 17:58:29 +01:00
meta-sync-ring.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-texture-tower.c clutter, core: Stop using the Cogl framebuffer stack 2019-12-03 19:02:14 +00:00
meta-texture-tower.h clutter, core: Stop using the Cogl framebuffer stack 2019-12-03 19:02:14 +00:00
meta-window-actor-private.h window-actor: Add set_frozen vfunc 2020-01-16 09:22:25 +01:00
meta-window-actor-wayland.c wayland: Move tree updating to the shell surface role 2020-02-19 22:34:28 +00:00
meta-window-actor-wayland.h wayland: Move tree updating to the shell surface role 2020-02-19 22:34:28 +00:00
meta-window-actor-x11.c window-actor/x11: Update opaque region 2020-02-17 23:37:18 +00:00
meta-window-actor-x11.h window-actor: Move shapes, shadows and unredirection to X11 sub types 2019-10-16 13:16:55 +02:00
meta-window-actor.c screen-cast-window: Use buffer bounds in place of frame bounds 2020-02-11 12:59:57 +00:00
meta-window-group-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-window-group.c cullable: Factor out untransformed check into a vfunc 2020-02-08 19:20:41 +01: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 Replace ClutterRect by graphene_rect_t 2019-10-16 11:38:14 +00:00
region-utils.h Replace ClutterRect by graphene_rect_t 2019-10-16 11:38:14 +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.