[mutter] meta-window-group: Use clutter_actor_has_effects if available



commit 359991712355ce68a86724a9de302870f04688b1
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Thu Oct 20 15:23:28 2011 -0400

    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 files changed, 22 insertions(+), 6 deletions(-)
---
diff --git a/src/compositor/meta-window-group.c b/src/compositor/meta-window-group.c
index 8889503..a24c378 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))
         {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]