meta-window-group: Use clutter_actor_has_effects if available
This avoids a potentially costly allocation on every pixmap update. https://bugzilla.gnome.org/show_bug.cgi?id=662225
This commit is contained in:
parent
d624e85bc1
commit
3599917123
1 changed files with 22 additions and 6 deletions
|
@ -101,6 +101,25 @@ actor_is_untransformed (ClutterActor *actor,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
#if CLUTTER_CHECK_VERSION(1, 9, 0)
|
||||
#define has_effects clutter_actor_has_effects
|
||||
#else
|
||||
|
||||
static gboolean
|
||||
has_effects(ClutterActor *actor)
|
||||
{
|
||||
GList *list;
|
||||
gboolean ret;
|
||||
|
||||
list = clutter_actor_get_effects (actor);
|
||||
ret = list != NULL;
|
||||
g_list_free (list);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static void
|
||||
meta_window_group_paint (ClutterActor *actor)
|
||||
{
|
||||
|
@ -108,7 +127,7 @@ meta_window_group_paint (ClutterActor *actor)
|
|||
cairo_region_t *unredirected_window_region = NULL;
|
||||
ClutterActor *stage;
|
||||
cairo_rectangle_int_t visible_rect, unredirected_rect;
|
||||
GList *children, *l, *effects;
|
||||
GList *children, *l;
|
||||
|
||||
MetaWindowGroup *window_group = META_WINDOW_GROUP (actor);
|
||||
MetaCompScreen *info = meta_screen_get_compositor_data (window_group->screen);
|
||||
|
@ -161,11 +180,8 @@ meta_window_group_paint (ClutterActor *actor)
|
|||
* as well for the same reason, but omitted for simplicity in the
|
||||
* hopes that no-one will do that.
|
||||
*/
|
||||
if ((effects = clutter_actor_get_effects (l->data)) != NULL)
|
||||
{
|
||||
g_list_free (effects);
|
||||
continue;
|
||||
}
|
||||
if (has_effects (l->data))
|
||||
continue;
|
||||
|
||||
if (META_IS_WINDOW_ACTOR (l->data))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue