1
0
Fork 0
mutter-performance-pkgbuild/mr2694.patch
Mingi Sung d334c13dbb
Add mr2694
Signed-off-by: Mingi Sung <FiestaLake@protonmail.com>
2022-11-24 23:57:43 +09:00

47 lines
1.9 KiB
Diff

Author: Jonas Dreßler <verdre@v0yd.nl>
Source: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2694
Editor: Mingi Sung <FiestaLake@protonmail.com>
Commit: c627b9c3c7fc7ce59a2696dd3012a08b18e6b1cb
Last Updated: 11/24/22 (Mutter 43.1+r1+gaccf532a2-2)
---
When a badly behaving ClutterActor implementation manages to invalidate
the allocation after the layout phase and before painting, we have no
idea where the actor should be painted without running the whole layout
machinery again.
For paint volumes in this case we pretend the actor covers the whole
stage and queue full-stage redraws. When updating stage-views, we're
also handling this case, but not in the most graceful way. Just like
with paint volumes, we should assume an actor without a valid allocation
is simply everywhere, so set priv->stage_views to all available stage
views in that case.
---
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index 1dde8d94863b3ef3f309e2bc6ab8064aec2d4f7f..10a5e3203b393ec6bc6bed41b5f9ae58a2c16ac1 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -15463,18 +15463,19 @@ update_stage_views (ClutterActor *self)
ClutterStage *stage;
graphene_rect_t bounding_rect;
+ stage = CLUTTER_STAGE (_clutter_actor_get_stage_internal (self));
+ g_return_if_fail (stage);
+
old_stage_views = g_steal_pointer (&priv->stage_views);
if (priv->needs_allocation)
{
g_warning ("Can't update stage views actor %s is on because it needs an "
"allocation.", _clutter_actor_get_debug_name (self));
+ priv->stage_views = g_list_copy (clutter_stage_peek_stage_views (stage));
goto out;
}
- stage = CLUTTER_STAGE (_clutter_actor_get_stage_internal (self));
- g_return_if_fail (stage);
-
clutter_actor_get_transformed_extents (self, &bounding_rect);
if (bounding_rect.size.width == 0.0 ||