mutter/src/compositor
Bilal Elmoussaoui aaa3f34cc0 compositor: Guard X11 types
This also moves meta_compositor_x11_redirect_windows to DisplayX11
where it makes more sense as meta_display_x11_redirection_windows

Related: https://gitlab.gnome.org/GNOME/mutter/-/issues/2272
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2445>
2023-05-15 20:23:37 +02:00
..
plugins build: Use / operator instead of join_paths everywhere 2023-05-04 12:35:38 +00:00
clutter-utils.c clutter/utils: Remove magic numbers from fixed point calculations 2022-09-02 07:33:26 +00:00
clutter-utils.h compositor: Return more details from meta_actor_painting_untransformed 2022-07-26 19:16:50 +00: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: Guard X11 types 2023-05-15 20:23:37 +02:00
compositor.c compositor: Guard X11 types 2023-05-15 20:23:37 +02:00
edge-resistance.c compositor: Move edge resistance data to MetaWindowDrag 2023-01-30 10:56:29 +00:00
edge-resistance.h compositor: Make cleaning cached edges go through MetaWindowDrag 2023-01-30 10:56:29 +00:00
meta-background-actor-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-background-actor.c background-actor: Use MetaBackgroundContent 2020-06-09 17:07:02 -03:00
meta-background-content-private.h Introduce MetaBackgroundContent 2020-06-09 17:07:02 -03:00
meta-background-content.c backend: Get 'is-stage-views-scaled' from backend 2022-12-17 13:52:51 +00:00
meta-background-group.c meta: Make MetaBackgroundGroup derivable 2019-06-24 13:49:31 +00:00
meta-background-image.c background-image: Properly clear the failed to be filled texture pointer 2021-08-31 08:25:32 +00:00
meta-background-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-background.c compositor: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-compositor-native.c compositor/native: Add support for direct scanout per view 2022-08-01 21:05:04 +00:00
meta-compositor-native.h compositor: Get the stage via the backend 2020-06-05 21:39:27 +00:00
meta-compositor-server.c compositor: Introduce MetaCompositorViewNative 2022-08-01 21:05:04 +00:00
meta-compositor-server.h compositor: Get the stage via the backend 2020-06-05 21:39:27 +00:00
meta-compositor-view-native.c compositor-view/native: Add 'render' debug prints 2022-12-09 20:14:26 +00:00
meta-compositor-view-native.h compositor/native: Add support for direct scanout per view 2022-08-01 21:05:04 +00:00
meta-compositor-view.c compositor-view: Chain up finalize() 2023-05-09 10:31:38 +00:00
meta-compositor-view.h compositor: Introduce MetaCompositorViewNative 2022-08-01 21:05:04 +00:00
meta-compositor-x11.c compositor: Guard X11 types 2023-05-15 20:23:37 +02:00
meta-compositor-x11.h compositor: Get the stage via the backend 2020-06-05 21:39:27 +00:00
meta-cullable.c compositor: Return more details from meta_actor_painting_untransformed 2022-07-26 19:16:50 +00: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 compositor: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-dnd-actor.c compositor: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-dnd-private.h compositor: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-dnd.c dnd: Clear Wayland drag source when cancelled from stage grab context 2023-04-15 10:11:07 +00:00
meta-feedback-actor-private.h compositor: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-feedback-actor.c compositor: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-later-private.h laters: Expose MetaLaters publicly 2022-02-07 17:52:05 +00:00
meta-later.c clutter: Pass 'ClutterFrame' in all stage update signals 2023-01-23 15:57:50 +01:00
meta-module.c plugin: Drop version information 2020-10-06 15:14:34 +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 compositor: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-plugin-manager.h compositor/plugin-manager: Split start() from new() 2022-01-25 15:15:13 +01:00
meta-plugin.c compositor: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-shadow-factory.c src: Stop using GSlice 2021-02-22 13:52:27 +01:00
meta-shaped-texture-private.h shaped-texture: Fix code style issue 2022-01-03 14:11:54 +01:00
meta-shaped-texture.c shaped-texture: Move variable declaration to the top 2023-05-07 23:18:33 +02:00
meta-surface-actor-wayland.c surface-actor/wayland: Ensure screen-casted surfaces have a primary view 2023-02-28 12:03:50 +01:00
meta-surface-actor-wayland.h surface-actor-wayland: Clean up and optimize check for primary view 2022-12-16 16:27:33 +00:00
meta-surface-actor-x11.c compositor: Wrap x11 surface actor destruction in error trap 2023-01-19 13:57:35 +00:00
meta-surface-actor-x11.h surface-actor: Remove 'pre-paint' vfunc 2020-07-02 19:36:51 +02:00
meta-surface-actor.c surface-actor: Queue rectangles of update region separately 2023-05-03 08:53:36 +00:00
meta-surface-actor.h surface-actor: Remove get_image() function 2021-08-28 13:59:52 +02:00
meta-sync-ring.c cogl: Remove legacy OpenGL driver support 2023-02-21 18:09:28 +00:00
meta-sync-ring.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-texture-mipmap.c texture-mipmap: Fix some leaks and tidy up 2022-08-10 11:52:39 +00:00
meta-texture-mipmap.h shaped-texture: Move texture mipmap implementation to 'meta-texture-mipmap' 2022-07-26 19:16:50 +00:00
meta-window-actor-private.h screen-cast/window: Add API to check if stream-cast is active 2023-02-28 12:01:17 +01:00
meta-window-actor-wayland.c window-actor/wayland: Return NULL instead FALSE in get_scanout_candidate 2022-12-16 20:42:45 +01:00
meta-window-actor-wayland.h window-actor/wayland: Draw black background for fullscreen windows 2022-10-10 18:16:51 +00:00
meta-window-actor-x11.c window-actor-x11: Check array bounds before accessing array 2023-03-26 11:51:02 +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: Add API to check if stream-cast is active 2023-02-28 12:01:17 +01:00
meta-window-drag.c compositor: Drop anchor_window_pos field from MetaWindowDrag 2023-03-29 16:36:28 +00:00
meta-window-drag.h compositor: Make cleaning cached edges go through MetaWindowDrag 2023-01-30 10:56:29 +00:00
meta-window-group-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-window-group.c cleanup: Make GDK dependency specific to X11 2022-12-22 15:09:03 +01:00
meta-window-shape.c src: Stop using GSlice 2021-02-22 13:52:27 +01:00
README Document window and surface actors 2019-01-04 09:32:58 -02:00
region-utils.c compositor: Add utility function to convert region to cairo_t path 2023-03-03 20:17:01 +00:00
region-utils.h compositor: Add utility function to convert region to cairo_t path 2023-03-03 20:17:01 +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.