1
0
Fork 0
mutter-performance-source/src/compositor
msizanoen1 8b3c1f4b87 cullable: Generalize actor coordinates space translation for regions
This allows MetaCullable to work with actors using arbitrary transforms
which will be needed for implementing surface pixel alignment for
fractional-scale-v1.

This also deletes meta_cullable_is_untransformed as it's no longer
necessary, and we can also stop manually scaling the region objects
while performing opaque region culling in surfaces since it's now
handled transparently by the new `meta_cullable_cull_out_children`
implementation.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2726>
2023-05-22 14:44:33 +00: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/x11: Drop duplicated methods calls 2023-05-15 20:41:54 +02:00
meta-compositor-x11.h compositor: Get the stage via the backend 2020-06-05 21:39:27 +00:00
meta-cullable.c cullable: Generalize actor coordinates space translation for regions 2023-05-22 14:44:33 +00:00
meta-cullable.h cullable: Generalize actor coordinates space translation for regions 2023-05-22 14:44:33 +00: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 compositor/dnd: Guard X11 types 2023-05-15 20:36:23 +02: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: Implement stable size and position rounding 2023-05-22 14:44:33 +00: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 cullable: Generalize actor coordinates space translation for regions 2023-05-22 14:44:33 +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 cullable: Generalize actor coordinates space translation for regions 2023-05-22 14:44:33 +00: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 cullable: Generalize actor coordinates space translation for regions 2023-05-22 14:44:33 +00: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 cullable: Generalize actor coordinates space translation for regions 2023-05-22 14:44:33 +00:00
region-utils.h cullable: Generalize actor coordinates space translation for regions 2023-05-22 14:44:33 +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.