summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2011-10-20 15:23:28 -0400
committerJasper St. Pierre <jstpierre@mecheye.net>2011-10-21 09:20:46 -0400
commit359991712355ce68a86724a9de302870f04688b1 (patch)
tree9060c746490833949d334e9432a711be14e87448
parentd624e85bc180676c5cfd2d7c4c85ec458e333951 (diff)
downloadmutter-359991712355ce68a86724a9de302870f04688b1.tar.gz
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
-rw-r--r--src/compositor/meta-window-group.c28
1 files 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))
{