From 359991712355ce68a86724a9de302870f04688b1 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Thu, 20 Oct 2011 15:23:28 -0400 Subject: [PATCH] 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 --- src/compositor/meta-window-group.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/compositor/meta-window-group.c b/src/compositor/meta-window-group.c index 888950392..a24c37800 100644 --- a/src/compositor/meta-window-group.c +++ b/src/compositor/meta-window-group.c @@ -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)) {