1
0
Fork 0
mutter-performance-source/src/compositor
Dor Askayo 627ab24721 surface-actor: Add meta_surface_actor_schedule_update()
This function allows scheduling a stage update in the context of a
surface actor and emit the "update-scheduled" signal. This signal is
similar to "repaint-scheduled", but can be used to be notified of
updates that do not necessarily result in a repaint.

With variable refresh rate, any update potentially affecting the
frame pacing of a surface actor needs to be handled differently
depending on whether that surface actor drives the refresh rate or
not.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1154>
2024-03-02 12:08:21 +00:00
..
plugins clutter: Drop static colors 2024-02-16 10:24:24 +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 cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
cogl-utils.c cogl: Port Texture* away from CoglObject 2023-10-29 21:16:24 +00:00
cogl-utils.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
compositor-private.h compositor: Forward window drag position hint across internals 2024-02-27 00:19:20 +01:00
compositor.c compositor: Forward window drag position hint across internals 2024-02-27 00:19:20 +01:00
edge-resistance.c mutter: Completely replace MetaRectangle with MtkRectangle 2023-08-30 16:46:14 +02:00
edge-resistance.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-background-actor.c compositor: Drop unused private functions 2024-01-09 13:14:35 +00:00
meta-background-content-private.h Port to MtkRegion 2023-11-03 11:27:52 +00:00
meta-background-content.c cogl: Drop Pipeline.set_color_* 2024-02-16 12:13:23 +01:00
meta-background-group.c Port to MtkRegion 2023-11-03 11:27:52 +00:00
meta-background-image.c cogl: Port Texture* away from CoglObject 2023-10-29 21:16:24 +00:00
meta-background-private.h mutter: Replace cairo_rectangle_int_t with MtkRectangle 2023-08-30 16:46:13 +02:00
meta-background.c cogl: Drop Pipeline.set_color_* 2024-02-16 12:13:23 +01:00
meta-compositor-native.c Update license access method 2023-08-30 08:48:23 +02:00
meta-compositor-native.h Update license access method 2023-08-30 08:48:23 +02:00
meta-compositor-server.c compositor: Drop grab_begin/end vfuncs 2024-02-13 12:36:26 +01:00
meta-compositor-server.h Update license access method 2023-08-30 08:48:23 +02:00
meta-compositor-view-native.c compositor-view/native: Remove leftover check 2024-02-10 17:41:12 +00:00
meta-compositor-view-native.h Update license access method 2023-08-30 08:48:23 +02:00
meta-compositor-view.c mutter: Completely replace MetaRectangle with MtkRectangle 2023-08-30 16:46:14 +02:00
meta-compositor-view.h Update license access method 2023-08-30 08:48:23 +02:00
meta-compositor-x11.c compositor/x11: Sync again at the end of before_paint 2024-02-20 18:22:00 +08:00
meta-compositor-x11.h Update license access method 2023-08-30 08:48:23 +02:00
meta-cullable.c region: Move RegionBuilder to Mtk 2024-01-09 18:47:34 +00:00
meta-cullable.h Port to MtkRegion 2023-11-03 11:27:52 +00:00
meta-dnd-actor-private.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-dnd-actor.c clutter: Remove deprecated macros usage 2023-08-07 19:30:34 +00:00
meta-dnd-private.h compositor: Drop unused private functions 2024-01-09 13:14:35 +00:00
meta-dnd.c cleanup: Guard x11 headers includes 2024-02-21 16:01:00 +01:00
meta-feedback-actor-private.h compositor: Drop unused private functions 2024-01-09 13:14:35 +00:00
meta-feedback-actor.c compositor: Drop unused private functions 2024-01-09 13:14:35 +00:00
meta-later-private.h compositor: Drop unused private functions 2024-01-09 13:14:35 +00:00
meta-later.c meta/later: Remove extra word from trace span description 2023-12-06 16:12:58 +00:00
meta-module.c compositor: Use subclassing macros for Module 2024-01-13 17:22:26 +00:00
meta-module.h compositor: Use subclassing macros for Module 2024-01-13 17:22:26 +00:00
meta-multi-texture-format-private.h cleanup: Make cogl includes consistent 2024-01-05 14:22:22 +01:00
meta-multi-texture-format.c docs: Remove remaining SECTIONs 2024-01-09 15:23:04 +00:00
meta-multi-texture.c docs: Remove remaining SECTIONs 2024-01-09 15:23:04 +00:00
meta-plugin-manager.c plugin-manager: Drop MetaPluginClass.xevent_filter 2024-02-20 15:21:21 +00:00
meta-plugin-manager.h plugin-manager: Drop MetaPluginClass.xevent_filter 2024-02-20 15:21:21 +00:00
meta-plugin.c plugin-manager: Drop MetaPluginClass.xevent_filter 2024-02-20 15:21:21 +00:00
meta-shadow-factory.c cogl: Drop Pipeline.set_color_* 2024-02-16 12:13:23 +01:00
meta-shaped-texture-private.h compositor: Drop unused private functions 2024-01-09 13:14:35 +00:00
meta-shaped-texture.c cogl: Remove Color.init_from_4ub 2024-02-22 12:34:58 +00:00
meta-surface-actor-wayland.c region: Move RegionBuilder to Mtk 2024-01-09 18:47:34 +00:00
meta-surface-actor-wayland.h Update license access method 2023-08-30 08:48:23 +02:00
meta-surface-actor-x11.c x11: Drop error trap helpers 2024-01-10 13:58:18 +00:00
meta-surface-actor-x11.h Update license access method 2023-08-30 08:48:23 +02:00
meta-surface-actor.c surface-actor: Add meta_surface_actor_schedule_update() 2024-03-02 12:08:21 +00:00
meta-surface-actor.h surface-actor: Add meta_surface_actor_schedule_update() 2024-03-02 12:08:21 +00:00
meta-sync-ring.c cogl: Remove legacy OpenGL driver support 2023-02-21 18:09:28 +00:00
meta-sync-ring.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-texture-mipmap.c texture-mipmap: Handle textures with width or height of 1 2023-12-19 22:24:57 +01:00
meta-texture-mipmap.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-window-actor-private.h compositor: Drop unused private functions 2024-01-09 13:14:35 +00:00
meta-window-actor-wayland.c clutter: Drop static colors 2024-02-16 10:24:24 +00:00
meta-window-actor-wayland.h Update license access method 2023-08-30 08:48:23 +02:00
meta-window-actor-x11.c window: Move shape_region to WindowX11 2024-02-15 13:40:07 +00:00
meta-window-actor-x11.h Update license access method 2023-08-30 08:48:23 +02:00
meta-window-actor.c cogl: Remove Color.init_from_4ub 2024-02-22 12:34:58 +00:00
meta-window-drag.c compositor: Add MetaWindowDrag API to add a hint on the grab coordinates 2024-02-27 00:18:23 +01:00
meta-window-drag.h compositor: Add MetaWindowDrag API to add a hint on the grab coordinates 2024-02-27 00:18:23 +01:00
meta-window-group-private.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-window-group.c region: Move RegionBuilder to Mtk 2024-01-09 18:47:34 +00:00
meta-window-shape.c region: Move RegionIterator to Mtk 2024-01-09 18:47:34 +00:00
README Document window and surface actors 2019-01-04 09:32:58 -02: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.