diff options
author | Jasper St. Pierre <jstpierre@mecheye.net> | 2011-10-20 15:23:28 -0400 |
---|---|---|
committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2011-10-21 09:20:46 -0400 |
commit | 359991712355ce68a86724a9de302870f04688b1 (patch) | |
tree | 9060c746490833949d334e9432a711be14e87448 | |
parent | d624e85bc180676c5cfd2d7c4c85ec458e333951 (diff) | |
download | mutter-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.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 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)) { |