cullable: Check if effects are disabled

Currently we skip culling actors if they have any effects set. But
effects can be disabled, in which case we don't need to do that.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1052
This commit is contained in:
Robert Mader 2020-02-13 00:21:42 +01:00
parent ae344a606d
commit aceadfe305

View File

@ -28,6 +28,22 @@
G_DEFINE_INTERFACE (MetaCullable, meta_cullable, CLUTTER_TYPE_ACTOR); G_DEFINE_INTERFACE (MetaCullable, meta_cullable, CLUTTER_TYPE_ACTOR);
static gboolean
has_active_effects (ClutterActor *actor)
{
g_autoptr (GList) effects = NULL;
GList *l;
effects = clutter_actor_get_effects (actor);
for (l = effects; l != NULL; l = l->next)
{
if (clutter_actor_meta_get_enabled (CLUTTER_ACTOR_META (l->data)))
return TRUE;
}
return FALSE;
}
/** /**
* SECTION:meta-cullable * SECTION:meta-cullable
* @title: MetaCullable * @title: MetaCullable
@ -97,7 +113,7 @@ meta_cullable_cull_out_children (MetaCullable *cullable,
* as well for the same reason, but omitted for simplicity in the * as well for the same reason, but omitted for simplicity in the
* hopes that no-one will do that. * hopes that no-one will do that.
*/ */
if (needs_culling && clutter_actor_has_effects (child)) if (needs_culling && has_active_effects (child))
needs_culling = FALSE; needs_culling = FALSE;
if (needs_culling && !meta_cullable_is_untransformed (META_CULLABLE (child))) if (needs_culling && !meta_cullable_is_untransformed (META_CULLABLE (child)))